如下內容人物均爲杜撰,若有巧合,純屬雷同。程序員
從前有個程序員,叫阿星,在小公司工做了2,3年,通過了好多輪技術面試的奮戰,終於成功加入了Banana公司,是一個頗有名的技術大廠。阿星加入的部門是一個負責公司支付業務的中臺團隊。面試
阿星在Banana公司的前幾個月,主要作一些零散的小需求,一直沒機會上手一些核心系統的開發,不過偶爾也會翻閱一些老系統,有不懂或者以爲和本身想法不同的地方會諮詢老同事。windows
有些時候,老同事都會有句口頭禪,這是歷史代碼的問題,這一塊改了影響不知道有哪些,會增長迴歸成本,這期先這樣往上加吧,後面再看看。測試
每次聽到這樣的結論,阿星由於是新人,也會贊同老同事的見解,認爲這樣的考慮是合理的。優化
但阿星心裏總隱隱感受不對...接口
由於在入職這段時間表現不錯,領導走到阿星背後,拍了拍阿星的肩膀說:「阿星,最近咱們要對接一個新的支付公司,叫好就付,你找老同事瞭解下之間是怎麼對接其餘支付公司的,你來作一下這件事情。」開發
阿星心裏OS:「終於能夠參加核心流程的開發了,太棒了」文檔
阿星找老同事瞭解了下,對接一個新的支付廠商,須要增長一個對應的開通支付的功能,對接支付的功能以及處理開通訊息回調的功能。部署
阿星拉取了主要用來對接支付的的系統,主要是經過定義了一個標準接口給上游系統,內部經過上游分發的展現Id,將展現Id轉換成該系統可識別的廠商Id,進入各自的主流程。軟件
阿星要來了新的廠商的接口文檔,將上面的三個功能都增長了一個新的分支加以實現,並添加了上游展現Id和好就付廠商之間的轉換代碼。
進入測試階段,阿星發現,直接調支付功能是通的,可是開通功能一直不通,仔細查閱了代碼發現,原來開通和支付這裏各自維護了一套展現Id和廠商之間的轉換關係。
阿星爲了不部署上代碼後,仍是測不通,仔細查閱了整個系統,發現這樣的轉換關係,在系統內維護了7個地方。
阿星看了看老同事的實現,都是用到一個新功能時,將原有的轉換代碼直接拿了過來,增長了一個新的分支。
阿星以爲這樣的轉換邏輯應該維護在一個統一的地方,不然以後新增或者修改一個廠商,每次改動一個廠商須要修改這7個地方,並且隨着功能的新增,可能還會增長。
阿星詢問了以前的老同事,老同事說 他實現的時候也是看以前的代碼就是這麼寫的,確實也以爲不太合理,但歷史都是這麼寫的,本身就繼續日後加了。
阿星陷入了猶豫,本身應該是優化這塊功能,仍是繼續延續老的用法,等到實在改不動了再修復。
你會怎麼作呢?想想,能夠留言回答~
阿星想了想,若是我也繼續這麼作的話,那麼下一我的可能也會繼續這麼作,那麼這段不合理的處理方式就會一直延續下去,永遠沒有結束的那天,也就沒法成爲一份好的代碼,這但是我求之不得加入的公司啊~
但是改這麼多地方,會不會影響不少,阿星主動找了資深的同事,說明了本身的想法,同事也承認了本身的作法,以前開了一道口子,如今愈來愈大了,是應該修復了。
來吧,看個人天馬流星拳!(抱歉,阿星有一些中二)
阿星將全部負責轉換的邏輯,都抽取了出來,統一到了一個地方,增長了註釋,並將原來各處的調用,都收攏到了一處,雖然爲此阿星加班測了好多不是他這個需求的功能,但阿星心裏是知足的,本身作了一件正確的事。
在阿星修復了這個口子以後,又緊接着對接了好幾個新的廠商,你們不再須要修改7個地方了,阿星有種深藏功與名的感受。
以前阿星在修復的問題的時候,在想,爲何以前你們都看到了這個問題,可是沒人在第一時間發現這個問題後修復呢?
直到有一天,阿星瞭解到了這個理論 - 破窗效應。
破窗效應(英語:Broken windows theory)是犯罪學的一個理論,該理論由詹姆士·威爾遜(James Q. Wilson)及喬治·凱林(George L. Kelling)提出,並刊於《The Atlantic Monthly》1982年3月版的一篇題爲《Broken Windows》的文章。
此理論認爲環境中的不良現象若是被聽任存在,會誘令人們仿效,甚至變本加厲。一幢有少量破窗的建築爲例,若是那些窗不被修理好,可能將會有破壞者破壞更多的窗戶。最終他們甚至會闖入建築內,若是發現無人居住,也許就在那裏定居或者縱火。一面牆,若是出現一些塗鴉沒有被清洗掉,很快的,牆上就佈滿了亂七八糟、不堪入目的東西;一條人行道有些許紙屑,不久後就會有更多垃圾,最終人們會視若理所固然地將垃圾順手丟棄在地上。這個現象,就是犯罪心理學中的破窗效應。
阿星看完以後明白了,在軟件開發中其實也存在着破窗效應,當一處不合理的開發出現後,沒有在第一時間修完這個破碎的窗戶,接下來的人就可能會在修和不修之間動搖,有機率讓這個窗戶變的更大,讓這個窗戶變的更難修復。
阿星最後意識到,不管是小廠仍是大廠,代碼是靠你們一塊兒維護的,只有你們都有修窗戶的意識,纔會讓系統變的愈來愈好,不然只會將問題都甩在歷史問題上,但是歷史問題又是誰形成的呢?
好了,這就是程序員小岑筆下人物阿星的第一篇歷險記,若是以爲還不錯的話,支持一下,個人公衆號是程序員小岑成長記。