zoukankan      html  css  js  c++  java
  • 如何命名 —— 《clean code》读后感

          命名对于可读性至关重要。优秀的命名应该有以下特点。

    1)命名没有模糊性,命名本身能够具体非常高的可读性,是自解释的,好的命名可以无需配以注释就能轻易看明白。

           theList 不如 gameBoard

           x[0] == 4 不如 cell[STATUS_VALUE] == FLAGGED 不如 cell.isFlagged()

    2)做有意义的区分,一词一义。如果代码中有这样的方法:

          getActiveAccount();

           getActiveAccounts();

          getActiveAccountInfo();

          会让阅读的工程师一头雾水。这三个命名表达的意思是一样的,他们的功能有什么区别吗??如果缺少明确约定,moneyAmount和money没区别,customerInfo和customer没区别,accountData和account没有区别。不要用这样相近的命名表达不一样的功能,如果要区分,请从命名上能表达出不同的地方。

    3)使用读得出来的名称,别使用无谓的简写。

           genymdhms 远比不上 generationTimestamp的可读性。

          不怕命名长,怕命名没有意义。

    4)名称长短应与其作用域大小相对应。短的名称只能用于小的作用域,大的作用域应使用长名称,以防止变量名冲突。

    5)避免思维映射。应尽量让命名更直观,更接近真实世界的思维习惯。例如for(var i=0;i<n;i++) 这种习惯性的变量i和n都可以近一步使用可读性更直观的命名。

    6)类名应该是名词或名词短语。而且命称应该更具体,不要过于抽象。

         推荐的: Customer、WikiPage、AddressParser

         不推荐的: Manager、Processor、Data、Info

         类名不应当是动词。

    7)方法名应该是动词或动词短语。如 postPayment、deletePage或save。

    8)添加有意义的语境。语境可以通过加前辍实现,也可以通过定义一个用于语境的类实现。前者不如后者,前者只有工程师能读明白,后者连编译器也能看明白。

         无语境的命名:firstName、lastName、street、city

         通过前辍实现语境: addrFirstName、addrLastName、addrState

         通过类实现语境: address.firstName、address.lastName、address.state

         

  • 相关阅读:
    yii---where or该如何使用
    yii---获取当前sql语句
    yii---load怎么使用
    yii---往对象里面添加属性
    js---箭头函数
    yii---判断POST请求
    Atitit USRqc62204 证书管理器标准化规范
    Atitit  深入理解命名空间namespace  java c# php js
    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2
    Atitit 项目中的勋章体系,,mvp建设 ,荣典体系建设
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426815.html
Copyright © 2011-2022 走看看