代码整洁之道笔记(二)

一、格式

(一)、垂直格式

  1. 尽量用200~500行为单个文件。

  2. 源码应该像报纸一样:上面是大纲,下面是细节。最顶部应该是高层次概念和算法,细节应该依次向下展开,放在我们代码里意思就是:public方法应该放在上面,private方法应该放在下面。应该是一个总分结构。

  3. 概念上垂直方向的区隔
    代码中是需要一些空行的,方法间必须要有空行,方法中:两段功能不同的代码中也需要空行,以区别不同的代码段,但这个尺度需要掌握好,空行特别多时也会影响阅读。所以若干很短比如只有一行的代码段就无需再空行了
    String name = “A”;
    Int age = 10;
    String sex = “男”;

    User user = new User();
    User.setName(name);
    User.setAge(age);
    User.setSex(Sex);

    Mapper.insertUser(user);

  4. 垂直方向上的靠近
    与上面相反,一些功能或概念相似的代码段是应该放在一起的,比如我上面的代码中把变量初始化放在一起,new一个对象的过程放在一起。这样很容易知道它们是相似的。在类中也应该是这样,私有变量放在一起,公有变量放在一起。

  5. 垂直距离
    关系密切的概念应该相互靠近,条件是在同一个文件中。其实并不应该把关系密切的概念放在不同文件,所以应该避免使用protexted变量。
    a. 变量的声明应该靠近其使用位置,比如我们写循环的控制变量一般就放在循环上面。
    b. 实体变量应该在类的顶部声明,这好像是约定俗成,所以大家都会去顶部找实体变量。有些规范会放在中间,虽然靠近了使用位置,但其实更不好找。
    c. 相关函数,某个函数调用了另外一起就应该把它们放在一起,而且调用者应该尽可能放在被调用者上面,这点一定要适应。

(二) 水平格式

  1. 宽度?
    以前的规范是80个字符,现在虽然屏幕变宽了,但是最好也不要太宽,超过120个字符有时就需要滚动了。
  2. 水平方向上的区隔与靠近
    使用空格连接紧密相关的事物,把相关性较弱的事物分隔开。
  • a. 赋值操作符周围加空格字符。因为空格可以区分 = 左右变量。

  • b. 函数名和左括号之间不加空格,因为函数和参数密切相关.
    Public static root(double a, double b, double c);{
    Return (a*b) + c;
    }
    可以看到乘法之间没加空格,因为优先级较高,这样读起来比较舒服。

      总之加不加空格,就看分隔符两边的关系,如果觉得需要分开提高可阅读性,就加空格,如果觉得是很紧密的,就不加空格。
    
  • c. 水平对齐
    以前在声明一些相同的变量会对齐,这样也方便批量操作。
    Private socket socket;
    Private a a;
    其实没什么用,中间用空格隔开就好。

  • d. 缩进
    这个没什么说的,日常都会缩进,方便了解代码结构。

  • e. 空范围
    尽量不适用while 或 for 中为空

  1. 团队规则
    一个系统中应使用同样的代码规范。

二、对象和数据结构

  1. 私有变量应该通过get set方法,这样不会暴露内部实现,自己也可以替换实现方法,如果都暴露出去就不能随意更改。
    这是关系到抽象关系,因为应该暴露的是抽象接口,而不是本身的数据细节,这是以抽象形态展示数据。所以也不能乱加get set
  2. 对象和数据结构之间的反对称性
    其实就是面向过程和面向对象之间的差异:
    面向过程容易添加函数,不容易添加数据结构。
    面向对象 容易添加数据结构,但添加函数需要每个都添加
  3. 得墨忒定律
    模块不应了解它所操作的对象的内部情形
    也就是说对象应该隐藏数据,暴露操作(需要注意,通过存取器也暴露了数据)

你可能感兴趣的:(规范)