敏捷软件开发

发表于:2008-2-29 17:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

CamelCase

  CamelCase里的一切、类名称都以大写字母开始,而方法和字段的名称则不需要。

  任何内容都不要放在有大括号的那一行。

字段以下划线开头:
 _fieldname
 
变量名不以下划线开头:
 variableName
 
方法:
 public void methodName(String stringValue)
 

接口公开

  公共方法在类的最上部,后面跟有受保护的方法,然后才是私有方法。将所有继承自抽象类或者实现结构的方法都靠前放置,这是一个好主意。

  尽可能做到立即就能找到一个类,并马上可以感觉到其功能以及它如何实现该功能,而不需要滚屏。

方法和类的名称

  让其名称能够说明其功能。注意,不同的开发人员对于什么样的方法可读有不同的看法,他们更喜欢从周围的类,甚至是方法里的参数看出其作用。对这一点还存在争议,但是从名字来判断一个方法的作用是肯定可行的,因此:
doIForAllX()
就不理想,但是:
setupAllTableRowItems()
就很好。

而:
createRows()
可能更好。

[getVarvscalculateVar, 直接的getter对方法]

[不要将查询与作业混在一起]

方法的抽象

  方法里的代码的抽象程度应该与同一个方法里其他所有代码的相同。这样的话,事件的自然过程能够被弄清楚。例如:

public void initializeDataBase()
{
  _connection = createConnection ();
  setUpTable();.
  For (inti=0;i<tableRows;i++)
    SetUpTableRow(i);
}

  你稍稍一瞥,不用费什么功夫就可以读懂它。我们在3Q的时候非常珍惜视力,所以把这段代码变成了几个清晰明了的步骤,就像下面这样:

public void initializeDataBase()
{
  setUpConnection();
  setUpTable();
  setUpTableRow();
}

这就有可能:

1.感觉到事情进展得怎么样

2.很容易就浏览到我们希望找到的类的确切部分(如果我们对表格行的设置感兴趣,我们就按住Ctrl点击setUpTableRow())。

  得墨忒尔法则(Law of Demeter,即最少知识法则)

  类应该只能够访问那些可以直接从其字段或者变量访问到的方法。对送进来的对象或者类自行实例化的对象的参考也是如此。

  一般情况下,不要这么做……

publicintcalculateRetirementFund()
{
return getClient().getRetirementDetails().getRetirementFund();
}

……而要这么做:

public void calculateRetirementFund (RetirementDetails details)
{
return details.getRetirementFund();
}

  这有助于为类设定范围并减少不必要的方法调用和委派。

顺序选择迭代

  一般可以将方法分为下面三种类型。一系列事件,一个接一个;对集合的搜索或过滤;以及对集合或者数组的迭代。

  收集方法、向量创建、向量设置、向量功能(vector dosomething)

  集合一次又一次地出现,每次都是同样的问题,主要同类型有关。如果在集合里有一个任意的运行库强制转换(casting),那么总有出现错误类型的机会,导致强制转换异常的出现。

  让集合变成可以针对具体类型,这使得在编译的时候检查往集合里加入的内容成为可能,同时还让根据类型来适应自定义的集合方法变得更容易。

  不要使用临时变量——用查询来替代临时变量

  在有关重整的书上查找这个内容——“用查询来替代临时变量”,最好不要抱着临时变量不放,它会增加代码的复杂性,给阅读者带来困难,同时减少了对算法作进一步重整的可能性。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号