避免使用编码

编码已经太多,无谓再自找麻烦,把类型或作用域编进名称里面,徒然增加了解码的负担,没理由要求每位新人都在弄清要应付的代码之外,还要再搞懂另一种编码语言,这对于解决问题而言,纯属多余的负担,带编码的名称通常也不利于发音,容易打错
1.匈牙利语标记法
在往昔名称长短很要命的时代,我们毫无必要的破坏了不编码的规矩,如今后悔不迭,fortran语言要求首字母体现出类型,导致了编码的产生,BASIC早期版本只允许使用一个字母加上一位数字,匈牙利语标记法(Hungarian Notation,HN)将这种态势愈演愈烈
在windows的C语言API的时代,HN相当重要,那时所有名称要么是个整数句柄,要么是个长指针或者void指针,要不然就是String的几种实现(有不同用途和属性)之一,那时候编译器并不做类型检查,程序员需要匈牙利语标记法来帮助自己记住类型
现在变成语言具有更丰富的类型系统,编译器也记得并强制使用类型,而且,人们趋向于使用更小的类,更短的方法,好让每个变量的定义都在视野范围之内
Java程序员不需要类型编码,对象是强类型的,代码编辑环境已经先进到在编译开始前就侦测到类型错误的程度,所以,如今HN和其他类型编码形式都纯属多余,他们增加了修改变量,函数或类的名称的难度,他们增加了阅读代码的难度,他们制造了让编码系统误导读者的可能性
PhoneNumber phoneString
//类型变化时,名称并不变化
2.成员前缀
也不必使用m_前缀来标明成员变量,应当把类和函数做的足够小,消除对成员前缀的需要,你应当使用某种可以高亮或用颜色标出成员的编辑环境
此外,人们很快学会无视前缀(或后缀),只看到名称中有意义的部分,代码读的越多,眼中就越没有前缀,最终,前缀变作了不入法眼的废料,变作了旧代码的标志物
3.接口和实现
有时也会出现采用编码的特殊情形,比如,你在做一个创建形状用的抽象工厂(Abstract Factory)该工厂是个接口,要用具体类来实现,你怎么来命名工厂和具体类呢?IShapeFactory和ShapeFactory吗?我喜欢不加修饰的接口,前导字母I被滥用到了说好听点是干扰,说难听点个根本就是废话的程度,我不想让用户知道我给他们的是接口,我就想让他们知道那是个ShapeFactory,如果接口和实现必须选一个来编码的话,我宁肯选择实现,shapeFactoryImp,甚至是丑陋的CShapeFactory,都比对接口名称编码来得好