您所在的位置:开发 > 项目&管理 > 敏捷开发中如何保持代码的简洁(1)

敏捷开发中如何保持代码的简洁(1)

2008-03-28 13:25 Wingel JavaEye 字号:T | T
一键收藏,随时查看,分享好友!

本文讲述敏捷开发的必要技巧4:保持代码的简洁。

AD:

示例

这是一个会议管理系统。它用来管理所有参会者的信息。刚开始的时候,我们只需要记录每个参会者的ID(这是会议组织者分配的),姓名,电话和地址就行。于是,我们写了如下的代码:

class Participant {   
String id;                                 
String name;                                  
String telNo;                                   
String address;                          
}   

class ConferenceSystem {                              
Participant participants[];   
}                     


接着,新的需求来了:现在每个参会者都可以让组织者帮忙预订酒店,所以我们要记录下他想预订的酒店名,入住日期,离开日期,房间类型(单人房或者双人房)。于是我们又扩充成如下的代码:   

class Participant {                         
String id;                                           
String name;                                                  
String telNo;                                          
String address;                                               
boolean bookHotelForHim;                      
String hotelName;                                         
Date checkInDate;                                               
Date checkOutDate;                                          
boolean isSingleRoom;                                                
void setHotelBooking(String hotelName, Date checkInDate, ...) {  
...                                       
}                                                                
}                         

接着,又有一个新的需求来了:参会者可以参加不同的研讨会,所以我们要记录下参会者参加的研讨会。对于他要参加的每一场研讨会,我们还要记录下他的登记时间,同时他还需要什么翻译设备。于是代码又扩充成:

class Participant {                                                               
String id;
String name;
String telNo;
String address;
boolean bookHotelForHim;
String hotelName;
Date checkInDate;
Date checkOutDate;
boolean isSingleRoom;
String idOfSeminarsRegistered[];
Date seminarRegistrationDates[];
boolean needSIDeviceForEachSeminar[];
void setHotelBooking(String hotelName, Date checkInDate, ...) {
...
}   
void registerForSeminar(String seminarId, Date regDate, boolean needSIDevice) {
//将seminarId加到idOfSeminarsRegistered
//将regDate加到seminarRegistrationDates
//将needSIDevice加到needSIDeviceForEachSeminar.
}   
boolean isRegisteredForSeminar(String seminarId) {
...
}   
Date getSeminarRegistrationDate(String seminarId) {
...
}   
boolean needSIDeviceForSeminar(String seminarId) {
...
}   
String [] getAllSeminarsRegistered() {
return idOfSeminarsRegistered;
}   
}      


代码开始肿胀起来了

请注意,这已经是我们第二次扩充Participant这个类了。每扩充一次,它就包含了更多的代码(实例变量和方法)及更多的功能。本来它只有4个属性。现在已经是12个了!此外,这个类要处理的业务逻辑也极大的增加了。本来它只需要处理参会者的基本信息(姓名,地址等等),现在它还要包含酒店,酒店预订,研讨会和翻译设备等等的逻辑。如果以后新的需求又来了,我们又要扩充Participant这个类,到时候,这个类要复杂庞大成什么样子!

所以我们得修整这个类了!

那怎么修整Participant这个类呢?怎么让它一直保持在第一天那样的简洁度?在回答这两个问题之前,我们先来考虑一下另一个需要优先回答的问题:给你一个类,你怎么认定它需要修整?

怎么判断一个类需要修整

要判断一个类是否需要修整,一个比较主观的方法是:当在读一个类的代码时,看看我们会不会觉得这个类“太长了”,“太复杂了”,或者讲的概念“太多了”?如果会这样觉得的话,我们就认定,这个类需要修整。

另外一个比较简单而且客观的方法是:当发现我们已经在第二次或者第三次扩充这个类的时候,我们认定这个类要修整了。这是一个比较”懒惰,被动”的方法,但却很有效。

现在让我们看一下怎么修整Participant这个类吧!

内容导航



分享到:

热点职位

更多>>

热点专题

更多>>

读书

Eclipse从入门到精通(第2版)
本书为《Eclipse从入门到精通》一书的全新改版。本书以最新的Eclipse 3.2作为写作版本。全书分为5篇:起步篇介绍了Eclipse及相关

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院