九部迈向优秀软件设计?——《The ThoughtWorks Anthology》感悟

以我目前的水平与经验实在是不该读这本书。将《The ThoughtWorks Anthology》中文名译为《软件开发沉思录》,可见译者是用心了。此书收录多篇短文,探讨敏捷开发需要注意到的方方面面,倒是经验之谈。可惜我经验不足,完全没法理解。

书中一篇名为《对象健身操》提出来优秀软件设计练习需要遵守的九项规则:

1.方法只使用一级缩进(我有些惊讶)

2.拒绝使用else关键字(这可能吗?我相当惊讶)

3.封装所有的原生类型和字符串(这个还好)

4.一行代码只使用一个“.”运算符

5.不要使用缩写(麻烦了)

6.保持实体对象简单清晰

7.任何类中的实体变量都不要超过两个

8.使用一流的集合

9.不使用任何Getter/Setter/Property

 

来看两个奇怪的

规则1:方法只使用一级缩进

例子是

 

代码
class Board{
....
String board(){
StringBuffer buf
=new StringBuffer();
for(int i=0;i<10;i++){
for(int j=0;j<10;j++)
buf.append(data[i][j]);
}
return buf.toString();
}

}

 

 

改为

 

Class Board{
...
String board(){
StringBuffer buf
=new StringBuffer();
collectRows(buf);
Return buf.toString();
}

void collectRows(StringBuffer buf ){
for(int i=0;i<10;i++)
collectRow(buf,i);
}
void collectRow(StringBuffer buf,int row){
for(int i=0;i<10;i++)
buf.append(data[row][i]);
buf.append(
"\n");
}

 

我的理解是将稍微有些大的函数都分成最小的了。当然函数太长必然不好,可弄出这么多这么短的函数,真的有益于项目开发吗?

 

2.拒绝使用else关键字

这看起来最不可思议,例子如下

 

public static void endMe(){
   if(status==DONE)
        dosomething();
   else
        <other>
}

作者推荐这样去掉else

 

public static void endMe(){
   if(status==DONE){
        dosomething();
       return();
   }
        <other>
}
还有个例子:
public static Node head(){
   if(isAdvancing()) 
       return first;
   else
        return last;
}
这么改
public static Node head(){
    return isAdvancing()? first:last;
}
这么一看似乎我也经常写些不用else的代码,但要全部禁用else关键字,有必要么?
由于我没啥经验,希望大家探讨一下

 

 

 

 

posted on 2010-01-09 20:48  超然台上仙  阅读(1910)  评论(3编辑  收藏  举报

导航

Find more freelance jobs on GetAFreelancer