前言
??前段時間呢老翘,需要和xx公司進(jìn)行對接缅叠。由于手上活比較多沒忙不過來卢鹦,領(lǐng)導(dǎo)就先幫我把接口調(diào)試完成了臀脏,并寫好了相關(guān)的demo。然后我根據(jù)demo把代碼整合進(jìn)業(yè)務(wù)系統(tǒng)冀自,并重寫了相關(guān)代碼揉稚。后來領(lǐng)導(dǎo)看了我寫的代碼,發(fā)現(xiàn)和他寫的的demo不太一樣熬粗,然后就問我為什么要重寫搀玖?在一番爭論后,領(lǐng)導(dǎo)對我說了句:你到底懂不懂抽象啊驻呐,你動了別人的代碼邊界灌诅。
事情的經(jīng)過
領(lǐng)導(dǎo):誒,你這個代碼咋和我寫的demo不太一樣呢?
我:我看demo里面的代碼有些地方含末,當(dāng)返回錯誤信息的時候拋出了異常猜拾。但是實際情況是不能拋出異常,我就給他改寫了佣盒。
領(lǐng)導(dǎo):在使用的時候try catch
住處理一下不就好了挎袜。
我:這個確實可以,但是沒必要這樣做。多套一層 try catch
這樣不是多此一舉了嗎盯仪。
領(lǐng)導(dǎo):不是時間很趕嗎紊搪,那在原有的基礎(chǔ)上加一層 try catch
不是更快嗎。
我:說是這樣說全景,但是重寫一下那部分又不耗多少時間耀石,耗時間的是調(diào)整業(yè)務(wù)相關(guān)的邏輯代碼。
領(lǐng)導(dǎo):就這個原因嗎蚪燕,還有其他的嗎娶牌?
我:這個只是一部分,還有有些寫法看起來太臃腫了馆纳,可以用屬性拷貝和類轉(zhuǎn)換替換掉诗良。這樣代碼看起來就比較精簡了。
領(lǐng)導(dǎo):減少了代碼行數(shù)鲁驶,就是你認(rèn)為的精簡嘛鉴裹?
我:是的。
我:對了還有一個是钥弯,這個系統(tǒng)用的框架比較老径荔。不支持枚舉映射,所以我把一些參數(shù)類型變成String了脆霎。
領(lǐng)導(dǎo):那你可以手動映射呀总处。
我:那我還不如用String接收,在使用的地方再用枚舉睛蛛。
領(lǐng)導(dǎo):在我看來鹦马,你的改代碼的理由,在我看來都不是理由忆肾。
我:為啥荸频?
領(lǐng)導(dǎo):在我看來你因為看那些寫法不爽就把它給改了,可以這樣理解吧客冈。
我:占一部分原因吧旭从。
領(lǐng)導(dǎo):那你在用Spring的時候,發(fā)現(xiàn)有些代碼讓你看起來不爽场仲,你會改它嘛和悦?
我:不會。
領(lǐng)導(dǎo):為啥呢渠缕?
我:因為改不了摹闽,沒得權(quán)限。
領(lǐng)導(dǎo):想改還是可以改的褐健,去github上把代碼拉下來付鹿,改了重新打包澜汤。
我:那這個也太麻煩了。
領(lǐng)導(dǎo):那我是不是認(rèn)為你因為麻煩或者說沒有權(quán)限,所以你才不會改舵匾。
我:是的
領(lǐng)導(dǎo):這樣說的話俊抵,如果我把他弄成一個jar,讓你用你是不是就改不了坐梯。
我:是這樣的徽诲。
我:雖然是重寫了,但是跟直接把代碼拷貝過來是一樣的吵血,并沒有增加系統(tǒng)的復(fù)雜度谎替。
領(lǐng)導(dǎo):你到底懂不懂抽象啊,你動了別人的代碼邊界蹋辅。
我:我咋就不懂抽象了钱贯?
領(lǐng)導(dǎo):這樣和你說吧。
領(lǐng)導(dǎo):原本呢侦另,接口對接那部分是我寫的秩命,你只需要負(fù)責(zé)使用就好了。如果接口發(fā)生變更褒傅,我可以直接處理弃锐,你并不需要關(guān)心接口對接的邏輯。
我:是這樣的殿托。但你的代碼并沒有寫在業(yè)務(wù)系統(tǒng)里啊霹菊。
領(lǐng)導(dǎo):你直接拷貝過去就好了,這個和提供一個Jar有啥區(qū)別支竹,而且代碼我都測試過了浇辜,可以直接使用。
我: 是這樣的唾戚。
領(lǐng)導(dǎo):當(dāng)接口發(fā)生改變的時候,我更改完待诅,你直接把代碼拷貝過去就好了叹坦。
我:額。卑雁。募书。。
領(lǐng)導(dǎo):但是現(xiàn)在你把代碼重寫了测蹲,就沒有那一層抽象了莹捡,也就只能你自己維護(hù)了。
我:這個本來就是我維護(hù)的呀扣甲。
我:但是系統(tǒng)的抽象程度還是沒變呀篮赢。
領(lǐng)導(dǎo):是齿椅,整個系統(tǒng)的抽象程度確實沒變都是xx服務(wù)。但是我現(xiàn)在和你說的是這個項目的启泣,不是整個系統(tǒng)的涣脚。
領(lǐng)導(dǎo):回到之前那個問題。
我:嗯嗯
領(lǐng)導(dǎo):這樣和你說吧寥茫。當(dāng)你在看代碼的時候遣蚀,覺得別人的代碼寫的可能不夠規(guī)范,或者說不符合你的規(guī)范纱耻。因為你覺得不符合規(guī)范芭梯,這個只是你的主觀判定,而不是一個客觀的事實弄喘。在你看來不符合規(guī)范的代碼玖喘,可能就是別人的規(guī)范。最好不要因為這個原因去更改別人的的代碼限次。
我:好的
總結(jié)
??不要去改變別的代碼邊界芒涡。當(dāng)你更改了別人的代碼,就意味著破壞了別人的代碼邊界卖漫。一旦邊界被破壞费尽,那就可能出現(xiàn)無法預(yù)估的風(fēng)險。
結(jié)尾
??說的通俗一點就是羊始,不要瞎雞兒改別人的代碼旱幼。不管別人寫的好不好,只要沒bug就行突委,如果有bug也是別人改柏卤。有這個時間早點下班不好嗎。
??如果覺得對你有幫助匀油,可以多多評論缘缚,多多點贊哦,也可以到我的主頁看看敌蚜,說不定有你喜歡的文章桥滨,也可以隨手點個關(guān)注哦,謝謝弛车。
??我是不一樣的科技宅齐媒,每天進(jìn)步一點點,體驗不一樣的生活纷跛。我們下期見喻括!