精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你寫的代碼就是你的犯罪證據

新聞
最近我工作的主要內容,是在和別人結對編程,以對一個大型的遺留系統項目進行重構。過程中,我發現一個特別有意思的東西,我重構了很多的 if 語句。從這些 if 語句里,大抵是映射出了業務的變化。于是,我便想寫一篇文章來記錄一下相關的心得。

 最近我工作的主要內容,是在和別人結對編程,以對一個大型的遺留系統項目進行重構。

[[283642]]

過程中,我發現一個特別有意思的東西,我重構了很多的 if 語句。從這些 if 語句里,大抵是映射出了業務的變化。于是,我便想寫一篇文章來記錄一下相關的心得。

你寫的 if 就是你的犯罪證據

業務的復雜性,導致了架構的復雜性。在這些代碼故事里,發生得最多的地方就是 if 語句。所以,你可以從大部分的 if 語句里,看到一些代碼上的壞味道。

業務條件復雜

你先寫了一個 if 語句里面只有一個條件,沒問題。但是后來的人,又加了一個條件,因為業務上確實需要這么做。于是,后來,又不得加了一個if 語句,導致了這個條件變得更加復雜。

  1. if(isCondition && isNotASwitchCase && .... && ....) { 
  2.  

所以,完了,這些代碼越來越難以維護。

于是,我們應對于這類條件判斷,有兩種做法:提取變量和提取方法。當你的判斷條件是一個方法的時候,你可以想象一下它的架構是多么的復雜。

難以閱讀的字符串判斷

開始的人加了一個簡單的條件判斷,因為當時真的只有這么一種業務場景。你又不能過度設計,成一個 switch-case。但是,后來又多了好多個場景。

  1. if(aCondition =="A") { 
  2.  
  3. } elseif(bCondition =="B") { 
  4.  
  5.  

更不要提有人在每個 if 里寫一個: if (myString.toUpperCase.equals(myOtherString.toUpperCase))。

針對于有限的 if 語句來說,可以轉為 switch case(在 IDEA 里只需要 alt + enter 就可以自動完成)。

隨著時間的推移我們的條件越來越復雜,我們的 if 語句會越來越復雜。

多層嵌套 if 語句

隨著 if 條件進一步擴大化,我們的條件語句就變成了一個多層嵌套的循環語句。每多一層嵌套代碼復雜度就 * 2,它的閱讀難度就越來越大。于是乎:

  1. if(condition) { 
  2.  
  3. if(blabla) { 
  4.  
  5. ... 
  6.  
  7.  

面對這一類 if 條件語句,我們能所做的就是:

  • 提供方法
  • 反轉 if 語句

諸如于:

  1. if(!condition) {return}; // 為了演示方便 
  2.  
  3. if(blabla){...} 

又或者是諸如于三元表達式,不過我討厭難以閱讀的三元表達式——但是,只是 true 和 false 的情況下,還是相當不錯的。

復雜的 if 塊內邏輯

當業務進一步復雜化的時候,我們的 if 條件里就充斥著各種各樣的邏輯。

  1. if(conditionA) { 
  2.  
  3. blablaA; 
  4.  
  5. blaA(blabla).blabla; 
  6.  

我們的 if 方法隨之變得越來越長,于是嘗試去抽成一個方法。但是,當你又遇到一個新的場景時,你又加了一個 if 語句。后來,又又加了一個 if 語句。你才發現說,『咦,不對,這些 If 語句違反了開閉原則』。

于是,你嘗試把代碼重構成多態以替換 if 語句。

你開心的話,還可以轉為 Factory + Strategy。

你開心的話,你也可以將它轉為 HashMap 。

但是,在你寫下第一個 if 的時候,你并不知道它會變成什么樣的。所以,不要提前去把它轉為這么復雜的架構。

上帝 if

如果你的業務場景真的超級復雜,那么你可能會看到一個非常長的 if 代碼。它可能有幾十個條件,有幾百行到幾千行的規模。

那么,你可以嘗試使用注冊表模式+ 注解,通過反射的方式來重構你的 if 語句。

重構

在你進一步修改代碼之前,讓我們來又雙叕明確一下什么叫重構

重構(Refactoring)就是通過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提高軟件的擴展性和維護性。

換句話來說,重構只是在改善現有的代碼,使其更易于閱讀,換句話來說就是:Clean Code。而當我們說整潔的代碼(Clean Code),說的是易于理解、修改和測試的。易于理解和修改意味著:

  • 易于理解整個系統的架構
  • 易于理解整個應用程序的執行流程
  • 易于理解不同對象如何相互協作
  • 易于理解理解每種方法的作用
  • 易于理解每個表達式和變量的目的是什么

而易于理解的前提便是能讓每個團隊成員快速理解。(PS:當然了,若是有些人智商不夠或者經驗不夠,他/她需要去需要去增強這方面的能力)。這便意味著,出于這樣的目的,你不能編寫過于抽象、簡練的邏輯。而你又不能寫得過于繁瑣,充滿大量地無用字符。

若是想使代碼易于測試,則要先使代碼可測試。而在這沒有測試之前,我們是難以對代碼進行大規模重構。所以,我們就陷入了一個死循環,沒有測試,測試不了,沒法重構。

WHY

等等,那我們為什么要進行重構呢?為了 ¥¥¥¥¥¥¥$$$$$$$$$ => 快速發布軟件。

當軟件是一個產品而不是一個項目的時候,我們就需要不斷發布新功能,以滿足客戶的要求。而為了快速發布應用,我們需要讓每次的改動最小,測試最少,才能實現快速發布。基于這樣一個目標,我們會發現我們的諸多實踐都是以此為出發點的。比如說,我們采用插件化、微服務化、組件化的方式,都是為了將軟件的改動變小,這樣一來,就減少了相應部分的測試工作,從某種意義上來說,就加快了軟件發布的流程,從而更好的實現業務價值。因此,我們的第一步就是使二進制改動最小。而要做到二進制改動最小,那么我們就要做到高內聚、低耦合。

因此,不論是在編程還是在設計架構的時候,我們都要盡量滿足 SOLID 五項原則中的:

  • 單一職責原則:它規定一個類應該只有一個發生變化的原因。
  • 開閉原則:軟件中的對象應該對于擴展是開放的,但是對于修改是封閉的。

回到問題上

既然,我們都已經知道了,如何去重構,如何用設計模式來解決問題。那么,我們會讓我們的代碼變得更好嗎?不會,因為在流水線式的生產里,每個人都能找到合理的理由。

我們日常開發的模式是:紅-綠-重構。而因為時間的原因,我們少去了重構這一步。

上吊繩驅動開發

在上吊繩(deadline)的驅動下,我寫了一這篇文章。盡管預先寫好了文章的大綱,但是有很多字是打錯的。

而對于真實的業務開發來說,要事先設計好相關功能的架構,意味著你得有充足的時間。這樣一來說,你在大的方面上才不會犯錯。可是呢,你真的有那么多的時間可以設計嗎?你今天加的班,還好嗎?

代碼所有權

改動了你的代碼,我就要負責。所以,我不去修改別人的代碼。

懼怕修改

沒有測試,難以理解代碼背后的業務原因。外加之組織文化,導致的溝通障礙;又或者是大家都很忙,沒人愿意解釋/回顧一下這一塊的代碼。

能力不夠

對,大部分的問題本質都是人的問題。

因為你只需要按下 IDEA 的快捷鍵,就能完成上面的大部分重構工作。當然了,需要有技巧的按,而不是像 Monkey 一樣彈鋼琴。

結論

開心就好。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2014-11-11 14:52:28

程序員工程師

2020-02-20 10:45:57

代碼JS開發

2015-08-13 14:44:32

電子票據影像系統信雅達華為

2010-08-18 09:07:26

數據泄密防護DLP公司數據

2021-09-08 18:35:31

系統調試日志

2012-07-11 13:35:53

代碼

2017-12-19 15:20:47

代碼應用架構

2016-05-13 17:14:51

華為HTML5

2022-12-06 09:03:44

代碼fork系統

2019-11-22 09:30:59

設計Java程序員

2020-04-03 14:55:39

Python 代碼編程

2018-04-17 11:47:06

if代碼參數

2015-07-17 10:02:48

寫代碼

2019-05-23 09:51:06

2023-12-07 12:43:33

2017-10-31 10:12:12

無人駕駛安全性乘客信任

2014-04-21 16:40:39

創業創業文化

2017-09-08 12:15:54

Python代碼Pythonic

2009-12-14 15:31:48

2021-03-28 16:55:11

Python工具鏈代碼
點贊
收藏

51CTO技術棧公眾號

久久精品这里热有精品| 日韩欧美一区二区三区久久| 91九色偷拍| 日韩高清精品免费观看| 精品免费视频| 日韩精品一区二区三区视频 | 成人精品在线观看视频| 成人开心激情| 亚洲你懂的在线视频| 精品久久精品久久| 国产内射老熟女aaaa∵| 男女精品网站| 欧美黑人巨大xxx极品| 国产熟女一区二区| 国产成人精品福利| 欧美精品日韩一本| 波多野结衣作品集| 求av网址在线观看| 韩国欧美一区二区| 国产97在线播放| 国产性生活网站| 欧美大片aaaa| 国产午夜精品一区二区三区| 又色又爽又黄18网站| 高清欧美日韩| 欧美视频在线观看 亚洲欧| 欧美一级黄色录像片| 黄视频在线观看免费| 懂色av一区二区三区免费观看| 国产精品视频久| 狠狠躁夜夜躁人人爽天天高潮| 亚洲精品a级片| 丝袜美腿亚洲一区二区| www.av天天| 香蕉久久夜色精品国产使用方法| 91精品国产91久久久久久最新毛片 | 四虎精品一区二区| 国产95亚洲| 欧美日韩国产成人在线免费| 日本xxxxxxx免费视频| a'aaa级片在线观看| 亚洲欧美国产三级| 国产91av视频在线观看| av中文天堂在线| 国产亚洲一区字幕| 欧美日韩最好看的视频| 免费看黄色一级视频| 国产电影一区在线| 99国精产品一二二线| 亚洲乱码中文字幕久久孕妇黑人| а√天堂在线官网| 日韩毛片在线免费观看| 亚洲图片都市激情| 又爽又大又黄a级毛片在线视频| 久久久久国产免费免费| 欧美在线一二三区| 福利在线午夜| 久久aⅴ国产欧美74aaa| 国产精品欧美一区二区| 亚洲天堂狠狠干| 久久99国产精品免费| 国产一区二区在线免费| 91成品人影院| 国产馆精品极品| 福利视频一区二区三区| 日韩中文字幕免费观看| 99精品久久99久久久久| 欧美xxxx黑人又粗又长精品| 国产在线观看精品一区| 国产精品视频免费看| 手机成人av在线| 欧美hdxxxxx| 精品国产福利在线| 97公开免费视频| 涩涩涩久久久成人精品 | 性做久久久久久久久久| 成人激情文学综合网| 免费毛片一区二区三区久久久| 青青草娱乐在线| 中文字幕第一区二区| 久久久一二三四| 成全电影大全在线观看| 欧美日韩国产色视频| 久久不射电影网| 国产在线一区二区三区欧美| 刘亦菲久久免费一区二区| 菠萝蜜视频在线观看一区| 久久亚洲高清| 亚洲中文字幕无码一区二区三区| 久久久美女视频| 激情欧美一区| 国产精品久久久久久av福利软件| 91久久精品国产91性色69| 国产99久久久国产精品免费看| 久久精品国产一区二区三区不卡| 在线观看美女网站大全免费| 一区二区三区欧美日韩| 日韩毛片在线免费看| 国产精一区二区| 日韩麻豆第一页| 天天操夜夜操av| 一区二区黄色| 亚洲精品免费在线视频| 天天干天天干天天干| 日韩理论片网站| 国模吧无码一区二区三区| 亚洲美女色播| 亚洲男人的天堂一区二区 | 日韩a在线看| 亚洲欧美区自拍先锋| 女人扒开屁股爽桶30分钟| 国产精品美女久久久久人| 日韩精品极品视频免费观看| 日本黄色片免费观看| 亚洲欧美bt| 豆国产97在线| 久久精品视频观看| 色婷婷一区二区三区四区| 日本少妇一级片| 久久亚洲在线| 国产成人精品视频在线| 丰满岳乱妇国产精品一区| 亚洲欧洲av另类| 国产一级做a爰片久久| 欧美一区二区三区久久| 欧美极品少妇xxxxⅹ喷水| 97av免费视频| 国产精品沙发午睡系列990531| 国产亚洲欧美在线视频| 精品国产一区二区三区成人影院| 欧美xxxx综合视频| 91成人国产综合久久精品| 久久精品一区二区三区四区| 大陆极品少妇内射aaaaa| 88久久精品| 色与欲影视天天看综合网| 91精品国产乱码久久久久| 国产亚洲人成网站| 久久精品网站视频| 蜜桃国内精品久久久久软件9| 欧美激情亚洲视频| 精品久久久久成人码免费动漫| 中文成人av在线| 欧美三级理论片| 99热国内精品| 国产日本欧美一区二区三区在线| 在线免费看av| 欧美日韩一区二区欧美激情| 浓精h攵女乱爱av| 奇米色欧美一区二区三区| 777午夜精品福利在线观看| 欧美在线精品一区二区三区| 一二三区精品视频| 香蕉在线观看视频| 99国产成+人+综合+亚洲欧美| 国产精品一区二区三区精品| av中文在线资源库| 精品亚洲aⅴ在线观看| 99精品人妻国产毛片| 国产日韩欧美高清在线| 欧美一级裸体视频| 国产精品国产亚洲精品| 久久夜色撩人精品| 性欧美videos另类hd| 亚洲地区一二三色| 国产熟妇搡bbbb搡bbbb| 日产国产欧美视频一区精品| 亚洲精品视频一区二区三区| 3d动漫一区二区三区在线观看| 精品国产区一区二区三区在线观看| 国产绿帽刺激高潮对白| 亚洲精品免费视频| 漂亮人妻被黑人久久精品| 免费一区视频| 在线视频一区观看| 97一区二区国产好的精华液| 日本免费在线精品| 欧洲不卡视频| 亚洲高清一二三区| 中文字幕av第一页| 玉足女爽爽91| 粉嫩av蜜桃av蜜臀av| 美女国产一区二区| 日韩久久久久久久久久久久| 亚洲欧洲免费| 91精品啪在线观看麻豆免费| 毛片电影在线| 久久精品国产v日韩v亚洲| 开心激情综合网| 欧美日韩专区在线| 久草视频中文在线| 国产午夜精品一区二区| 免费看的av网站| 欧美亚洲三区| 乱熟女高潮一区二区在线| 欧美人与牛zoz0性行为| 97netav| 欧美电影免费观看| 久国内精品在线| 成人在线免费看| 亚洲国产精品免费| 国产有码在线观看| 欧美日韩中文在线观看| www.超碰在线观看| 国产亚洲欧美一区在线观看| 亚洲精品久久一区二区三区777| 日韩av网站在线观看| 欧美乱大交xxxxx潮喷l头像| 99精品在线观看| 欧美性大战久久久久| 亚洲不卡视频| 国产精品午夜国产小视频| 国产在线天堂www网在线观看| 久久久精品日本| 国产高清自拍视频在线观看| 亚洲成人网在线观看| 国产欧美日韩成人| 在线观看中文字幕不卡| 在线能看的av| 亚洲午夜电影在线观看| 欧美国产日韩在线观看成人| 国产精品美女久久久久久久久| 9.1成人看片| 成人黄色在线网站| 99热这里只有精品2| 美女在线视频一区| 亚洲一区二区三区四区五区xx| 99精品欧美| 精品视频在线观看一区| 在线中文字幕第一区| 伊人久久婷婷色综合98网| heyzo久久| 欧美一区二区三区成人久久片| 欧美调教网站| 好看的日韩精品视频在线| 98视频精品全部国产| 亚洲一区免费网站| 国产一精品一av一免费爽爽| 国产精品视频男人的天堂| 久久夜夜操妹子| 欧美在线国产精品| 午夜影院一区| 97超级碰碰碰| 免费成人在线电影| 98精品国产自产在线观看| xxxx视频在线| 68精品久久久久久欧美| 欧亚av在线| 日韩美女免费视频| 91九色综合| 国产欧美日韩视频| 99er精品视频| 99国产高清| 久久99精品国产自在现线| 国产在线欧美日韩| 九九综合九九| 亚洲欧美影院| 一本到12不卡视频在线dvd| 男女h黄动漫啪啪无遮挡软件| 91精品电影| 波多野结衣av一区二区全免费观看| 激情久久久久久| 国产成人黄色片| 日韩国产欧美在线观看| 国产精品v日韩精品v在线观看| 激情欧美一区二区三区在线观看| 善良的小姨在线| av一二三不卡影片| 鲁丝一区二区三区| 中文字幕佐山爱一区二区免费| 黄色一级片在线免费观看| 午夜精彩视频在线观看不卡| 国语对白做受69按摩| 6080国产精品一区二区| 免费看黄色一级视频| 亚洲一级片在线看| free性欧美hd另类精品| 91精品国产91久久久久久吃药| 九色成人搞黄网站| 91麻豆精品秘密入口| 欧美一级一片| 欧美 另类 交| 国产一区二区精品| 欧美在线aaa| 成人午夜在线免费| 中国女人特级毛片| 亚洲精品成人精品456| 黑人一级大毛片| 这里只有精品视频在线观看| 五月婷婷开心中文字幕| 337p亚洲精品色噜噜狠狠| www.热久久| 国产一区二区三区直播精品电影| 18视频在线观看| 国产成人综合av| 超碰在线一区| 亚洲制服欧美久久| 在线亚洲精品| 97超碰免费在线观看| 久久九九久精品国产免费直播| 天天天天天天天天操| 色欧美乱欧美15图片| 亚洲欧美激情在线观看| 一个人www欧美| 黄视频在线免费看| 国产日韩欧美91| 亚洲精品无吗| 日本黄色片一级片| 久久精品噜噜噜成人av农村| 亚洲国产果冻传媒av在线观看| 国产精品国产a级| 手机看片久久久| 亚洲精品在线电影| 黄色片网站在线观看| 国产成人精品一区二区三区| 黄色欧美网站| 蜜臀av性久久久久蜜臀av| 日本怡春院一区二区| 欧美图片一区二区| 亚洲地区一二三色| 午夜老司机福利| 美女黄色丝袜一区| 99久久99九九99九九九| 日韩久久久久久久| 久久国产主播| 日本japanese极品少妇| 亚洲一卡二卡三卡四卡无卡久久| 国产精品一区二区三区在线免费观看 | 亚洲国产日产av| japanese国产| 另类天堂视频在线观看| 四虎国产精品成人免费影视| 天天久久人人| 日韩不卡免费视频| 亚洲精品国产91| 欧美在线免费视屏| 国产尤物视频在线| 日韩免费在线看| 亚洲人成网亚洲欧洲无码| 欧美 丝袜 自拍 制服 另类| 菠萝蜜视频在线观看一区| 久久精品免费av| 亚洲第五色综合网| a国产在线视频| 国产一区高清视频| 国产一区二区三区久久久久久久久| 屁屁影院国产第一页| 懂色aⅴ精品一区二区三区蜜月| 凸凹人妻人人澡人人添| 1769国产精品| 国产精品一区二区av日韩在线| 精品久久久久av| 国产欧美日韩三级| 亚洲视频中文字幕在线观看| 日韩视频永久免费观看| 国产精品一区二区三区四区在线观看 | 国产成人免费av| 欧洲杯半决赛直播| 天天视频天天爽| 亚洲柠檬福利资源导航| 粉嫩av一区二区夜夜嗨| 欧美在线视频免费播放| 欧美精品一区二区久久| 一二三级黄色片| 亚洲综合偷拍欧美一区色| 无套内谢的新婚少妇国语播放| 欧美中文在线免费| 欧洲杯足球赛直播| 一级黄色高清视频| 午夜精品久久久久久久久久久| 欧美日本网站| 国产在线精品自拍| 韩国在线一区| 波多野结衣片子| 欧美丰满一区二区免费视频| 波多野结衣在线高清| 免费在线成人av| 国产一区二区精品久久| 国产午夜福利片| 一区二区三区视频在线| 久久丁香四色| 精品视频一区二区在线| 中文字幕一区日韩精品欧美| 国 产 黄 色 大 片| 国产精品18久久久久久麻辣| 中文乱码免费一区二区三区下载| 久久久久久久久免费看无码| 337p亚洲精品色噜噜| 免费高潮视频95在线观看网站| 在线不卡日本| 99re6这里只有精品视频在线观看| 在线免费观看视频网站| 欧美精品福利视频| 日本a口亚洲| www.超碰97| 欧美一级在线视频| 成人做爰免费视频免费看| 妞干网在线观看视频| 中文字幕一区二区不卡 | av亚洲精华国产精华精|