CLeanCode -- 第二章 -- 有意义的命名

本文介绍了编写清晰代码的重要原则,包括名副其实、避免误导、做有意义的区分、使用可读的名字、使用可搜索的名称、遵循类名和方法名的规则。通过实例展示了如何避免使用模糊不清或易混淆的命名,并强调了命名对代码可读性和维护性的影响。
摘要由CSDN通过智能技术生成

part02 - 有意义的命名


规则 - 01:名副其实

  • 变量、函数或类的命名,最好已经告诉你所有的大问题:
    • 它为什么存在;
    • 做什么事情;
    • 应该怎么用;
  • 反例:名称 d 什么也没有说明;
int d; // elpased time in days    
  • 正例:
int elpasedTimeInDays;
  • 命名会严重影响代码的模糊度

规则 - 02:避免误导

  • 应避免留下掩藏代码本意的错误线索;
    • 应当避免使用与本意相悖的词;
      • 账号 - accountList
        • 除非它真的是 List 类型,不然最好不要使用,会引起错误判断;
        • 建议使用 accountGroupbunchOfAccountsaccounts都比它好;
    • 提防使用外形相似度较高的名称:
      • 如:XYZControllerForEfficientHandingOfStrings 和 XYZControllerForEfficientStorageOfStrings;
    • 小写字母 l
      • 与数字 1 特像;
    • 大写字母 O;
      • 与数字 0 特像;

规则 - 03:做有意义的区分

  • 同一作用范围内两样不同的东西不能重名,所以导致有些人就随意修改,即使编译器满意,但是这样没有意义也会误导;
  • 如果名称必须相异,那么其意思也应该不同
  • 以数字系列命名是没有意义的:
list1 = ['a', 'b', 'c', 'd', 'e', 'f']
list2 = []
for i in range(len(list1)):
    list2[i] = list1[i]
  • 但是将参数的命名修改后:
source = ['a', 'b', 'c', 'd', 'e', 'f']
destination = []
for i in range(len(source)):
    destination[i] = source[i]

规则 - 04:使用读得出来的名字

  • 两个例子来证明
  • 反例:
class DtaRcrd102:
    pn = 'Alice'
    ps = 'gril'
    pi = '102'
  • 正例:
class Customer:
    personName = 'Alice'
    personSex = 'girl'
    personId = '102'

规则 - 05:使用可搜索的名称

  • 找 MAX_CLASS_PER_STUDENT 很容易,但是找一个字母 m 就很难;
  • m 可能是某个文件或者常量中的一部分,这时候搜索就存在障碍;
反例:
s = 0
t = []
for i in range(len(t)):
    s += (t[i]*4)/5
   
正例:
realDaysPerIdealDay = 4
WORK_DAYS_PER_WEEK = 5
taskEstimate = []
sum = 0
for i in range(len(taskEstimate)):
    realTaskDays = taskEstimate[i] * realDaysPerIdealDay
    realTaskWeeks = realTaskDays / WORK_DAYS_PER_WEEK
    sum += realTaskWeeks

规则 - 06:类名

  • 类名和对象名应该是名词或名词短语;
    • Customer、Wikipage、Account;
  • 不应该是动词:
    • Manager、Processor、Data 或 Info;

规则 - 07:方法名

  • 方法名应该是动词或动词短语;
    • postPayment、deletePage、save;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值