什么样的代码才是真正好的、整洁的代码?iteye.com上的文章很多:
Grady Booch,《面向对象分析与设计》作者:
引用
• 整洁的代码是简单、直接的;
• 整洁的代码,读起来像是一篇写得很好的散文;
• 整洁的代码永远不会掩盖设计者的意图,而是具有少量的抽象和清晰的控制行。
Dave Thomas,OTI公司创始人,Eclipse战略教父:
引用
• 整洁的代码可以被除了原作者之外的其他开发者阅读和改善;
• 具备单元测试和验收测试;
• 有一个有意义的名字;
• 使用一种方式来做一件事情;
• 最少的依赖,并明确定义;
• 提供了一个清晰的、最小的API;
• 应该根据语言特性,在代码中单独显示必要的信息,而不是所有的信息。
从他们的归纳中,可以看出真正好的代码都有一个共性,可读性。在《编写可读代码的艺术》这本书中,作者是这样定义可读性的:“代码的写法应当使用别人理解所需的时间最小化”。在这本书的指导下,从命名和注释开始在自己这几年写的代码中找出一些例子。希望自己以后在这些细节上引以为戒。
一.把信息封装到名字中,无论是类,方法或变量的命名
1.选择专业的词,尽量避免模糊或意义太广
。
public List<UserIp> select(String userId){
}
如果改成这样是不是更明确:
public List<UserIp> queryUserIps(String userId){
}
2.避免泛泛的名字
避免像tmp,i,j ,k这样泛泛的名字,比较常见循环中的 i,j,k.
for (int j = 0; j < actionLogs.size(); j++) {
ActionLog actionLog = actionLogs.get(j);
}
如果改成这样:
for (int index = 0; index < actionLogs.size(); j++) {
ActionLog actionLog = actionLogs.get(index);
}
3.用具体的名字代替抽象的名字
在给变量,函数或者其它元素命名时,要把它描述的更具体而不是更抽象。
/**
* 刷新IP库
*/
public void refreshData() ;
如果改成这样:
/**
* 刷新IP库
*/
public void refreshIpData() ;
4.使用前缀或后缀来给名字附带更多信息
对于像带单位的值均可以用后缀来附加更多信息
常见的打印日志的代码:
long startTime = System.currentTimeMillis();
if (logger.isInfoEnabled()) {
logger.info((System.currentTimeMillis() - startTime) + "ms,success!");
}
如果改成这样:
long startMs = System.currentTimeMillis();
if (logger.isInfoEnabled()) {
logger.info((System.currentTimeMillis() - startMs ) + "ms,success!");
}
5.决定名字的长度
(1)在小的作用域里可以使用短的名字,丢掉没用的词。
public static StrategyType convertToStrategyType(StrategyTypeDO strategyTypeDO) {
}
如果改成这样:
public static StrategyType toStrategyType(StrategyTypeDO strategyTypeDO) {
}
6.给boolean命名
通常来讲,加上is,has,can 或should这样的词,可以把布尔值变得更明确。
如代码:
boolean first = true;
if(subConditions!=null&&subConditions.size()>0){
for (FactorCondition condition : subConditions) {
String template = generateCode(condition);
sbf.append((first ? "" : " || ") + "( " + template + " )");
if (first) {
first = false;
}
}
}
若改为:
boolean isFirst = true;
if(subConditions!=null&&subConditions.size()>0){
for (FactorCondition condition : subConditions) {
String template = generateCode(condition);
sbf.append((isFirst ? "" : " || ") + "( " + template + " )");
if (isFirst) {
isFirst = false;
}
}
}
7.与使用者的期望相匹配
方法的名称要符合用户的期望,我们通常期望get()方法是轻量的方法。
public double getFPSecurityModelScore(Event event) {
//这里省略
}
若改为:
public double computeFPSecurityModelScore(Event event) {
//这里省略
}
二.代码风格与注释
一致的风格要比“正确”的风格更重要,对于一个团队乃至一个公司,要采用一致的格式化模板。对于注释,一定不要为注释而注释,许多时候好代码>坏代码+注释,当你觉得要写很多注释时,也从侧面反映出你的代码或设计不太美妙。注释的目的就是尽量帮助读者了解和作者一样多。
1.不要为了注释而注释
/**
* Getter method for property <tt>groupName</tt>.
*
* @return property value of groupName
*/
public String getGroupName() {
return groupName;
}
/**
* Setter method for property <tt>groupName</tt>.
*
* @param groupName value to be assigned to property groupName
*/
public void setGroupName(String groupName) {
this.groupName = groupName;
}
当然,上面的的注释是由模板生成的,确有为了注释而注释之嫌。
2.注释要记录你的思想.
包括为什么代码写成这样而不哪样的内在理由。对于代码的缺陷或需要优化的地方可给予注释,对于常量,可记录常量背后的故事,为什么是这个值,如:
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;
3.站在读者的立场上思考。
为普通读者意料之外的行为加上注释,用注释来总结代码块或精确地描述函数的行为,使读者不致迷失在细节中。
三.细节决定成败,表面并非肤浅
对于上面的每一个细节如果都能做的很好,这就为写好代码,写好可读代码,写好整洁代码迈出了第一步。
参考资料:《编写可读代码的艺术》
分享到:
相关推荐
《编写可读代码的艺术》是一本专注于提升代码可读性的著作,它强调了代码的可读性对于软件开发的重要性。可读代码不仅有助于团队协作,还能降低维护成本,提高软件质量。以下是书中涵盖的一些关键知识点: 1. **...
《编写可读代码的艺术》是一本致力于提升代码可读性的书籍,强调了代码可读性在软件工程中的重要性。代码可读性不仅关乎程序员之间的沟通效率,还直接影响到软件的维护成本。以下是对书中一些核心观点的提炼: 1. *...
《编写可读性代码的艺术》是一本专注于提升代码质量,特别是强调代码可读性的书籍。在IT行业中,尤其是在软件开发领域,代码的可读性至关重要,因为它直接影响到代码的维护和扩展。良好的代码可读性不仅是对其他...
《编写可读性代码的艺术》这本书聚焦于如何提高代码的可读性,强调代码不仅应该能够被计算机正确执行,更重要的是能够让其他开发者快速理解其功能和逻辑。本书通过一系列实用的指导原则和最佳实践,帮助读者掌握编写...
1. **代码规范**:书中强调了遵循统一的编码风格和命名约定的重要性,这不仅有助于团队协作,还能使代码更易于理解和调试。例如,使用有意义的变量名,遵循缩进规则,以及避免过长的函数和过深的嵌套。 2. **注释与...
### 如何写好代码——注释 #### 一、好代码的标准 优秀的代码不仅能够实现功能需求,还应该具备良好的可读性、可维护性和扩展性。...记住,编写高质量的代码不仅仅是实现功能那么简单,更是一种艺术和责任。
本文将探讨如何编写可读性强的代码,包括代码风格、命名约定、代码结构、注释和文档等方面。 代码是程序员与程序员沟通的桥梁。良好的代码可读性能够使其他开发者更快地理解代码的意图和逻辑,从而提高团队协作的...
他的职业生涯和贡献说明了软件工程师的价值不仅仅在于写代码,更在于将个人的热情、专业知识和对代码艺术的追求结合在一起。 总而言之,《代码的艺术》不仅是一篇技术文章,更是对软件工程师职业生活的深刻反思和...
在科技日新月异的当下,代码...它更像是一盏指路灯塔,为刚刚踏入编程世界的青年才俊指明了方向,让每一个软件工程师都能够理解代码背后更深层次的艺术内涵,从而在编写代码的同时,也能够体验到艺术创作的乐趣和成就。
《修改代码的艺术》一书深入探讨了在软件开发过程中如何优雅地进行代码修改,以保持代码的可读性、可维护性和性能。这本书的核心理念是,代码修改不仅仅是修复错误,而是一个提升软件质量的重要环节。以下是一些关键...
如果要改进这个项目,首先需要进行代码重构,将功能分解为更小的、可重用的组件,并添加必要的注释。 Bug的存在则意味着程序在某些情况下可能无法正常工作。调试和修复Bug是软件开发中的常规任务,通常需要利用调试...
在当今的软件开发环境中,阅读和理解源代码已经成为程序员工作中不可或缺的一部分。无论是在团队协作,还是维护和升级遗留系统,或者是在学习新技术和架构设计,掌握如何高效地解读他人的代码对于提升个人编程能力至...
30. **持续学习和实践**:编程是一门不断发展的艺术,跟上最新的技术和最佳实践,不断优化自己的代码。 遵循这些建议,不仅可以提升Java代码的质量,还能使代码更加易于阅读、理解和维护,降低未来项目中的潜在问题...
假设在一个团队开发项目中,如果每个成员都能够遵循相同的编码规范,比如使用一致的命名规则、注释方式等,那么无论哪个成员接手后续的维护或开发工作,都能快速理解现有代码的基础架构和逻辑,从而极大地提高工作...
10. **最佳实践**:学习如何编写清晰、可读性强的代码,遵循编码规范,使用注释来增强代码的可理解性,是成为一名优秀C++程序员的重要环节。 通过阅读《编程艺术-C++》,读者不仅能学到C++语言的语法和技术,还能...
2. **命名艺术**:好的变量名和函数名是代码自解释性的关键。书里可能详述如何选择有意义的命名,避免使用模糊或误导性的缩写,以帮助读者通过名字就能大致推断出代码的作用。 3. **注释与文档**:虽然注释不是解决...
- **注释文档**:适当添加注释和文档,帮助其他开发者快速理解代码意图。 2. **实施单元测试**:通过编写单元测试来验证代码的正确性,减少未来的修改成本。 - **测试覆盖率**:确保关键业务逻辑有足够的测试覆盖...
《修改代码的艺术》一书是软件开发领域的一部经典之作,它深入探讨了代码的维护、重构和优化,旨在帮助开发者提升代码质量,提高软件的可维护性。书中的理念和实践方法对于任何想要改进代码质量的程序员来说,都是...
本文基于《代码整洁之道》、《编写可读代码的艺术》和《重构:改善既有代码的设计》这三本经典著作的核心理念,结合实践经验,总结了一系列提升代码质量的最佳实践。以下内容将围绕注释、命名、方法、异常处理、单元...