《代码整洁之道》Clean Code 敏捷软件工艺手册

整洁的代码只做好一件事

简单代码,重要顺序:

  • 能通过所有测试
  • 没有重复代码
  • 体现系统中的全部设计理念
  • 包括尽量少的实体,比如类,方法,函数等

 

1. 有意义的命名

1.1 名副其实

int d; //消逝的时间,以日计

int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModifycation;
int fileAgeInDays;

1.2 避免误导

别用accountList来指称一组账号,除非它真的是List类型。用accountGroup或者bounchOfAccounts,甚至直接用accounts都会好一些。

提防使用不同之处较小的名称

不要单独使用小写字母 l 和大写字母 O

1.3 做有意义的区分

getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();

//getActiveAccount 和 getActiveAccountInfo 就傻傻分不清楚

1.4 使用读的出来的名称

ymdhms 来指明时间格式的变量

1.5 使用可搜索的名称

使用一个常量来替代具体的数字,例如 WORK_DAYS_PER_WEEK 代替 5,因为数字5很难搜索得到

1.6 避免使用编码

不用String等命令结尾作为一个变量类型的说明,例如 phoneString,用phone就可以;

成员前缀,不用 m_ 来说明是类成员变量

1.7 避免思维映射

 循环计数器尽量使用 i j k

1.8 类名

类名和对象名称应该是名词或名词短语,不应该是动词

1.9 方法名

方法名应该是动词或动词短语,属性访问器,修改器和断言应该根据其值命名,并依javabean标准添加上get,set和is前缀

1.10 每个概念对应一个词

1.11 别用双关语

1.12 使用解决方案领域名称

1.13 使用源自所涉问题领域的名称

1.14 添加有意义的语境

 

 

2. 函数

短小,函数应该做一件事,做好这件事,只做这一件事

函数参数:尽量不要超过3个

使用异常替代返回错误码

 

 

3. 注释

用代码来阐述:简单到只需要创建一个描述与注释所言同一事物的函数即可;

能用函数或变量时就别用注释

3.1 法律信息

法律信息可以指向一份标准许可或其他外部文档,而不要把所有条款放到注释中;

3.2 提供信息的注释

 

 

4. 格式

4.1 向报纸学习

4.2 概念间垂直方向上的区隔

4.3 垂直方向上的靠近

4.4 垂直距离

变量声明:应该尽可能靠近其使用位置,因为函数很短,本地变量应该在函数的顶部出现;

实体变量:应该在类的顶部声明,这应该不会增加变量的垂直距离;

相关函数:尽可能放在一起,且最开始调用的函数放在最上面;

概念相关:概念相关的代码应该放在一起,相关性越强,彼此之间的距离就该越短;

4.5横向格式

水平方向的区隔和靠近

水平对齐

 

 

5.对象和数据结构

过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数,面向对象代码便于在不改动既有函数的前提下添加新类

得墨忒耳律:模块不应了解它所操作对象的内部情形

很多面向对象程序设计语言用”.”表示对象的域的解析算符,因此得墨忒耳定律可以简单地陈述为“只使用一个.算符”。因此,a.b.Method()违反了此定律,而a.Method()不违反此定律。一个简单例子是,人可以命令一条狗行走(walk),但是不应该直接指挥狗的腿行走,应该由狗去指挥控制它的腿如何行走。

 

6.错误处理

别返回null值

别传递null值

 

7.类

类应该短小

单一权责原则: 类或模块应有且只有一条加以修改的理由

内聚:类应该只有少量实体变量,类中的每个方法都应该操作一个或多个这种变量

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值