编写代码时,尽量使用有意义的名称命名类、方法、变量等
1.使用能揭示意图的名称
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
改变为,就能更能说明名称的意图
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
又例如
int elapsedTimeInDays;
int d; // elapsed time in days
前者使用的表明意图的名称比注释更清晰
2.避免误导
例如使用accountList时,要小心,这向阅读者传达的信息是,这是一个List,但如果不是列表,而只是一个数组。简单的使用accounts或者accountGroup比较安全
3.使用有意义的区分
在一段代码中清除存在相同类型的两个不同变量
public static void copyChars(char a1[], char a2[]) {}
public static void copyChars(char source[], char destination[]) {}
后者的区分更有意义
又例如类名Product,ProductInfo,ProductData三个类在区分上很不明确,不能直接看出三个类的区别
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
这个三个方法名也会给使用者带来麻烦
4.使用可发音的命名
一个经典的例子就是genymdhms(generation date, year, month, day, hour, minute, and second),这个方法无法发音,就不方便和他人交流。generateTimeStamp是个更好的名字。
例如
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint = "102";
/* ... */
};
重构为
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;;
private final String recordId = "102";
/* ... */
};
5.使用能搜索的名称
for (int j=0; j<34; j++) {
s += (t[j]*4)/5;
}
其中的产量数字,不能有效搜索到,不方便修改。
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for (int j=0; j < NUMBER_OF_TASKS; j++) {
int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
这段更长的代码更方便搜索和修改
6.避免在名称中编码附加信息
例如,匈牙利命名法,m_或_前缀,IShapeFactory接口前缀I,现在的IDE已经可以更有效的完成前三种的功能,已经没有这样使用的必要了。
7.类名使用名词单数形式Customer, WikiPage, Account
8.方法名使用动词或动词短语postPayment, deletePage, save
9.同一个单词使用同一种命名
例如fetch,retrieve,get三者表示同一个意思,最好统一使用一个
10.使用程序编写领域的名词
例如AccountVisitor,JobQueue,UserFacade
11.使用问题领域的名词
12.添加有意义的上下文
private void printGuessStatistics(char candidate, int count) {
String number;
String verb;
String pluralModifier;
if (count == 0) {
number = "no";
verb = "are";
pluralModifier = "s";
} else if (count == 1) {
number = "1";
verb = "is";
pluralModifier = "";
} else {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
String guessMessage = String.format(
"There %s %s %s%s", verb, number, candidate, pluralModifier
);
print(guessMessage);
}
重构为
public class GuessStatisticsMessage {
private String number;
private String verb;
private String pluralModifier;
public String make(char candidate, int count) {
createPluralDependentMessageParts(count);
return String.format(
"There %s %s %s%s",
verb, number, candidate, pluralModifier );
}
private void createPluralDependentMessageParts(int count) {
if (count == 0) {
thereAreNoLetters();
} else if (count == 1) {
thereIsOneLetter();
} else {
thereAreManyLetters(count);
}
}
private void thereAreManyLetters(int count) {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
private void thereIsOneLetter() {
number = "1";
verb = "is";
pluralModifier = "";
}
private void thereAreNoLetters() {
number = "no";
verb = "are";
pluralModifier = "s";
}
}
就能给number,verb和pluralModifier提供一个很清晰的上下文
13.不要添加没有必要的上下文
例如一个应用程序交Gas Station Deluxe,没有必要在所有东西前面添加GSD。QT的所有类前加Q就是没有必要的。
分享到:
相关推荐
《Clean Code》中文完整版.pdf 这本书是软件开发领域中一本经典的著作,由著名软件工程师Robert C. Martin(Bob大叔)撰写。《Clean Code》强调编写整洁、可读性强的代码,这对于任何软件项目的长期维护和扩展至关...
- **描述**:“Writing Clean Code中文版 好东西大家分享”暗示本书是编程领域的一份珍贵资源,鼓励读者分享此书以传播有价值的知识。 #### 标签解析 - **标签**:“Writing Clean Code”、“C”、“C语言”、...
### CleanCode概述 《CleanCode》是一本关于提高软件开发质量的经典著作,它不仅强调了良好的架构和项目管理的重要性,还特别突出了代码本身的质量对于软件成功的关键作用。书中提出了“整洁代码”的概念,即代码的...
1. **命名规范**:使用有意义的变量、函数和类名,避免使用缩写和模糊的命名。 2. **单一职责原则**:每个函数、类或模块应有且仅有一个明确的责任,避免“大泥球”现象。 3. **开闭原则**:对扩展开放,对修改关闭...
书籍的英文原名是《Clean Code: A Handbook of Agile Software Craftsmanship》,中文版则译为《代码整洁之道》。全书通过大量的编程实践和案例,强调了代码质量和整洁度之间的直接关系,指出了干净的代码不仅在质量...
书中强调了选择有意义的名称对于理解代码逻辑的重要性。 - **实践建议**: - 使用清晰、描述性强的名称。 - 避免使用缩写,除非它们是广泛认可的标准缩写。 - 一致地使用大小写规则,例如使用`camelCase`或`snake...
《Clean Code》是由著名软件工程师Robert C. Martin(也被称为Uncle Bob)撰写的一本经典著作,这本书在Java开发者中享有极高的声誉,是提升代码质量和编程习惯的必备读物。"Clean Code"这一标签恰好反映了这本书的...
《Clean Code》是软件开发领域一本非常经典的书籍,由Robert C. Martin(也被称为Uncle Bob)撰写。这本书深入探讨了编写整洁、可读、可维护代码的重要性,旨在提升软件开发人员的职业素养和代码质量。在阅读这本书...
《Clean Code》是由著名软件工程师Robert C. Martin(Uncle Bob)所著,是一本关于敏捷软件开发中编写高质量代码的指南。这本书以其深入浅出的写作风格,从实践出发,结合理论,再回归实践,揭示了编写“干净代码”...
- 使用有意义的名字。 - 避免缩写或过于简化的名字。 - 保持一致性,比如变量名和函数名的命名风格统一。 ##### 2. 断言的使用 - **定义**: 断言是一种用于调试的编程技术,用于验证程序中的假设条件是否成立。 ...
整洁的代码遵循良好的命名规则,有明确的函数和类职责,避免过长的方法和过多的参数,同时注重注释与文档的适度使用。 2. **设计原则**:书中讨论了SOLID原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换...
1. **命名规范**:清晰、有意义的变量、函数和类名是Clean Code的基础。避免使用缩写和模糊的命名,尽量使名字能反映出其用途和作用。 2. **单一职责原则**(SRP):每个函数、方法或类应只做一件事。如果一个函数...
《代码整洁的JavaScript》一书将软件工程中的“Clean Code”原则应用于JavaScript编程,以帮助开发者编写可读性强、易于重用及重构的代码。本书并不是传统意义上的代码风格指南,而是围绕着一系列软件工程的最佳实践...
使用有意义的变量名、函数名,可以使代码自解释,减少理解成本。 3. **简洁性**:简洁的代码意味着去除冗余和不必要的复杂性。通过合理地拆分函数和模块,保持函数小而专注,可以提高代码的可测试性和可维护性。...
- **高级程序员和架构师**:对于已经有一定经验的开发者来说,本书中的高级技术和实践策略同样具有很高的参考价值。 - **项目经理和团队负责人**:通过学习本书,可以更好地理解高质量代码的重要性,并能够制定出更...
1. **有意义的命名**:变量、函数、类等命名应当准确反映其用途,避免使用模糊不清或过于简略的标识符。例如,`userList` 比 `ul` 更具描述性。 2. **函数的单一职责**:每个函数应当只做一件事,并且做好。避免...
书中的目录结构清晰,从命名约定、编写优质代码的背景知识,到具体的技术章节,如使用断言、对子系统的防护,以及对代码的逐条跟踪等,再到最后的编码态度问题。附录部分还包含编码检查表、内存登录例程以及练习答案...