你見過馬化騰18年前編寫的代碼嗎?

愛我的人和我愛的人
愛我的人和我愛的人
裘海正
00:00/04:22
01
關於馬化騰編碼的水平,網路上曾有這樣一個段子:
曾經和pony(馬化騰)一起寫過代碼。當時我、pony、馬克3人擠在一個只有10個位置的房間里,埋頭開發。馬克當時負責排查兩個bug,跟進了10個月,沒有一點進展,下樓準備買點瑞士卷吃,消消愁。回來發現pony光著膀子,啃著個豬蹄兒,站在陽台,望著寂靜的夜,回頭冷靜地和馬克說了句:「bug我幫你處理好了。」
可見老馬的編碼水平之高,當然,這只是個段子。但據說當年創業時,公司主頁是馬化騰自己親手製作的。
關於他編碼是不是最好的,我們不知道;但可以肯定的是,他一定是通過軟體掙錢掙得最多的那位程序員。
02
無獨有偶,互聯網界的精英,大多數是技術出身,譬如雷軍、李彥宏、周鴻禕等,幾乎都是編程高手。作為京東首席CEO,劉強東編碼水平也備受關注。
知乎上,有人曾提問過這樣一個問題:
劉強東的代碼水平如何?
有網友這樣回復:
劉強東在一次講座上,稱自己在校大三的時候,也就是1995年左右,他給別人寫代碼,一個晚上就能賺5萬。
95年一個晚上5萬,那是什麼概念。
至於劉強東編碼的水平究竟怎樣,是不是像上面網友形容的那樣,可以一個晚上賺5萬,我們無從而知。
但可以肯定的是,無論是馬化騰還是劉強東,所編寫的代碼應該很規範。
不知你有沒有類似這樣的這樣的經歷:
回頭看看自己一年前編寫的代碼,驚訝地發現,哇哈,如此不規範的代碼,是誰編寫的?確定是我寫的嗎?我能寫出這樣慘目忍睹的代碼?分分鐘鍾懷疑人生。
代碼規範的重要性我們都知道,但要真正做好,還需要我們在實踐中慢慢的累積,不斷修鍊。
03
如果代碼沒有統一的規範,每個人都按照自己掌握理解的那一套,那麼整個項目的代碼很可能就會出現風格迥異。即使是分工明細,每個人負責一個模塊,等到要整合代碼的時候就尷尬了。
很多時候,並非程序的演算法有多複雜,或是邏輯多麼複雜,而是因為代碼不規範,越讀越費勁,把精力都耗在這裡了。
統一的代碼規範可使得代碼可讀性大大提高, 在團隊的合作開發中是非常有益而且很有必要。
04
項目維護工作不僅讀懂源碼,而且還需要在原有源碼基礎上作出修改。如果沒有統一代碼規範,很可能會出現這種現象:
張三完成開發以後,李四進行維護加一段代碼,過一段時間王五又加一段代碼。原本一個很普通的需求,經歷了N次迭代和修改,已經形成了巨大的功能。直到有一天,張三、李四、王五都辭職了,新來的員工看到那一大堆沒有統一規範的代碼。想死的心都有了。
隨著不斷迭代版的維護成本越來越高,從而形成惡性循環。程序背後的架構設計或模式固然重要,但良好的命名也不容忽視。不規範的命名不僅讓我們對代碼難以理解,更糟糕的是,會誤導我們的思維,導致對代碼的理解有偏差。
相反,良好的命名規範,則可以讓我們的代碼更加容易讀懂,也能向讀者正確表達事物以及邏輯的本質,閱讀命名規範的源碼理解沒有那麼費勁,會有一種享受的感覺。
有人喜歡對控制項textview1,textview2,textview3、,textview4類似這樣的命名,甚至還對其添加註釋。
有人可能認為注釋越多,其他人看到的就會越好。其實不然,注釋過多,或是一些冗餘注釋,反而會影響源碼的可讀性。如果我們良好的命名規範,結合了需要和命名。它可以省去許多不必要的注釋。
對於方法命名,首字母一會兒大寫,一會兒小寫;一會兒全稱一會兒簡寫;一會兒駝峰命名法一會兒匈牙利命名法。
當然,起一個好的名字不是件容易的事情。首先,既要有盡量多的提供變數信息,又要儘可能的保證名字短小精悍,還不能為了短小而隨意採用縮寫而導致閱讀障礙,另外還要盡量保證以後程序更新後名稱仍然能很好的描述其內容。
在編寫代碼中,要儘可能的遵守一個良好的命名規範,並且不停地的調整學習命名,從而逐漸掌握起一個良好名字的能力。
05
知道了代碼規範的重要性,但有時候迫於項目趕進度壓力,有的因為繁瑣的規範作出很多額外的工作,影響了項目開發進度,而漸漸被忽略。
規範不是對開發的制約,而確實是有助於提高開發效率的,最大的受益人其實還是自己。
不知你有沒有類似這樣的經歷:
很多的時候閱讀自己的代碼,需要花費很多時間?
尤其是出現bug的時候需要逐行的debug?
自己編寫的代碼過了一段時間後再來看自己都亂了頭緒。回到前面說的疑問,這代碼是我自己寫的嗎?
我們應該做的就是規範開發,減少自己出現的錯誤。很多時候項目的壓力一部分也是由於前期開發中遺留的眾多的問題。
那些看似無用的東西要經過我們慢慢地累積由量變達到質變的時候,相信你能體會到其價值所在。
養成良好的代碼規範不是為了別人,也不是為了公司,而是為了提高自己的編程修養,提高自己認識事物的能力。讓自己編寫的代碼可維護性更好、可重用性和可擴展性更強。
接手別人項目時,最讓你最難以接受的是什麼?沒注釋,代碼亂?代碼冗餘?架構拓展差?歡迎留言!
【END】


TAG:洪生鵬 |