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

         

  • 相关阅读:
    nodeJS grunt karma+jasmine+require 快速构建前台自动化测试环境搭建
    js闭包
    白鹭 接入vivo小游戏
    白鹭 字节跳动 接入小游戏
    白鹭声音播放问题汇总
    白鹭 有人好奇为什么hashcode 增长的那么快么?都创建了些什么?
    Mac node 安装
    白鹭 修改底层 egret.js 库后再次编译 成 新的库
    js 获取字典长度
    egret 性能优化
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426816.html
Copyright © 2011-2022 走看看