重构:命名

目前在重构一个项目,重构过程中发现函数和方法命名存在如下几种类型的问题:

1 “挂羊头卖狗肉型”。最痛恨的就是这种类型,不仅没有表明意图,还有误导作用。比如getXXX的函数是返回一个alloc或者new的对象,这就会导致调用方在使用之后不释放,从而照成内存泄露。

2 “模糊型”。命名是图方便直接就用一些通用的词。比如获取某些属性就直接用Info,自定义控件就用Custom。这也确实体现出一些含义,但算不上明确和到位。而且这些词一旦使用了,有更合适的机会出现的时候就不可用了。

3 “占有型”。一旦有一个自定义类或者UI控件就在前面加个My。比如MyLabel、MyDelegate等等。一方面无法明确表达类意图,另一方面My也是一种一次性资源。如果在MyLabel之后还想自定义一个Label,那是不是就陷入了需要命名成MyLabel2或者MyLabelEx的窘境呢?

4 “编号型”。这在阅读UI代码的时候经常会遇到。一个界面可能有几个label,不想为命名困扰的情况下就可以命名成lable1、lable2、lable3……。编号虽有很强的扩充性,但意义相对模糊。

5 “一词多义型”。一个词在不同的场景下有不同的意义,比如ctrl。有的情况下表示控件(control),有的情况下表示视图控制器(controller),美国服务器,有的甚至用于表示控制显示的后台模型(取control的动词义)。虽然通过稍微思考和提顿后是可以辨明其含义的,但这种不统一对代码的规范、可读以及维护都造成的影响。

6 “泛用型”。其中最臭名昭著的就是temp,在什么情况下都可以用,虚拟主机,可以说是万能变量名。这和十几年前的“同志”以及现今的“同学”没有什么区别,一喊回头的一大把,香港服务器,失去了名字的区分意义。还有一种情况就是按首次使用时的场景命名,之后就顺便借用,以至于名字无法和实际匹配。

……

更多类型期待大家的发现和应对。

本文出自 “林家男孩” 博客,请务必保留此出处

也会让你心无旁骛,更会让你的心灵得到解脱和抚慰。

重构:命名

相关文章:

你感兴趣的文章:

标签云: