这篇文章又是关于代码质量的,有些同学可能觉得我比较啰嗦。不过我就是想用这种方式让大家重视起来。其实说来说去就那么几种方法,但是实际执行起来真是难于登天。
低质量的代码真的是一种灾难。当你的代码变得越来越混乱,维护起来就会花费大量的时间。在最坏的情况下,代码将变得不可维护,并且项目会慢慢终止。
为了避免这种情况,你需要注意你的代码质量。尝试在代码质量上花费一些时间,长久来看,这将对你有很大的好处。
无论你是管理者,测试人员或者是开发者都应该去自觉维护代码质量,因为在整个开发流程中,大家的目标都是交付可用的、高质量的代码。
要想提高代码质量,需要做到以下六件事,其中一些是一个人可以完成的,而有些则必须要团队配合。
四眼原则是易于理解和执行的。它的意思是必须要有至少两个人(包括作者)检查过代码,目前最流行的方法是Pull request。
Pull request是让你告诉别人你已经在GitHub上向分支push了一些代码改动。在开启Pull request之后,你就可以和协作者讨论潜在的问题,并且可以在你的代码被merge之前继续对它进行修改。 ——Github.com
在代码审查期间,有几件事需要考虑。其中之一是检查代码是否违反了约定的代码规则。这一过程可以通过在管道中使用linter来实现自动化,但有时也需要手动执行。
另外一个需要检查的是代码的可维护性和错误处理。这件事还没办法自动化。最后,需要检查的是代码的完整性。这一修改是否完成了需要完成的全部功能?
“开发环境是好的。”这是某些开发人员常说的,还有就是:“在我电脑上没问题”。
如果希望避免这种问题的争论。持续集成可以给你提供很大的帮助。
持续集成是一种软件开发实践,团队的开发人员经常集成他们的工作,通常每人至少每天集成一次——这使得每天需要集成很多次。每次集成都应该由自动构建(包括测试)尽快确认是否存在集成错误。—— Martin Fowler
持续集成的意义在于,它可以快速的向开发者提供结果反馈。
持续集成的两个基本作用是:
保持快速构建,没什么比一次耗时一小时的构建更让人沮丧的了。
快速修复损坏的构建。持续集成会让你始终在一个稳定的版本的基础上进行开发。
持续集成通过快速向开发者提供反馈来帮助提高代码质量。如果测试不通过,那么构建就会失败,此时开发者就会注意到。此外,最好在构建脚本中添加linter来检查是否符合编码规范。毫无疑问,这也是用于提高代码质量的。
拥有一系列的代码规约是非常重要的。但是在你开始制定代码规约之前,团队的每个人都应该参与。因为这期间可能存在大量的关于最优约定的讨论。
编码规范中应该包括怎样声明和命名一个变量等等。规则的数量是没有限制的,并且以后可以继续调整,前提是这些规则对你和你的团队有帮助。
当编码规范制定好以后,请务必遵守。就像我前面提到的,最好的检查办法是在管道中增加linter,这样就不需要人工干预了。如果不这样做,也可以选择在本地安装linter。但要保证在每次提交之前规范使用linter。这样你的团队的代码风格将非常统一,有利于提升代码的可读性和可维护性。
高质量的代码可以加快软件开发的速度,因为它可以被复用,并且开发人员不必花费大量时间修改bug和完善代码。同时新人加入项目也会更快适应。
代码质量越高,bug就越少。我们通常通过测试过滤出严重的bug,确保代码按照预期执行。
制定清晰的测试策略对于提高代码质量至关重要。至少要保证你的代码可以通过单元测试。如果你以其他方式进行测试就更好了,例如集成测试或回归测试。
根据测试金字塔,项目中数量最多的测试应该是单元测试,因为它们既简单又快速。有很多工具可以帮助你创建单元测试并生成代码覆盖率报告。
跑单元测试和生成代码覆盖率报告可以通过持续集成自动进行。当代码覆盖率达不到要求时,持续集成也会构建失败。
代码中有bug是必然的事情,如何处理这些bug才是关键。如果你想要提升自己,学会从错误中学习至关重要。这也是为什么你要分析bug。
发现bug后,先分析bug的影响。是一个低优先级的还是高优先级的?如果是高优先级的,就需要尽快解决。
分析bug时,你需要问自己一些问题。是什么导致了错误?为什么没有测出来?其他地方也有可能发生吗?以及我们应该怎样避免类似的bug产生?
当然,我们也要学会使用工具追踪bug。目前市面上有许多可用的bug追踪工具,你可以根据需要选择适合自己的工具。
在开始量化时,可以用几个指标来衡量代码的质量。
缺陷指标
缺陷的数量和缺陷的严重程度是衡量代码质量的重要指标。如果你想追踪bug,可以使用bug燃尽图。bug燃尽图和软件敏捷开发中的正常燃尽图一样。唯一不同的是bug燃尽图包含未修复的bug,而不是事故点。
复杂度指标
复杂度通常由圈复杂度衡量,它是程序的源代码线性独立路径数量的一个衡量。
圈复杂度数和缺陷频率之间存在一定的相关性:
许多研究调查了函数或方法中圈复杂度数和缺陷频率数之间的相关性。有些研究发现了圈复杂度和缺陷数的正相关性:函数和方法越复杂,缺陷也就会越多。然而,圈复杂度和程序大小之间的相关性已被多次证明。
从理论上来讲,降低代码的复杂度会使缺陷更少。
原文地址:https://medium.com/better-programming/things-that-you-can-do-to-improve-code-quality-c746c30e7521
一个系统可以维持5年,10年,甚至20年以上,但是代码和设计模式的生命周期非常短,当对一个解决方案使用不同的方法进行迭代的时候,通常只能维持数月,数日,甚至几分钟的时间
良好的编程习惯涉及到很多方面,但在软件行业内,大多数的公司或组织都不会把良好的编程习惯列为主要关注点。 例如,具有可读性和可维护性的代码比编写好的测试代码或使用正确的工具更有意义,前者的意义在于可以让代码更易于理解和修改。
减少嵌套会让代码可读性更好,同时也能更容易的找出bug,开发人员可以更快的迭代,程序也会越来越稳定。简化代码,让编程更轻松!
Google为了那些还不熟悉代码规范的人发布了一个JS代码规范。其中列出了编写简洁易懂的代码所应该做的最佳实践。代码规范并不是一种编写正确JavaScript代码的规则,而是为了保持源代码编写模式一致的一种选择。
程序员似乎忘记了软件的真正目的,那就是解决现实问题。您编写的代码的目的是为了创造价值并使现有世界变得更美好,而不是满足您对自我世界应该是什么的以自我为中心的观点。有人说:如果你拥有的只是一把锤子,那么一切看起来都像钉子一样
TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成。它对IE6+和Firefox1.5+都有着非常良好的支持。功能方强大,并且功能配置灵活简单。另一特点是加载速度非常快的。
函数式编程对应的是命令式编程, 函数式编程的核心当然是对函数的运用. 而高阶函数(Higher-order)是实现函数式编程的基本要素。高阶函数可以将其他函数作为参数或者返回结果。所以JS天生就支持函数式编程
朋友发表了一条说说:入职新公司,从重构代码到放弃”,我就问他怎么了?他说,刚进一家新公司,接手代码太烂,领导让我先熟悉业务逻辑,然后去修复之前项目中遗留的bug,实在不行就重构
页面实现关键词高亮显示:在项目期间遇到一个需求,就是搜索关键词时需要高亮显示,主要通过正则匹配来实现页面关键词高亮显示。在搜索结果中高亮显示关键词:有一组关键词数组,在数组中筛选出符合关键字的内容并将关键字高亮
软件工程学什么? 学计算机,写程序,做软件,当程序员。听说学计算机很辛苦? 是的,IT行业加班现象严重。在计算机世界里,技术日新月异,自学能力是程序员最重要的能力之一。选了这个专业,就要时刻保持好奇心和技术嗅觉,不能只满足于完成课内作业。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!