Clean Code – Chapter 2: Meaningful Names
- Use Intention-Revealing Names
The name should tell you why it exists, what it does, and how it is used.
e.g.
Bad code:
public List<int[]> getThem(){
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}Good code:
public List<int[]> getFlaggedCells(){
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}Better code:
public List<Cell> getFlaggedCells(){
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
} - Avoid Disinformation
- Make Meaningful Distinctions
Bad code:
public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i< a1.length; i++) {
a2[i] = a1[i];
}
}Good code:
Change the name
a1,a2tosourceanddestination. - Use Pronounceable Names
这条对于我们中国人来说就不合适了,命名时还是不要用汉语拼音。
- Use Searchable Names
The length of a name should correspond to the size of its scope.
- Avoid Encodings
- Hungarian Notation
特定时代的产物,随着一些现代的集成开发环境的引入,已不建议使用了。(参考维基百科词条:匈牙利命名法)
- Member Prefix
- Interfaces and Implementations
leave interface unadorned.
prefer to encoding implementations than interfaces.
e.g. prefer to use the name
ShapeFactoryImprather thanIShapeFactory.关于这一点,在上面提到的“匈牙利命名法”维基百科词条最后也有相关说明:
.NET Framework,微软新的软件开发平台,除了接口类型一般不适用匈牙利命名法。在 .NET 中,习惯在接口类型前放一个
I(例如 Windows Forms 中的IButtonControl接口。).NET Framework 指导方针建议程序员不要用匈牙利命名法,但是没有指明不要用系统匈牙利命名法还是匈牙利应用命名法,或者是两者都不要用。与此对比,Java 的标准库中连接口类型也不加前缀。
即 Java 的命名法则与作者的观点一致。
- Hungarian Notation
- Avoid Mental Mapping
Clarity is king.
- Class Names
noun or noun phrase names
- Method Names
verb or verb phrase names
- Don’t Be Cute
Say what you mean. Mean what you say.
- Pick One Word per Concept
- Don’t Pun
- Use Solution Domain Names
use computer science terms, algorithm names, pattern names, math terms and so forth.
- Use Problem Domain Names
When there is no “programmer-eese” for what you’re doing.
Separating solutions and problem domain concepts is part of the job of a good programmer and designer. The code has more to do with problem domain concepts should have names drawn from the problem domain.
- Add Meaningful Context
Bad code:
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);
}Good code:
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 thereAreNoLetters() {
number = "no";
verb = "are";
pluralModifier = "s";
} private void thereIsOneLetter() {
number = "1";
verb = "is";
pluralModifier = "";
} private void thereAreManyLetters(int count) {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
} - Don’t Add Gratuitous Context
Clean Code – Chapter 2: Meaningful Names的更多相关文章
- Clean Code – Chapter 3: Functions
Small Blocks and Indenting The blocks within if statements, else statements, while statements, and s ...
- Clean Code–Chapter 7 Error Handling
Error handling is important, but if it obscures logic, it's wrong. Use Exceptions Rather Than Return ...
- Clean Code – Chapter 4: Comments
“Don’t comment bad code—rewrite it.”——Brian W.Kernighan and P.J.Plaugher The proper use of comments ...
- Clean Code – Chapter 6 Objects and Data Structures
Data Abstraction Hiding implementation Data/Object Anti-Symmetry Objects hide their data behind abst ...
- Clean Code – Chapter 5 Formatting
The Purpose of Formatting Code formatting is about communication, and communication is the professio ...
- “Clean Code” 读书笔记序
最近开始研读 Robert C.Martin 的 “Clean Code”,为了巩固学习,会把每一章的笔记整理到博客中.而这篇博文作为一个索引和总结,会陆续加入各章的笔记链接,以及全部读完后的心得体会 ...
- clean code meaningful names
---恢复内容开始--- Meaningful Names: use Intention-Revealing Names //nice,Everyone who reads your code (in ...
- [转]Clean Code Principles: Be a Better Programmer
原文:https://www.webcodegeeks.com/web-development/clean-code-principles-better-programmer/ ----------- ...
- 代码整洁之道Clean Code笔记
@ 目录 第 1 章 Clean Code 整洁代码(3星) ?为什么要整洁的代码 ?什么叫做整洁代码 第 2 章 Meaningful Names 有意义的命名(3星) 第 3 章 Function ...
随机推荐
- DataGrid表格控件
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--& ...
- notepad++ 开启/关闭 记住最后打开的文件
开启记住最后打开的文件 1) 6.3以前版本如下设置: 设置-->首选项-->其他 把左下角的 "记住最后打开文件" 勾选. 2) 6.3以后版本如下设置: 设置--& ...
- 浏览器对象模型(BOM)
BOM结构 用户浏览网页的时候,浏览器会自动创建一些对象,这些对象存放着浏览器窗口的属性和相关信息,也就是大家熟称的BOM.浏览器对象模型是一个层次化的对象集,我们可以通过window对象访问所有对象 ...
- jquery 请求jsp传递json数据的方法
$(function() { $("a[name=hrefID]").click(function() { var id = $(this).attr("id" ...
- 可以继承的C++ Singleton基类
单例模式(Singleton Pattern)是设计模式中的一种,它用来保证系统中最多只能存在一个它的实例,其做法是由类自身来创建和持有它的对象实例,把对实例的创建权和管理权都控制在自己手中,以便控制 ...
- 在线学习SQL语句?没问题~~
以前弄得少,没注意.. http://sqlfiddle.com/ CREATE TABLE Presidents ( Id INT UNSIGNED NOT NULL AUTO_INCREMENT, ...
- IntelliJ Idea12 破解码与中文乱码配置
user name:JavaDeveloper serial number:92547-KY2BB-QZ0S1-PEZCV-HUT8Q-6RYY4 会出现Ok可以点击就会将软件 安装后, ...
- Nginx的介绍和使用
http://blog.csdn.net/shimiso/article/details/8690897 1.什么是Nginx Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向 ...
- WCF之各种WCF引用方式
写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法. 准备工作: 1.创建解决方案WCFService(当然名字可以任 ...
- UnsupportedClassVersionError: Bad version number in...
在使用eclipse开发servlet可能会出现一个很麻烦事情,版本不一致错误. java.lang.UnsupportedClassVersionError: Bad version number ...