我見過最長的方法是5000多行,那段代碼沒人敢動,只敢往下加 if else,每次需要改這段代碼的開發都戰戰兢兢,生怕出現什麽莫名其妙的bug。java 可是壹門面向對象的語言,壹個方法裏面有5000多行可以說是很可惡的事情了。我想壹開始代碼長度可能沒這麽誇張,是什麽導致這種結果的?壹個是當初寫這段代碼的人本身寫的是直來直去的方法,壹堆if else ;後面叠代的開發,面對這麽長的代碼瞬間失去了從頭讀到尾的耐心,直接繼續在後面加 if else 叠代,最後這個方法就變成了壹個縫合怪壹樣的玩意。
好的 sql 可以很大程度上簡化代碼的復雜程度,但是太過復雜sql 本身就會給後來的開發人員造成閱讀困難,結果又是變成壹條無人敢動的祖傳代碼,我想這應該是不少公司極度抵制存儲過程的原因之壹。當然不少銀行應用開發還是大量使用存儲過程,存儲過程有用武之地的,但是壹個又臭又長的存儲過程就等著變成祖傳代碼吧。當年我見到壹個60多個join的sql,看到第壹眼就驚為天人從此難以忘懷,當然那段sql也成了沒人敢去動的代碼了。
代碼邏輯不明
代碼邏輯不明所以是我們開發很容易去犯的毛病,是壹個不致命卻煩人的毛病。在代碼上的體現是,邏輯判斷寫的比較反人類各種雙重否定是肯定,不把妳繞暈不罷休。或者是寫起代碼來東壹榔頭西壹棒槌,讓人不知道妳想幹嘛。導致這個的原因有可能是開發人員在需求理解上出現偏差,做到後面發現不對勁,再回去改又不大可能了,只能硬著頭皮往下寫,結果就是代碼彎彎繞繞;還有很重要的鍋是在產品經理,任意變更需求,想壹出是壹出,開發人員無奈只能跟著想壹出寫壹出。還用可能是開發人員方法或者類命名太藝術了,什麽四川方言拼音這種沒有十年腦血栓想不出的命名咱就不說了。就說那種國產淩淩漆式的無厘頭命名——這看上去是個刮胡刀實際上是個吹風機,就這種不知道讓人說什麽好。
規劃代碼的核心思想
吐槽了壹堆代碼規範問題,接下來我們說說如何去規範我們的代碼以及如何做到就算開發人員更換了,或者項目轉手給他人了,仍然可以讓後面的開發可以無礙的去閱讀代碼修改代碼。當然各個公司/團隊都有自己的壹套代碼規範,比如項目的結構、代碼命名風格、代碼格式等等。不同團隊有不同的風格,但核心思想是大同小異的。接下來我就我個人的開發經驗來分享壹下壹些代碼規範的思想。