編寫好的代碼是程序員的基本功、手藝活。在開始探討如何打磨這個手藝活之前,我們先來聊一下,好代碼的標準到底是什么。
有的人認為簡潔的代碼就是好代碼,有的人認為高效的算法就是好代碼,有的人認為新的技術就是好代碼,似乎都有道理,又似乎都不太準確。代碼是人來抒寫的,所以沒有完全統(tǒng)一的標準,有一點像藝術創(chuàng)作,他需要創(chuàng)意,但是又跟藝術創(chuàng)作有本質(zhì)的區(qū)別,因為藝術創(chuàng)作沒有明確的用戶需求,而代碼是工程化的,他有明確的用戶需求。
那么,好代碼的標準是什么呢?我覺得有三個層面的標準,第一個層面就是能否高效、高質(zhì)量的滿足業(yè)務的需求,這是最基本的標準。我們做產(chǎn)品和服務最終還是為了給用戶解決問題,解決問題本身才是最重要的,技術是為解決問題服務的。所以,怎么能高效高質(zhì)量的滿足業(yè)務需求就是第一重要的標準。
為什么要高效呢?因為所有的解決方案都是時間、資源和質(zhì)量的平衡產(chǎn)物,沒有人會給我們無盡的時間,可以做到盡善盡美。而且,好的產(chǎn)品都是不斷迭代優(yōu)化的,需要盡快推出市場,不斷收集用戶的反饋,不斷打磨才可以。
什么叫高質(zhì)量呢?光按時交付還不夠,光我們技術架構高質(zhì)量也不夠,是最終的產(chǎn)品用戶滿不滿意,有沒有給用戶提供超出預期的體驗,這才算高質(zhì)量。
第二層標準就是能否將系統(tǒng)的復雜度控制在可控的范圍之內(nèi)。我們知道任何一個系統(tǒng)的上線,并不是研發(fā)的結束,而是才剛剛開始。一個技術系統(tǒng)就像一個生命體,上線才意味著剛剛誕生,他還要經(jīng)歷漫長的、反復的迭代成長的過程。但是,這個成長過程就意味著熵增的開始,系統(tǒng)會變得越來越復雜,越來越難以維護和更新,越來越跟不上業(yè)務的變化。
所以,我們編寫好代碼的一個核心目標就是控制整個系統(tǒng)的復雜度。在盡力滿足業(yè)務需求的前提下,還要從全局角度審視整個技術系統(tǒng),做好未來的規(guī)劃。這就好比城市建設,最開始的時候總是無序的,各種私搭亂建。但是,隨著規(guī)模的擴大,整個城市的規(guī)劃就變得越來越重要,不然就會出現(xiàn)各種交通的擁堵,生活的不便利等等問題。技術系統(tǒng)的建設也是如此,我們要提前進行規(guī)劃,盡可能延續(xù)系統(tǒng)的生命周期,讓系統(tǒng)可以長久的、快速的、靈活的滿足業(yè)務的發(fā)展。
第三層標準就是能否驅(qū)動或者引領業(yè)務的發(fā)展。就像Window操作系統(tǒng)之于微軟,安卓系統(tǒng)之于谷歌。最開始,Window操作系統(tǒng)只是一個技術的系統(tǒng),但是,隨著個人電腦時代的到來,這個技術系統(tǒng)在不斷演變,通過開放的體系設計逐漸把上下游的服務商鏈接起來,包括以Intel為代表的硬件服務商,還有眾多的PC軟件程序提供商,針對這兩者,Window系統(tǒng)都提供了友好的、統(tǒng)一的接口來對接,Windows系統(tǒng)從而演變成了一個技術的生態(tài),進而催生了整個微軟的商業(yè)帝國,讓微軟成為整個PC時代的王者。所以,好的代碼是能夠驅(qū)動甚至引領整個業(yè)務的發(fā)展的。
總結一下,我們總結了好的代碼的三個標準,首先,好代碼要高效、高質(zhì)量的滿足業(yè)務的需求,甚至超出用戶的預期。其次,好代碼要能控制系統(tǒng)的復雜度,做好技術系統(tǒng)的長久的規(guī)劃。最后,好的代碼會驅(qū)動業(yè)務的發(fā)展,甚至演變成技術的生態(tài),引領商業(yè)的變革。