高效编程——代码简洁之道读书笔记。

  • A+
所属分类:成长之路

一、有意义的命名。


1.使用揭露意图的命名(Use Intention-Revealing Names)

2.避免伪信息(Avoid Disinformation)

  例如尽量少用l,O(字母),不是1,0(数字)。

3.做有意义的命名区分(Make Meaningful Distinctions)

4.使用可以发音的命名(Use Pronounceable Names)

5.使用可以搜索的命名(Use Searchable Names)

6.避免命名编码(Avoid Encodings)

  ps:现代编译器都可以侦测到类型错误,因此不必要使用匈牙利命名法(Hungarian Notation)之类的编码规则.

7.class,objects 应该以名词命名,方法(function)应该以动词短语命名。

8.坚持一个词一个含义(Pick One word per Concept)

9.避免用双关语(Don't Pun)

10.使用术语(Use Solution Domain Names)

11.添加有用的语境(Add Meaningful Context)


二、函数

1.短小!

2.只做一件事。

3.每个函数里面的语句要保持在同一个抽象层上(One Level of Abstraction per Function)。

      每个函数的下方最好跟着要调用到的下一层抽象级别的函数,便于阅读。

4. 使用描述性的名称。(Use Descriptive Names)

5.函数,尽量少使用参数,尽量少用参数作为返回数据(Output)

  以标识(flag)为参数的函数很明显的违反了单一权责原则,True做一件事,False做了另外一件事。

5.无副作用(Have no Side Effects)

  还是要坚持一个但以权责原则,坚持一个函数制作一件事。

6.分割指令与询问(Command Query Separation)

7.使用异常替代返回错误码(prefer Exceptions to Returning ERROR Codes)

8.抽离try/catch 模块。

9.不要重复写功能交叉的方法,要保证一个函数只做一件事。

10.结构化编程(Structured Programming)

   每个函数,函数中的每个代码块只能有一个如何和一个出口,尽量少使用GOTO。但是在小函数里面,这个规则用处不大,所以应该尽量使用小函数。


三、注释

1.注释不能美化糟糕的代码

2.尽量用代码解释自己要表达的内容。

例子:

// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) && 
    (employee.age > 65)) 
//Or this?
if (employee.isEligibleForFullBenefits())

3.好的注释:

  3.1法律信息

  3.2提供信息的解释。

  3.3对意图的解释。

  3.4 澄清

  3.5 警示

  3.6 TODO list


四、格式

垂直格式:

1.源码单文件不应该太大。

2.代码逻辑块之间加入空行,增加代码的可读性。

3.变量的生命应尽可能靠近其使用位置。局部变量应该在函数的顶部声明。

4.关系密切的代码块应该放的比较靠近。尽量不要将关系密切的代码块放到不同的文件中。

5.相关的函数尽量放的靠近,调用者尽可能放在被调用者上面。(瀑布模式)注:C++中函数调用之前至少要先声明。

横向格式:

1.尽量保持代码行短小,一行尽量不要超过100个字符(个人习惯)。以无需滚动横向拖动条为准。

2.变量与运算符之间空格 根据运算符优先级决定(个人习惯)。

3.左对齐

4.缩进


单一权责原则(Single Responsibility Principle,SRP)

开放闭合原则(Open Closed Principle,OCP)

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:44   其中:访客  44   博主  0

    • avatar RAW9426 7

      签到成功!签到时间:今日的上午11:04:11,每日打卡,生活更精彩哦!

      • avatar 斜拍咐撕擞瓶我磁捍镀颓偕贾卧腹秤仍抑 9

        签到成功!签到时间:今日的上午8:35:50,每日打卡,生活更精彩哦!

        • avatar 宗唾猿安淤史南扑泌唤值苹涣怨倮试胁四 9

          签到成功!签到时间:今日的上午8:31:07,每日打卡,生活更精彩哦!

          • avatar 勇教继晃俑裙坠虑肺核壮孔郎冠附味群某 9

            签到成功!签到时间:今日的上午7:55:02,每日打卡,生活更精彩哦!