我们都知道,一个软件的维护成本往往要高于其研发成本。在维护过程中,我们的代码需要不断的进行迭代。迭代的目的有两个:修复bug和增加新特性。但是迭代也会带来一系列新的问题,比如新的bug,或者是破坏代码的整洁性。这里我们从保持代码整洁性的角度来讨论一下迭代的几个原则。

运行所有测试

没错,首先的要说的还是测试,我们要在每次迭代代码之后,运行所有的测试,如有必要,也要编写新的测试。我们要编写尽量简单的测试,简单的测试会驱使我们降低类与类之间的耦合度。如果还不了解如何编写单元测试,可以参考一下旧文代码洁癖系列(七):单元测试的地位。良好的测试不但是代码质量的保证,同时也是良好设计的引导。

不要重复“造轮子”

记得我的leader曾经告诉过我:写每一行代码之前,要先思考一下有没有必要写这行代码。在实现一个功能之前,先确认一下这个功能是否已经被实现了。永远不要重复“造轮子”。但是,当我们进行一定的共性抽取时,可能已经违反了SRP原则(Single Responsibility Principle)。因此,抽取出的方法可能需要放在其他类中。

可读

代码是程序员之间的交流工具,要想获得其他程序员的尊重,必须使你的代码具备可读性。这也是我们要保持代码整洁的原因。如何保证代码的可读性呢?首先需要的就是有意义的命名,关于命名规则,可以参考代码洁癖系列(二):命名的艺术这篇文章,其次就是通过测试用例让别人了解你的代码。

尽可能少的类和方法

在代码洁癖系列(三):整洁的类和函数一文中,我们说过类和函数都应该尽量短小。有人问了,为了类和函数都足够短小,我要把代码拆分成许多的类吗?这里需要说明一下,在这方面,我们并不需要追求极致。应该根据实际情况,合理的拆分。所以,也要尽量减少类和方法,这可能与“类和函数应该短小”这一原则相矛盾。这需要工程师自己去衡量了,首先要保证“类和函数应该短小”,其次才是尽可能减少类和方法。

结束语

到这里,”代码洁癖系列“的文章要告一段落了,希望大家在写代码的时候可以多思考,保证自己代码的整洁性。文章有什么问题,或者我有哪些遗漏的地方,大家可以通过去我的微信公众号后台留言和我讨论。

代码洁癖系列(八):迭代的原则相关推荐

  1. 代码洁癖系列(五):外在的格式美

    我们在阅读一些优秀项目的源码时,一定会感叹他们代码的整洁和一致性.而作为第一印象,代码格式的整齐是让人能够继续阅读下去的动力.今天我们分别从垂直格式和横向格式两个方面来讨论代码的格式.修正格式的方法有 ...

  2. 代码洁癖系列(三):整洁的类和函数

    前面我们讨论了什么样的命名更能够让你赏心悦目,今天来讨论一下面向对象编程过程中最重要的环节,编写类和函数.我们仍然用Java来演示,什么样的类和函数才算是整洁的. 首先讨论函数,函数定义好了,类也就容 ...

  3. 代码洁癖系列(一):什么是整洁代码

    作为一个代码洁癖患者,我最大的愿望就是世界和平--对不起,拿错剧本了,最大的愿望就是将对代码的洁癖传播给每一个人,净化所有的代码.这是一个宏大的愿望,但我会一直努力净化我所看到的每一行代码,并且希望能 ...

  4. 代码洁癖系列(六):处理错误

    程序运行过程中,有些错误是不可避免的,而如何使程序在出现错误时代码仍然正常工作就成了程序员的日常工作之一.那么处理错误和代码整洁有什么关系呢? 前面我们提到过,try-catch代码块会破坏代码的结构 ...

  5. 代码洁癖系列(七):单元测试的地位

    在许多程序员眼中,单元测试似乎是可有可无的,觉得这应该是测试人员的工作.实际上,测试代码和生成代码同样重要.我们不但需要测试代码,而且需要的是整洁的测试代码. 测试为什么要整洁 我们对待测试代码需要像 ...

  6. 代码洁癖系列(四):可忽略的注

    刚开始学编程的时候,老师就告诉我们,注释很重要,但是一直到现在,也没有人真正告诉过我要怎么写注释.还有很多人甚至干脆不写注释.所以今天想聊一下到底如何写注释. 提到注释就让我想起一个段子:两个程序员去 ...

  7. 代码洁癖系列(四):可忽略的注释

    刚开始学编程的时候,老师就告诉我们,注释很重要,但是一直到现在,也没有人真正告诉过我要怎么写注释.还有很多人甚至干脆不写注释.所以今天想聊一下到底如何写注释. 提到注释就让我想起一个段子:两个程序员去 ...

  8. 代码洁癖系列(二):命名的艺术

    不知道大家还记不记得<家有儿女>里有这么一段经典台词:"我叫夏雪","我叫夏雨","我叫夏冰雹". 刘星自己给自己起的名字承包了 ...

  9. 四种代码洁癖类型,程序员看了直呼内行

    很多程序员在写代码的时候 都有自己的独特的习惯 比较典型的就是"代码洁癖" 他二哥收集了一些代码洁癖症状 分了四个类型 来看看有没有你对应的吧 看到大家都如此极致的追求, 他二哥实 ...

最新文章

  1. [WTL] STLport安装指南
  2. PHP中的$_COOKIE与urlencode/decode的关系
  3. 登录页面html代码_【网络自动化平台开发】—— 登录组件
  4. mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项
  5. 10.31模拟:总结
  6. mysql系统属性_mysql 显示表字段及mysql系统信息
  7. QQ帐号注销功能灰度体验中:预计下周发布!
  8. 模拟地铁乘车推荐c语言,模拟地铁新手攻略 新手必看三要素
  9. Apache服务器+tomcat配置
  10. Web App - MUI框架初体验
  11. YAML语法详细总结
  12. Photoshop教程实例讲解
  13. 20210429 ---- 浅谈 视口
  14. 炫酷恶趣强大的制作神器小程序源码_支持多种流量主模式
  15. 3年100亿!苏宁易购与倍科达成重磅战略合作
  16. Elasticsearch的DSL搜索
  17. 惠民“大数据”强化共享发展
  18. 如果你来投票决定百度的生死,你会如何抉择?
  19. 阿里云平台创建 centos系统ECS 实例快速入门 (创建及释放ECS)
  20. java实现微信小程序客服功能开发,后台接受用户发送消息实现关键词自动回复

热门文章

  1. Access 2010/2013/2016/2019 VBA(Procedure)
  2. MATLAB读取BWT901BLECL5.0
  3. 网维大师不能启动虚拟盘服务器,服务器网络模块导致网维大师无盘程序无法启动?...
  4. 计算机网络考前复习题
  5. 创客exynos-fs4412系统移植-(uboot,内核,文件系统)
  6. 美团打车在前、滴滴外卖在后,小巨头为何越来越不务正业?
  7. komodo ide php,Komodo IDE
  8. 计算机毕业设计jsp家校互动系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  9. base64 图片在线解码/编码
  10. 北斗终端与计算机传输信息,北斗短报文数据传输终端