您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 编写可读代码的艺术-代码应易于理解 二
代码应当易于理解名字应该有多长•当选择好名字时,有一个隐含的约束是名字不能太长。没人喜欢在工作中遇到这样的标识符•newNavigationControllerWrappingViewControllerForDataSourceOfClass名字越长越难记有时候我们也可能走另一个极端,只用单个单词或者单一字母的名字。在小的作用域里面可以使用短的名字•当你去短期度假时,你带的行李通常会比长假少。同样,作用域小的标识符也不用带上太多信息。也就是说,因为所有的信息都很容易看到,所以可以用很短的名字。•If(debug){mapString,intm;LookUpNamesNumbers(m);Print(m);•}•尽管m这个名字并没有包含很多信息,但这个不是个问题。因为我们已经有了需要理解这段代码的所有信息。•然而,假设m是一个全局变量中的类成员,如果你看到这个代码片段:LookUpNamesNumbers(m);Print(m);•这段代码就没有那么好读了,因为m的类型和目的都不明确。•因此如果一个标识符有较大的作用域,那么他的名字就要包含足够的信息以便含义更清楚。首字母缩略词和缩写•程序员有时会采用首字母缩略词和缩写来命名,以便保持较短的名字,例如,把一个类命名为BEManager而不是BackEndManager。这种名字会让人费解。•在我们的经验中,使用项目所特有的缩写词非常糟糕。对于项目的新成员来讲他们看上去太令人费解和陌生,•所以经验原则是:团队的新成员是否能理解这个名字的含义?如果能,那可能就没有问题。•例如,对于程序员来讲,使用doc来代替document,用str来代替string是相当普遍的。丢掉没用的词•有时名字中的某些单词可以拿掉而不会损失任何信息。例如ConvertToString()就不如ToString()这个更短的名字。不会误解的名字关键思想•要多问自己几遍:“这个名字会被别人解读成其他的含义吗?”要仔细审视这个名字。例子:Filter()•假设你在写一段操作数据库结果的代码:•results=Database.all_object.filter(“year=2011”);•结果现在包含哪些信息?–年份小于或等于2011的对象?–年份不小于或等于2011年的对象?•这里的问题是“filter”是个二义性单词。我们不清楚他的含义到底是“挑出”还是“减掉”。最好避免使用“filter”这个名字,因为它太容易误解。给布尔值命名•Booleanread_password=true;•这会有两种截然不同的解释–我们需要读取密码–已经读取了密码最好避免用“read”这个词,用need_password或者user_is_authenticated这样的名字来代替审美三条原则•使用一致的布局,让读者很快就习惯这种风格•让相似的代码看上去相似•把相关的代码行分组,形成代码块例子二例子三
本文标题:编写可读代码的艺术-代码应易于理解 二
链接地址:https://www.777doc.com/doc-3087290 .html