代码整洁之道(Clean Code)学习中。。。

第二章 有意义的命名

2.2名副其实

int d;//elapsed time in days
int elapsedTimeInDays;

如上述两个变量名所示,变量d就不是名副其实。

请观察下段代码,说明该段代码的目的

public List<int[]> getThem(){
		List<int[]> list1=new ArrayList<int[]>();
		for(int[] x:thelist)
			if(x[0]==4)
				list1.add(x);
		return list1;
	}

可以看出上面的代码存在如下问题:
1 theList 代表什么意思
2 theList零下标的意义是什么
3 值4 代表什么
4 该方法的作用是什么
将上面的代码修改之后得到,下段代码根据函数的命名和代码就可以轻松的看出该函数的作用。

public List<Cell> getFlaggedCells(){
		List<Cell> flaggedCells=new ArrayList<Cell>();
		for(Cell cell:gameBoard)
			if(cell.isFlagged()){
				flaggedCells.add(cell);
			}
		return flaggedCells;
}
class  Cell{
	int[] cell;
	int STATUS_VALUE=0;
	int FLAGGED=4;
	public Cell(int[] cell) {
		this.cell = cell;
	}
	public boolean isFlagged(){
		return cell[STATUS_VALUE]==FLAGGED;
	}
}

2.3 避免误导

1 hp、aix和sco都不应该用作变量名,因为他们是Unix平台或类Unix平台的专有名称
2 别用accountList来指一组账号,除非他真的是一个List类型。可以使用accountGroup或者bunchOfAccounts
3 提防使用外形相似度较高的名称
4 误导性真正可怕的例子是用小写字母l和大写字母O作为变量名

int l=1;
int O=0;

2.4 有意义的区分

1 不要妄想通过添加数字来区分不同的变量
2 不要做无意义的区分,比如“zork”和“theZork”,“name”和“nameString”,下面的三个方法,也并没有清楚的区分
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();

2.5 使用读得出来的名字

对比下面两段代码的命名方式

class DtaRcrd102{
	private Date genymdhms;
	private Date modymdhms;
}
class Customer{
	private Date generationTimestamp;
	private Date modificationTimestamp;
}

2.6 使用可搜索的名称

若变量或常量可能在代码中多处使用,则应赋予其便于搜索的名称,对于单字母名称和数字变量是很难在一大段代码中找到的

2.9类名

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

2.10方法名

方法名应该是动词或者动词短语,如deletePage或save
属性访问器(accessor)、修改器(mutator)和预测(predicate)应该根据其值命名,并依据Javabean标准加上前缀get、set和is

2.14

记住只有程序员会读你的代码,所以使用解决方案领域的名称而不是依据问题所涉领域来命名

第三章 函数

3.1短小

函数的第一条规则就是要短小,20行封顶最佳

3.2 只做一件事

函数应该只做一件事

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值