代码整洁之道(好代码)

222 阅读2分钟

推荐书籍:代码整洁之道+设计模式

代码不整洁的危害

不整洁的代码随着时间的增加而增加时,生产力会随之降低. 导致的结果就是:

  • 代码不易扩展或扩展容易引发其他问题
  • 程序崩溃
  • 加班
  • 增加公司成本(加人) 甚至可能造成公司倒闭

整洁代码

  • 可读性要高: 代码要像散文一样优雅易读,见码知意
  • 拒绝重复代码
  • 满足设计模式原则:(单一职责、开闭原则、里氏替换原则 、依赖倒转原则、接口隔离原则、迪米特法则、合成复用法则)

好的命名可提高代码的可读性,让人见码知意, 降低理解成本,提高效率, 减少加班

     查询 xxx, 但是命名一会叫 query 一会叫 find,这种情况应该加以规范,保持一致; get
     命名冗余 体现在命名有很多没必要的成分在里面, 并且这些"废话"并不能帮助区分它们的区别, 例如在变量命名中添加了 Variable 这个词, 在表名中添加了 Table 这个词.**所以命名中不要出现冗余的单词**, 并且提前约定好命名的规范.
      函数名应见名知意: public String addCharacter(String originString, char ch);
      (到底是在原有字符串首部添加,还是在原有字符串末尾追加呢?亦或是在某个固定位置插入呢?)
        // 追加到末尾  
        public String appendCharacter(String originString, char ch);     

        // 插入指定位置  
        public String insertCharacter(String originString, char ch, int insertPosition);

    ```
    // 获取单个对象的方法用get做前缀
    getXxx();
    //获取多个对象用list做前缀
    listXxxx();
    ```

函数应该无副作用, 意思就是函数应该只做一件事,但是做这件事的时候做了另一件有副作用的事情.

例如: 校验密码时会初始化 session,导致会话丢失。如果无法移除这种副作用,应该在方法名中展示出来,避免用户误用 checkPasswordasswordAndInitializeSession, 从命名上就要体现副作用.

参数越少越好

不要使用标识参数

//标识参数方法
render(Boolean isSuite);

//重构为两个方法
reanderForSuite(); //true renderForSingle(); //false

不要使用输出参数

什么是输出参数? 将变量作为参数传入方法,并且将变量输出, 这就是输出参数 因为增加了理解成本在里面,我们需要查看 doSomething到底对 student 做了什么. student 是输入还是输出参数? 都不明确.

image.png

项目代码 定期重构

项目代码 定期集体 code review

参考文档:

这样写代码,同事乐开花! (qq.com)

代码越写越乱?那是因为你没用责任链 (qq.com)