天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

重構之美之一避免復制與粘貼

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

  在我的編程生涯中,碰到類似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知識庫重構之美之一避免復制與粘貼,轉載需保留來源!

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

主站蜘蛛池模板: 亚洲AV无码A片在线观看蜜桃 | 久久大胆视频 | 99精品免费在线观看 | 最近中文字幕mv手机免费高清 | 亚洲欧美中文字幕先锋 | 伊在香蕉国产在线视频 | 日本男女动态图 | 性生交片免费无码看人 | 色综合久久88色综合天天提莫 | www.x日本| 国产午夜精品久久理论片小说 | 攻把受做哭边走边肉楼梯PLAY | 男人插女人逼逼 | 色欲久久99精品久久久久久AV | 国产永久免费观看视频软件 | 日本夜爽爽一区二区三区 | 亚洲欧美日韩另类精品一区二区三区 | 国产精品嫩草影视在线观看 | 少妇伦子伦精品无码 | 无码国产成人777爽死在线观看 | 免费看a视频 | 精品无码久久久久久久久 | 久久综合久久鬼色 | 石原莉奈rbd806中文字幕 | 丝袜情趣在线资源二区 | 精品视频免费在线观看 | 色鲁97精品国产亚洲AV高 | 日本在线免费 | 亚洲国产欧美日本大妈 | 午夜日韩久久影院 | AV亚洲精品少妇毛片无码 | 国产精品成人久久久久A伋 国产精品成人观看视频免费 | 和老外3p爽粗大免费视频 | 在线不卡中文字幕 | 久久99亚洲热最新地址获取 | 我的漂亮朋友在线观看全集免费 | 亚洲白色白色在线播放 | 毛片网站视频 | 丰满的美女射精动态图 | 国内精品免费视频精选在线观看 | 久久精品国产免费播高清无卡 |