首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈代码如何避免写出糟糕if...else语句

版本 日期 备注 1.0 2019.1.18 文章首发 1.1 2021.5.21 改进标题的标点符号 在写代码的日常中,if...else语句是极为常见的.正因其常见性,很多同学在写代码的时候并不会去思考其在目前代码中的用法是否妥当....而随着项目的日渐发展,糟糕的if...else语句将会充斥在各处,让项目的可维护性急剧下降.故在这篇文章中,笔者想和大家谈谈如何避免写出糟糕if...else语句....目标和关键指标 前面说过,我们的目标是减少糟糕的if...else代码.那么什么是糟糕的if...else代码呢?...Mediator模式 在本文的第一段的代码中,其实是ZStack 2.0.5版本中某处的代码,它用来防止用户使用Cli时传入不当的参数,导致后面的逻辑运行不正常.为了方便理解,我们可以对其规则做一个简化...A和模块B去做一些事,如果不使用观察者模式,那么代码就会都耦合在主存储模块下,拆开if...else也就不太可能了.

11010

如何使用Perfdog进行移动全平台性能测试

其他人点击此链接即可申请参与此任务 3、手机连接perfdog客户端: Windows、Mac下载对应机型的客户端即可 使用数据线将手机和perfdog进行连接 输入要测试的APP,点击开始 移动端app...和perfdog可以同步进行录制,并上传视频和测试报告 点击结束,即可保存测试报告 4、在我的数据中,选中测试数据,点击归档 5、归档后,即可在任务数据中的项目中查看 6、数据查看:点击任务,主要查看指标一般为...FPS、cpu使用率、内存使用情况 三、FAQ(常见问题) APP无法使用perdog正常启动 解决方法: 重新启动perfdog,可以正常使用 2、安卓手机连接后无法识别,如何打开debug...解决方法: Android开启开发者选项前,需要连点版本号开启开发者选项界面 3、创建者名字如何更改? 目前无法更改 4、测试cpu、内存曲线出现断层 解决方法:重新安装APP

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何使用Git进行代码版本管理

目录 建立仓库 分支管理 推送代码 问题 建立仓库 先在远程代码托管平台(如GitHub、GitLab等)上创建一个新的仓库 使用命令行或终端,进入你的本地项目目录 如果项目还没有使用Git进行版本控制...git branch 建立新分支 git branch 切换分支 git checkout 推送到指定分支 git push origin 推送代码...理论上改代码前要pull一次,然后在push前在pull一次 改代码前pull一次是为了获取最新的同步,但是coding也是需要时间的,难保敲代码这段时间没有人动远程仓库的东西,所以在改完代码要...比如修改了无法跳转页面的bug git commit -m "修改了无法跳转页面的bug" ⑤然后再一次pull,如果木有冲突就push,默认推送到master git push 如果还没有将本地的分支与远程仓库的分支进行关联...git push --set-upstream origin master 推送到指定分支 git push origin 如果有冲突,改好代码后回到第③步 常见问题 如果出现以下问题

18110

如何使用Cython对python代码进行加密

Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件。优势:资源丰富,适合快速开发。...pyd文件,在linux环境中加密后的问题后缀是so文件,下面以linux环境作为演示 环境准备 系统环境:centos 7 Python版本:python3.x 需要的第三方包:cython 加密代码部分...from Cython.Build import cythonize setup(ext_modules = cythonize([“Jruing.py”])) # 列表中是要加密的文件名 要加密的代码部分...将以上代码保存为encryption.py,在命令行中输入python encryption.py build_ext,它会在encryption.py这个文件的当前路径下生成build文件夹,build..._) @app.route('/',methods=['GET']) def root(): return "hello world" 用上面提到的方法对flask_demo_test.py文件进行加密

3.6K20

如何用airobots进行移动端测试

airobots的移动端测试,主要是将airtest和appium进行了集成,appium是比较流行的移动端测试框架,airtest是基于图像识别的移动端测试框架,个人体验来看,是比较好用的两个框架吧。...项目目录结构说明,大家可以看往期文章:如何利用airobots做web自动化测试。...,因此,需要修改文件TestCases/IOSCase/__init__.py中的初始化driver的代码,注释掉poco相关,启用appium部分并启动appium服务。...Appium Desktop 如何编写测试用例(代码解析) Android 用例文件:TestCases/AndroidCase/test_android_hello.py from airobots.core.api...具体方法使用语法,可直接查看源码,每个方法都有使用介绍。 以上为airobots集成airtest和appium后,进行移动端测试的大概过程,后续会根据日常使用场景,对每种方法进行单独的讲解,以上。

88630

如何使用Java进行代码质量评估和重构?

使用Java进行代码质量评估和重构,需要采取一系列的步骤和工具来分析代码,并根据分析结果进行必要的修改和改进。...下面将介绍如何使用Java进行代码质量评估和重构,包括代码静态分析工具、代码规范检查、重构技术等。...2、移动方法(Move Method):将一个方法移动到合适的类中,以提高代码的组织结构和内聚性。 3、重命名(Rename):给变量、方法、类等元素重新命名,以提高代码的可读性和理解性。...四、代码质量评估和重构流程 下面是一个使用Java进行代码质量评估和重构的基本流程: 1、静态分析:使用代码静态分析工具对代码进行分析,检测出潜在的问题和缺陷。...7、迭代循环:不断重复以上步骤,逐步改进代码的质量和可维护性。 使用Java进行代码质量评估和重构是提高代码质量和可维护性的重要手段。

12410

如何使用Frelatage对Python代码进行模糊测试

关于Frelatage Frelatage是一款基于覆盖率的Python模糊测试工具,在该工具的帮助下,广大研究人员可以轻松对Python代码进行模糊测试。...其主要目的是整合优化了其他模糊测试工具的优秀特性,以便帮助研究人员以更高效的方式对Python应用程序进行模糊测试和安全研究。...功能介绍 Frelatage支持对下列类型的参数进行模糊测试: 字符串 整型 浮点型 列表 元组 字典 函数(以文件作为输入) 工作机制 Frelatage主要通过遗传算法来生成覆盖率尽可能高的测试用例...wget -q https://raw.githubusercontent.com/Rog3rSm1th/Frelatage/main/scripts/autoinstall.sh -O -) 工具使用...Frelatage支持对文件类型输入参数进行模糊测试,首先我们需要初始化文件值,这一步需要在输入文件夹中创建文件(默认为.

1.7K10

使用Tensorflow进行实时移动视频对象检测

本文旨在展示如何通过以下步骤使用TensorFlow的对象检测API训练实时视频对象检测器并将其快速嵌入到自己的移动应用中: 搭建开发环境 准备图像和元数据 模型配置和训练 将训练后的模型转换为TensorFlow...Lite 在移动应用中测试模型 搭建环境 本文中的所有代码均基于macOS和Linux系统。...SSD移动网络量化模型,该模型针对移动设备性能进行了优化,同时降低了模型推断的复杂性(同时牺牲了一些模型性能)。...转换为TensorFlow Lite 拥有经过训练/部分受训练的模型后,要为移动设备部署模型,首先需要使用TensorFlow Lite将模型转换为针对移动和嵌入式设备进行了优化的轻量级版本。...将移动设备连接到笔记本电脑 在Xcode中构建并运行该应用程序。 建立项目后,该应用程序现在应该可以在移动设备上运行,并测试模型的性能如何

2.1K00

使用 VIM 进行代码审计

即便切换到其他 IDE,也习惯性先装个 VIM Binding 插件,总感觉不用 HJKL 移动就难受。 虽然笔者是 VIM 爱好者,但并不排斥其他的 IDE。...对于一些依赖完整的项目,比如 Java Maven 工程,也会优先使用 IDEA 去进行阅读,充分利用现代 IDE 的语言支持。...尽管年代久远,但实际效果还是不错的,许多商业工具实际上也是在此基础上进行优化。 对于工具集成,主要使用的是 VIM 的 quickfix 功能,即前面图片中下方区域。...然后使用快捷键映射 cnext/cprev 可以快速的在结果中进行跳转。.../plugin 中,额外的插件可以根据个人需求进行安装,比如使用 VimPlug 的可以直接把 Plug 写到自己的 vimrc 中。

10310

如何代码进行调优?

,在解释程序中常见的操作序列以一种紧凑的方式表示 三,循环法则 3.1 将代码移除循环 与其在循环的每次迭代时都执行一次某种计算,不如将其移动循环体外,只计算一次 3.2 合并测试条件 高效的内循环应该包含尽量少的测试条件...程序员应尽量用一些退出条件来模拟循环的其他退出条件 3.3 循环展开 循环展开可以减少修改循环下标的开销,对于避免管道延迟,减少分支以及增加指令级的并行性也都很有帮助 3.4 删除赋值 如果内循环中很多开销来自普通的赋值,通常可以通过重复代码并修改变量的使用来删除这些赋值...具体说来,删除赋值 i=j后,后续的代码必须将 j看作i 3.5 消除无条件分支 快速的循环中不应该包含无条件分支,通过“旋转”循环,在底部加上一个条件分支,能够消除循环结束处的无条件分支 3.6 循环合并...如果两个相邻的循环作用在同一组元素上,那么可以合并其运输部分,仅使用一组循环控制操作 四,逻辑法则 4.1 利用等价的代数表达式 如果逻辑表达式的求值开销太大,就将其替换为开销较小的等价代数表达式 4.2...5.4.3 解决小的子问题时,使用辅助过程通常比把问题的规模变为0或1更有效 5.5 并行性 在底层硬件的条件下,构建的程序应该尽可能多的挖掘并行性 六,表达式法则 6.1 编译时初始化 在程序执行之前

1.1K10

聊聊如何进行代码混淆

故而需要流混淆 2、流混淆 用于if, switch, while,for等关键字,对字节码进行细微的修改,模糊控制流,而不改变代码在运行时的行为。...因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。 常用的混淆工具 1、yGuard yGuard是一款免费的Java混淆器(非开源),它有Java和.NET两个版本。...官网地址:http://www.allatori.com/ 本文主要介绍基于allatori如何进行混淆 allatori入门 因为allatori没有提供maven GAV坐标,因此需要去官网下载jar...不过在用混淆工具也有一些细节点,比如用到的开源包,就不要对开源包进行混淆了,不然可能会导致项目报错,还有一些对外提供的API,最好也不要混淆。...如何制作一个maven插件,可以参考我之前的文章 聊聊如何自定义实现maven插件 其实在springboot项目使用allatori,还遇到一点小坑。这个小坑是啥,留个悬念。下篇文章水一篇。

3.1K40

横向移动--使用CLSID调用COM对象进行横向

在第一篇横向移动中我们使用了MMC20.APPLICATION COM对象来进行横向移动,其实我们可以思考一个问题,微软的COM不只有MMC20.APPLICATION。...您可以使用COM库,而无需将其编译到应用程序中。 那么是不是还存在别的COM模型给我们去利用?我们还可以思考一个问题: 我们只能利用来进行横向移动吗? 显然答案是否定的。...如何快速地找到可以利用的COM程序呢。 从第一篇中我们知道 ? 那么我们可以查找那些具有没有限制的COM程序(LAnunchPermission == None) ?...所以我们得使用一种新的方法去定位我们想要的东西。...通过在远程主机上实例化对象,我们可以与该对象进行接口并调用所需的任何方法。返回给该对象的句柄揭示了几种方法和属性,我们无法与它们进行交互。

4.9K30

独家 | 使用Mob进行代码审查

作者:Svata Simara翻译:欧阳锦校对:zrx 本文约2000字,建议阅读5分钟本文讨论了使用Mob编程省去代码审查的优点和Mob的使用要求。...代码审查最重要的问题是异步的工作循环。这是低效且让人感到沮丧。 另一种方法是尽可能快地进行代码审查。当我应用这种方法时,我整个星期都在进行代码审查。...因为每个人将不得不在几分钟后进行导航,如果走神,您将不知道接下来该如何导航。 实现代码视图的目标 分享知识和想法是即时的——每个团队成员在项目中都共同经历项目的发展过程,并且知道为什么会这样做。...所有团队成员都同意代码结构,因此代码结构是一致的,我相信最好的团队成员可以做到。 学习——是即时的、高强度的。如果导航者很在行,他们不仅会告诉你要做什么,还会告诉你如何有效地做。...我每天都在学习更好的软件架构、更好的测试策略、如何有效地使用 IDE,……这是因为导航者知道(并分享)我所缺少的知识。

52750

使用OpenCV进行直播(附代码

生活中我们不止一次地使用过直播,但从未想过如何通过编程实现。大家好,我们在这里向大家介绍如何使用OpenCV和python的套接字编程。...该库具有多种功能,因此我们可以使用网络摄像头和编程来处理图像和视频。 什么是socket编程? 简单地说,socket编程意味着使用TCP或UDP等互联网协议在端口上的两个或多个服务器之间进行通信。...有时使用它是有风险的,因为假设我们的数据包没有发送给用户,它不会告诉我们,所以我们有数据丢失的风险,而不是它易于使用。...我们也可以使用TCP,但这会使我们的代码有点复杂,因此对于basic,我们使用UDP。 "ip"变量包含计算机的ip地址,"port"编号包含运行进程的端口。...现在,我们将使用函数imdecode对数据变量中接收的数据进行解码,imshow函数将显示一个流窗口。cv2.waitkey(10)将每隔10毫秒单击/收集数据,直到你们按enter键并输入数字13。

90610

如何使用TFsec来对你的Terraform代码进行安全扫描

TFsec TFsec是一个专门针对Terraform代码的安全扫描工具,该工具能够对Terraform模板执行静态扫描分析,并检查出潜在的安全问题,当前版本的TFsec支持Terraform v0.12...功能介绍 检查所有提供的程序中是否包含敏感数据; 检查目标代码是否违反了AWS、Azure和GCP安全最佳实践建议; 扫描功能模块(目前只支持本地模块); 计算表达式和值; 评估Terraform的功能函数...使用Brew或Linuxbrew安装: brew install tfsec 使用Chocolatey安装: choco install tfsec 除此之外,我们还可以直接访问该项目GitHub库的Releases...当然了,我们也可以使用go get来安装该工具: go get -u github.com/tfsec/tfsec/cmd/tfsec 工具使用 TFsec可以扫描指定的目录,如果没有指定需要扫描的目录...,我们可以使用—format参数来进行指定。

1.8K30

如何有效地进行代码 Review?

本文就为什么要做代码 Review 以及如何有效地做代码 Review 分享一下个人的看法。...都 Review 些什么 经常会有 Reviewer 拿到 MR 不知道该 Review 些什么,其实无论你参与对应项目的深入如何,都可以对代码进行 Review,也鼓励不同人从不同的深度、角度去帮助...如果有成熟的库可以使用,尽量不要自己去实现,因为可能会引入不必要的 bug。从我个人的角度,简洁(大白话就是代码少)是可读性一个很重要的指标。 关于注释。...如何进行 Review 过程中鼓励 Reviewer 大胆 Comment,有不理解的地方,或者觉得不合适的地方都直接表达出来,Author 对 MR 的 每个 Comment 也要做出反馈,无论是展开讨论还是简单的给个...商业化增长之路:如何设计好玩的抽奖 ?

47720
领券