“你這個(gè)代碼寫的不clean呀靶庙, 你看這里的order是個(gè)double類型的, 為什么不用整型的呢娃属?”六荒。在一次討論中,對(duì)方給出這么個(gè)結(jié)論矾端。
關(guān)于設(shè)計(jì)的討論基本是程序員的日常掏击。在討論中,各種“大帽子”會(huì)飛過來,飛過去须床, Clean铐料、SOLID、擴(kuò)展性豺旬、可測(cè)試性钠惩、復(fù)雜度等等。如果對(duì)“帽子”本身的內(nèi)涵不理解族阅,被扣帽子的人就么辦法做出合理的為自己的代碼辯護(hù)篓跛。扣帽子的人則是在調(diào)皮搗蛋坦刀。 比如上面的場(chǎng)景愧沟,clean是指什么?當(dāng)對(duì)方說代碼不clean的時(shí)候鲤遥,他又在指什么沐寺?
按照需求,頁(yè)面上需要顯示出一系列表單控件盖奈,order則標(biāo)記著各個(gè)控件的顯示順序混坞。實(shí)際實(shí)現(xiàn)中,每個(gè)控件實(shí)例有個(gè)order屬性,按照order排序后究孕,逐個(gè)顯示即滿足需求啥酱。上面的實(shí)現(xiàn)是能完全滿足Kent Beck在簡(jiǎn)單設(shè)計(jì)(Simple design)中提高的4個(gè)要求的:
- 測(cè)試通過
- 明確表達(dá)代碼意圖
- 沒有重復(fù)
- 最小化實(shí)現(xiàn),沒有冗余
額外的好處厨诸,就是簡(jiǎn)單镶殷,易理解, 維護(hù)也方便微酬。當(dāng)有更多的組件需要插入到現(xiàn)有列表中時(shí)绘趋,也總是可以找到一個(gè)位置。另外得封,即使如對(duì)方所言換成整型埋心,也沒有本質(zhì)的區(qū)別。
按照我們對(duì)整潔代碼的理解忙上,這個(gè)實(shí)現(xiàn)是滿足要求的。但對(duì)方指的不clean, 具體是什么呢闲坎?是不滿足需求疫粥?還是有其他隱情?真相是作為非技術(shù)人員腰懂,對(duì)方只是純粹覺得整數(shù)比帶小數(shù)點(diǎn)的浮點(diǎn)數(shù)更“干凈”梗逮!
這就是典型的討論雙方對(duì)clean沒有共識(shí),也就是所謂的雞同鴨講绣溜。這時(shí)慷彤,就需要理解內(nèi)涵的一方開始耐心的科普:首先我們定義一下什么是X, 然后再討論為什么Y不X。
好的程序員怖喻,不僅要有一雙巧手寫出優(yōu)雅的代碼底哗,還要縝密理論知識(shí)織就的鐵布衫,隨時(shí)抵御飛來的大帽子锚沸。