精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

好男人www在线视频| 久久久久人妻一区精品色| 午夜伦理福利在线| 欧美国产欧美综合| 亚洲自拍偷拍第一页| 欧美黄色免费观看| 亚洲伊人春色| 4438亚洲最大| 欧美日韩亚洲第一| gogogogo高清视频在线| 成人动漫一区二区三区| 国产欧美va欧美va香蕉在线| 久久久久久久久久久久久久久久久 | 神马久久一区二区三区| 欧美一区二区私人影院日本| 久久国产成人精品国产成人亚洲| 黄网站在线免费| 91网址在线看| 亚洲自拍高清视频网站| 国产又粗又猛又黄视频| 亚洲婷婷在线| 色综久久综合桃花网| 少妇激情一区二区三区视频| 亚洲伦理一区二区| 色嗨嗨av一区二区三区| 免费特级黄色片| 日本精品一区二区三区在线播放| 99久久精品一区二区| 91久久精品美女高潮| 精品人妻一区二区三区潮喷在线| 亚洲小说欧美另类社区| 精品国产一区二区在线| 日韩精品电影一区二区三区| 五月综合久久| 欧美精品一区二区三区一线天视频 | 国产精品蜜臀| 亚洲激情六月丁香| 亚洲一区二区三区免费看| 九色在线播放| 2022国产精品视频| 精品国产福利| 色丁香婷婷综合久久| 国产东北露脸精品视频| 成人性生交大片免费看小说 | 日本一区二区三区视频在线播放 | 国语对白做受69按摩| 亚洲精品国产日韩| 国模吧一区二区三区| 久久婷婷综合国产| 亚洲午夜在线| 久久久女女女女999久久| 久久中文字幕无码| 国产精品s色| 久久99国产综合精品女同 | 天天操天天综合网| 国产av人人夜夜澡人人爽麻豆| 日本动漫同人动漫在线观看| 亚洲理论在线观看| 欧洲精品视频在线| 在线黄色网页| 亚洲国产精品自拍| 日韩a∨精品日韩在线观看| 91av久久| 色呦呦日韩精品| 天天操天天爽天天射| av成人在线观看| 91精品免费观看| 色欲欲www成人网站| av日韩精品| 日韩精品极品视频免费观看| 泷泽萝拉在线播放| 日韩激情免费| 久久成年人视频| 国产一级久久久| 久久高清一区| 国产日韩欧美夫妻视频在线观看 | av高清久久久| 日韩hmxxxx| 成人在线观看免费网站| 一片黄亚洲嫩模| 日韩欧美亚洲天堂| 电影在线观看一区二区| 666欧美在线视频| 国产成人精品综合久久久久99 | 视频一区三区| 日本在线人成| 亚洲一二三区视频在线观看| 国产91在线视频观看| 日韩免费小视频| 欧美一区二区三区在| xxxx黄色片| 成人羞羞网站入口| 欧美日本中文字幕| 女人十八岁毛片| 免费成人在线影院| www日韩av| 国产污视频在线| 亚洲精品国产a| 国产又大又硬又粗| 美女国产精品久久久| 国产视频欧美视频| 免费中文字幕在线| 三级成人在线视频| 国产精品二区三区四区| 在线看av的网址| 懂色aⅴ精品一区二区三区蜜月| 亚洲一区二区三区四区五区| 日韩精品免费一区二区三区竹菊| xxx欧美精品| 亚洲免费黄色网址| 国产精品中文字幕日韩精品| 日本一区二区三区免费观看| free性m.freesex欧美| 欧美日韩aaa| 亚洲AV无码片久久精品| 欧美三区美女| 国产日韩精品电影| 国产系列在线观看| 欧美日韩亚洲高清| 逼特逼视频在线观看| 66久久国产| 国产精品久久久久久av下载红粉 | 日批视频免费在线观看| 国产成人av电影在线播放| 无码免费一区二区三区免费播放 | 欧美午夜丰满在线18影院| 国产一级片中文字幕| 日韩一区二区中文| 国产成人精品优优av| 亚洲欧美综合一区二区| 亚洲福中文字幕伊人影院| 三级网站免费看| 亚洲h色精品| 成人免费观看网址| 在线观看免费版| 在线免费一区三区| 国产免费一区二区三区网站免费| 亚洲国产免费看| av资源站久久亚洲| 在线网址91| 日韩免费性生活视频播放| 精品国产视频在线观看| 精品午夜一区二区三区在线观看| 亚洲欧洲精品在线观看| 日本美女久久| 中文国产亚洲喷潮| 亚洲网站在线免费观看| 国产精品女同一区二区三区| 亚洲福利精品视频| 欧美偷拍自拍| 国产精品久久久久久一区二区| 国产小视频免费在线观看| 日本道免费精品一区二区三区| 亚洲国产无码精品| 日韩专区在线视频| 亚洲一区bb| 成人短视频软件网站大全app| 久久九九精品99国产精品| 国产精品九九九九| 亚洲免费观看高清完整版在线| 国产又粗又猛大又黄又爽| 韩国av一区| 精品福利影视| 免费高清视频在线一区| 日韩在线观看免费av| 国产三级伦理片| 亚洲在线视频免费观看| 屁屁影院国产第一页| 久久精选视频| 在线丝袜欧美日韩制服| 久久综合给合| 97视频在线观看免费高清完整版在线观看 | 国产又色又爽又黄刺激在线视频| 亚洲高清免费观看高清完整版| 久久久久久久久久久久久av| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产一区二区三区免费在线观看| 97av中文字幕| 亚洲理论电影| 91久久久久久久| 丰满诱人av在线播放| 亚洲一级一级97网| 国产毛片久久久久| 五月激情丁香一区二区三区| 亚洲AV无码国产成人久久| 麻豆视频一区二区| 国产真人做爰毛片视频直播| 国产精品欧美日韩一区| 亚洲一区二区在线播放| 神马久久午夜| 日韩亚洲成人av在线| 日韩一区二区三区不卡| 欧美日韩免费一区二区三区视频| 久久久久久久久久久久国产| 欧美韩国日本一区| 在线观看免费视频国产| 日本成人在线一区| 人人妻人人做人人爽| 日韩一区二区中文| 久中文字幕一区| 精品国产一区二区三区性色av| 青草青草久热精品视频在线观看| 麻豆免费在线视频| 亚洲欧美日韩精品久久亚洲区| 国产福利小视频| 日本高清成人免费播放| 国产精品美女毛片真酒店| 欧美激情在线看| 国产成人精品无码片区在线| 久久成人免费电影| 六月激情综合网| 欧美日韩一区二区三区四区在线观看| 日本视频一区二区不卡| 久久久久观看| 91久久精品国产91久久性色tv| 日韩精品一区二区三区av| 91av视频在线观看| 手机av在线播放| 日韩中文字幕视频在线| 国产原创av在线| 亚洲精品720p| 亚洲av无码一区二区三区性色| 欧美揉bbbbb揉bbbbb| 国产精品乱子伦| 午夜影院久久久| 精品99在线观看| 亚洲欧美成aⅴ人在线观看 | 亚洲一区二区高清| 我要看黄色一级片| 国产精品高清亚洲| 欧美丰满老妇熟乱xxxxyyy| 97se亚洲国产综合自在线观| 国产chinesehd精品露脸| 国产麻豆午夜三级精品| 黄色a级三级三级三级| 久久精品国产亚洲高清剧情介绍| 北条麻妃在线视频| 欧美一级一区| 欧美黄色免费影院| 另类天堂av| 国产一区亚洲二区三区| 亚洲一区二区毛片| 亚洲欧洲日产国码无码久久99 | 一区二区三区在线观看欧美| 国产午夜精品理论片在线| 中文字幕在线播放不卡一区| 亚洲色图27p| 成人欧美一区二区三区| 成年人二级毛片| 亚洲青青青在线视频| 欧美人禽zoz0强交| 亚洲精品视频一区二区| 久久久久亚洲天堂| 午夜亚洲福利老司机| 日韩 欧美 综合| 婷婷久久综合九色国产成人| 天堂在线免费观看视频| 日本二三区不卡| 一级黄色片免费| 欧美一区二区在线不卡| 男人天堂网在线视频| 亚洲电影免费观看高清完整版在线观看| 亚洲精品国产一区二| 欧美精品一区二区精品网| 五月婷婷六月丁香综合| 亚洲天堂视频在线观看| 黄色网址在线免费| 欧美国产亚洲视频| 日韩深夜视频| 国产精品视频免费在线观看| 四虎精品永久免费| 成人xxxxx色| 精品一区毛片| 手机福利在线视频| 亚洲高清免费| 亚洲成人福利在线观看| 国产一区美女在线| 亚洲精品乱码久久| 欧美国产一区视频在线观看| 538精品在线视频| 午夜国产精品影院在线观看| 樱花视频在线免费观看| 91精品国产综合久久精品| 日本精品一二区| 国产亚洲精品久久久久久牛牛 | 国产精品高清在线观看| 玖玖玖电影综合影院| 久久久久久久久久久久久9999| 日韩欧美中文| 日韩一级性生活片| 另类综合日韩欧美亚洲| 9.1在线观看免费| 欧美国产精品一区二区| 国产一级做a爰片在线看免费 | 国产视频在线观看免费| 日韩精品中文字幕视频在线| 日本在线免费中文字幕| 91av在线网站| 日本免费精品| 色阁综合av| 国产欧美日韩一级| 日本中文字幕有码| 国产精品素人视频| 国产 欧美 日韩 在线| 91精品一区二区三区在线观看| 日韩电影网址| 欧美激情亚洲国产| 亚洲一区二区小说| 欧美日韩无遮挡| 韩日欧美一区| 性欧美在线视频| 国产人久久人人人人爽| 日本三级中文字幕| 日韩一区二区在线看| 在线中文资源天堂| 欧洲成人在线观看| 国产精品毛片视频| 久久久久福利视频| 美国毛片一区二区| 性高潮久久久久久久| 天天色 色综合| 老牛影视av牛牛影视av| 久久影院资源网| 国产精品亚洲d| 涩涩涩999| 久久中文在线| 国产精品300页| 亚洲成人av中文| 亚洲AV无码乱码国产精品牛牛| 久久艳片www.17c.com | 超碰中文在线| 1卡2卡3卡精品视频| 一区二区日韩欧美| 999久久久精品视频| 亚洲欧洲一区二区在线播放| 精品久久久久久久久久久久久久久久久久 | 国产传媒欧美日韩成人精品大片| 男人天堂av片| 成人听书哪个软件好| 精品无码人妻一区二区三区品| 欧美成人官网二区| 深夜国产在线播放| 147欧美人体大胆444| 国产在线欧美| 免费啪视频在线观看| 亚洲国产精品久久艾草纯爱| 亚洲精品视频专区| 久久久免费高清电视剧观看| 国产伦精品一区二区三区在线播放| 久久久天堂国产精品| 国产aⅴ综合色| 国产午夜福利片| 亚洲国产欧美久久| 一根才成人网| 亚洲高清123| 国模一区二区三区白浆| 久久久久亚洲AV成人| 精品成人免费观看| 国产夫妻在线| 欧美激情导航| 美女视频一区在线观看| 黑鬼狂亚洲人videos| 日韩视频一区二区三区| 91吃瓜在线观看| 欧美极品一区二区| 蜜臀av国产精品久久久久| 神马午夜精品91| 精品久久久久香蕉网| 日韩欧美精品一区二区三区| 日韩少妇中文字幕| 激情图区综合网| 国产精品18p| 亚洲欧美中文在线视频| 亚洲日本中文| 成人免费看片'免费看| 久久综合久久99| 一二三四区视频| 欧美激情亚洲自拍| 精品视频国产| 久久久久中文字幕亚洲精品| 欧美性猛交丰臀xxxxx网站| 欧美成人性生活视频| 高清不卡一区二区三区| 久久久久99| 国产a免费视频| 亚洲精品影视在线观看| 亚洲一区有码| 国产高清精品在线观看| 亚洲欧美综合在线精品| 午夜18视频在线观看| 国产伊人精品在线| 亚洲精品一级| 欧美特黄一级片| 亚洲欧美日本精品| 日韩一区二区三区色| 日韩精品一区二区三区不卡 | 九九热精品视频在线| 成人97在线观看视频| 国产a久久精品一区二区三区 | 久草资源站在线观看|