码迷,mamicode.com
首页 > 其他好文 > 详细

整洁代码清单

时间:2018-09-06 19:54:31      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:替代   构造   数据   本地   一件事   get   相互   函数   模板方法   

  注释:注释只应该描述有关代码和设计的技术性信息;

     通常作者、最后修改时间不该在注释中出现;

     注释应该谈及代码自身没提到的东西;

     删掉注释掉的代码,保持简洁;

  环境:应当能够用单个命令签出系统,并用单个指令构建它;

     应当能够发出单个指令就可以运行全部单元测试;

  函数:函数的参数量应该少,没参数最好;

     输出参数违反直觉,如果函数非要修改状态,就修改它所在对象的状态;

     标识参数,消灭掉布尔值参数;布尔值参数告诉函数做了不止一件事,违反单一权责原则;

     死函数,永不调用的方法应该被丢弃;

  一般性问题:函数或类应该实现有理由期待的行为,函数名应该表达其行为;

          如果你必须查看函数的实现(或文档)才知道它是做什么的,就该换个更好的函数名;

        追索每种边界条件,并编写测试;

        重复代码代表遗漏了抽象,重复的代码可能成为子程序或另一个类;

        创建分离较高层级一般性概念与较低层级细节概念的抽象模型;基类应该对派生类一无所知;

        限制类或模块中暴露的接口数量:类中的方法越少,函数知道的变量越少,类拥有实体变量越少;

        垂直分隔:垂直距离要短,变量和函数应该靠近北使用的地方定义;

                    本地变量应该正好在其首次使用的位置上面被定义;

                    私有函数应该正好在其首次使用的位置下面被定义;

        前后一致,小心选择约定,一旦选中,就小心持续遵循;

        移除:没有实现的默认构造器,没有用到的变量,从不调用的函数,没有信息量的注释;

        不相互依赖的东西不该耦合;删除死代码;

        类的方法只应对其所属类中的变量的函数感兴趣,不该垂青其他类中的变量和函数;

        选择算子参数;代码要尽可能具有表达力;通常应该倾向于选用非静态方法;

        把逻辑依赖改为物理依赖;用多态替代if/else或switch/case;遵循标准约定;

        用命名常量替代魔术数,魔术数(任何不能自我描述的符号);

        结构甚于约定;封装条件;避免否定性条件;函数只该做一件事;

        时序耦合,顺序调用;封装边界条件;函数应该只在一个抽象层级上,拆分不同抽象层级;

        在较高层级放置可配置数据,位于较高层级的配置性常量易于修改;

        避免浏览传递:避免a.getB().getC(),直接让协作者提供所需的全部服务;

  名称:采用描述性名称:不要太快取名,确认名称具有描述性;

     名称应与抽象层级相符;尽可能使用标准命名法;无歧义的名称:避免编码;

     为较大作用范围选用较长名称;名称应该说明副作用:名称应该说明函数、变量或类的一切信息;

  测试:测试足够;使用覆盖率工具;别略过小测试;测试边界条件;全面测试相近的缺陷;测试应该快速;

 

  重复形态:最明显:明显一样的代码;可以用单一方法来替代;

       较隐蔽:在不同模块中不断重复出现、检测同一组条件的switch/case或if/else链;可以用多态来替代;

       更隐蔽:采用算法类似但具体代码行不同的模块;可以用模板方法模式策略模式来修正;

整洁代码清单

标签:替代   构造   数据   本地   一件事   get   相互   函数   模板方法   

原文地址:https://www.cnblogs.com/xiajia/p/9600047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!