一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

重構(gòu)之美之一避免復(fù)制與粘貼

  在開發(fā)過程中,當(dāng)你發(fā)現(xiàn)代碼可以Copy-paste時,就意味著代碼出現(xiàn)了重復(fù)。這是一種典型的反模式。William J.Brown等在著作AntiPatterns-Refactoring Software,Architecture, and Projects in Crisis(即《反模式——危機中軟件、架構(gòu)和項目的重構(gòu)》)中認為這種形式的復(fù)用讓開發(fā)的代碼行數(shù)量虛假地增加,但是不能像其他形式的復(fù)用一樣降低成本。Copy-Paste代碼的方式違背了DRY(即不要重復(fù)你自己)原則,使得多處地方出現(xiàn)了同樣或者相似的代碼。這是一種征兆,一旦在方法中或方法之間開始Copy-Paste操作,就意味著需要采用Extract Method重構(gòu)手法。在提取方法之后,還可以根據(jù)情況利用Move Method重構(gòu)手法,將其搬移到一個類中,然后在原來的調(diào)用處轉(zhuǎn)為對該類方法的調(diào)用。或者利用Replace Method with Method Object,將這些職責(zé)封裝為專有的類。  

  在我的編程生涯中,碰到類似Copy-Paste的情況簡直不勝枚舉。在一次項目中,我們對開源項目JASPer Report進行了擴展。我們加入了對新報表類型(CJT_REPORT)的支持。在ReportParameterAction類中,我們需要對報表對象ReportUnit判斷報表類型。于是,我在ReportParameterAction類中定義了如下的私有方法: 

private void setReportUnitTypeByFileResource(ReportUnit reportUnit) { 
final String JS_FILE_TYPE
= "jrxml";
ResourceReference reference
= reportUnit.getMainReport();
if (reference.isLocal()) {
FileResource resource
= (FileResource)reference.getLocalResource();
String fileType
= resource.getFileType();
if (fileType.toLowerCase().equals(JS_FILE_TYPE)){
reportUnit.setReportType(ReportUnit.JS_REPORT);
}
else {
reportUnit.setReportType(ReportUnit.CJT_REPORT);
}
}
}

it知識庫重構(gòu)之美之一避免復(fù)制與粘貼,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品无内丝袜高跟鞋 | 日本乱中文字幕系列在线观看 | 亚洲国产精品一区二区三区在线观看 | 久久精品国产精品青草不卡 | 日日噜噜噜夜夜爽爽狠狠视频 | 97碰公开在线观看免费视频 | 久久综合一区二区三区 | 久久99精品国产99久久 | 国产原创精品视频 | 久久伊人色综合 | 浮力影院第一页小视频国产在线观看免费 | 乱码一区二区三区完整视频 | 日韩美女va毛片在线播放 | 久久综合精品国产一区二区三区 | 日本视频一区二区 | 91视频社区 | 污免费观看 | 亚洲成人国产精品 | 久久久午夜精品理论片 | 国产精品视频第一区二区三区 | 国产精品免费久久久久影院小说 | 国产一区二区在免费观看 | 成人免费看片视频色多多 | 成人a视频在线观看 | 视频精品一区二区三区 | 五月天最新网址 | 国产成人亚洲综合一区 | 欧美福利网 | 97av视频| 涩涩爱网站 | 国产男女爱视频在线观看 | 精品国产一区二区二三区在线观看 | 美女很黄很黄是免费的 | 四虎影视在线永久免费观看 | 激情五月在线 | 日本激情视频网站w | 91久久福利国产成人精品 | 久久精品亚瑟全部免费观看 | 中文字幕色站 | 国产亚洲小视频 | 成年超爽大片免费视频播放 |