第五部分-编程建议

代码是否干净

一个东西干不干净,不同的人会有不同的说法。
拿衣服来说,通常人们觉得衣服洗白洗净就算干净了,但是对于医生来说,可能要无菌才叫干净。
其实他们的说法都没有错,因为用途不同,才导致的切入点不同。
那么回到代码上面,为了写出健壮的软件系统,我们需要定义出什么是干净
不同的程序员对干净有不同的看法
文中对程序员分了几个境界等级:
1)无法分辨代码干净与否
2)对代码只有肤浅认识,可能仅局限于代码风格
3)一些很隐蔽的语法层面的BUG,和逻辑错误,比如

char* a, b; //看上去声明了2个char指针,其实只有a是指针
# 这里的result默认值不会每次调用的时候重新生成
def append(num, result=[]):
result.append(num)

4) 清晰易懂不易出错,如良好的代码结构与设计模式等。

第四种境界的一些方法:

通用规则:

  1. 尽量将函数名写得简短 //备注:保证可读性的前提下
  2. 变量声明的位置离使用的位置越近越好 //主要是为了避免变量类型或用途混淆问题
  3. 不要使用宏去创建你自己的编程语言 //代码生成器?生成的代码修改起来非常不方便,其实可以通过封装来解决
  4. 不要使用goto
  5. 不要让一个代码块超过一个屏幕 //显示器横放!30寸以下!

匈牙利命名法:

  1. 应用型:
    文中所推崇的,变量名前加种类(kind)前缀
    前缀如s=安全型字符串,us=非安全字符串
  2. 系统型
    被广泛吐槽,几乎没什么用,前缀就是变量type,如sz=字符串,int=整数
    //windows的SDK好像几乎是这种风格,什么szName, lpszClassName,dwSize

异常处理:

  1. 基于错误码:容易区分写的是否干净
  2. 基于异常:很难区分是否干净
    //文中观点可能是从代码Review角度来看待异常处理的,对此看法还是持保留态度,也可能我的水平还没到达那种程度。
    文中对异常处理的劝退文(翻译):https://www.cnblogs.com/majianguo/p/6770192.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注