01
關(guān)于馬化騰編碼的水平,網(wǎng)絡(luò)上曾有這樣一個段子:
曾經(jīng)和pony(馬化騰)一起寫過代碼亏较。當(dāng)時我莺褒、pony、馬克3人擠在一個只有10個位置的房間里雪情,埋頭開發(fā)遵岩。馬克當(dāng)時負(fù)責(zé)排查兩個bug,跟進(jìn)了10個月巡通,沒有一點進(jìn)展尘执,下樓準(zhǔn)備買點瑞士卷吃,消消愁宴凉≌裕回來發(fā)現(xiàn)pony光著膀子,啃著個豬蹄兒跪解,站在陽臺,望著寂靜的夜签孔,回頭冷靜地和馬克說了句:“bug我?guī)湍闾幚砗昧瞬婕ァ!?/p>
可見老馬的編碼水平之高饥追,當(dāng)然图仓,這只是個段子。但據(jù)說當(dāng)年創(chuàng)業(yè)時但绕,公司主頁是馬化騰自己親手制作的救崔。
關(guān)于他編碼是不是最好的,我們不知道捏顺;但可以肯定的是六孵,他一定是通過軟件掙錢掙得最多的那位程序員。
02
無獨有偶幅骄,互聯(lián)網(wǎng)界的精英劫窒,大多數(shù)是技術(shù)出身,譬如雷軍拆座、李彥宏主巍、周鴻祎等冠息,幾乎都是編程高手。作為京東首席CEO孕索,劉強(qiáng)東編碼水平也備受關(guān)注逛艰。
知乎上,有人曾提問過這樣一個問題:
劉強(qiáng)東的代碼水平如何?
有網(wǎng)友這樣回復(fù):
劉強(qiáng)東在一次講座上搞旭,稱自己在校大三的時候散怖,也就是1995年左右,他給別人寫代碼选脊,一個晚上就能賺5萬杭抠。
95年一個晚上5萬,那是什么概念恳啥。
至于劉強(qiáng)東編碼的水平究竟怎樣偏灿,是不是像上面網(wǎng)友形容的那樣,可以一個晚上賺5萬钝的,我們無從而知翁垂。
但可以肯定的是,無論是馬化騰還是劉強(qiáng)東硝桩,所編寫的代碼應(yīng)該很規(guī)范沿猜。
不知你有沒有類似這樣的這樣的經(jīng)歷:
回頭看看自己一年前編寫的代碼,驚訝地發(fā)現(xiàn)碗脊,哇哈啼肩,如此不規(guī)范的代碼,是誰編寫的衙伶?確定是我寫的嗎祈坠?我能寫出這樣慘目忍睹的代碼?分分鐘鐘懷疑人生矢劲。
代碼規(guī)范的重要性我們都知道赦拘,但要真正做好,還需要我們在實踐中慢慢的累積芬沉,不斷修煉躺同。
03
如果代碼沒有統(tǒng)一的規(guī)范,每個人都按照自己掌握理解的那一套丸逸,那么整個項目的代碼很可能就會出現(xiàn)風(fēng)格迥異蹋艺。即使是分工明細(xì),每個人負(fù)責(zé)一個模塊黄刚,等到要整合代碼的時候就尷尬了车海。
很多時候,并非程序的算法有多復(fù)雜,或是邏輯多么復(fù)雜侍芝,而是因為代碼不規(guī)范研铆,越讀越費勁,把精力都耗在這里了州叠。
統(tǒng)一的代碼規(guī)范可使得代碼可讀性大大提高棵红, 在團(tuán)隊的合作開發(fā)中是非常有益而且很有必要。
04
項目維護(hù)工作不僅讀懂源碼咧栗,而且還需要在原有源碼基礎(chǔ)上作出修改逆甜。如果沒有統(tǒng)一代碼規(guī)范,很可能會出現(xiàn)這種現(xiàn)象:
張三完成開發(fā)以后致板,李四進(jìn)行維護(hù)加一段代碼交煞,過一段時間王五又加一段代碼。原本一個很普通的需求斟或,經(jīng)歷了N次迭代和修改素征,已經(jīng)形成了巨大的功能。直到有一天萝挤,張三御毅、李四、王五都辭職了怜珍,新來的員工看到那一大堆沒有統(tǒng)一規(guī)范的代碼端蛆。想死的心都有了。
隨著不斷迭代版的維護(hù)成本越來越高酥泛,從而形成惡性循環(huán)今豆。程序背后的架構(gòu)設(shè)計或模式固然重要,但良好的命名也不容忽視柔袁。不規(guī)范的命名不僅讓我們對代碼難以理解呆躲,更糟糕的是,會誤導(dǎo)我們的思維瘦馍,導(dǎo)致對代碼的理解有偏差。
相反应役,良好的命名規(guī)范情组,則可以讓我們的代碼更加容易讀懂,也能向讀者正確表達(dá)事物以及邏輯的本質(zhì)箩祥,閱讀命名規(guī)范的源碼理解沒有那么費勁院崇,會有一種享受的感覺。
有人喜歡對控件textview1袍祖,textview2底瓣,textview3、,textview4類似這樣的命名捐凭,甚至還對其添加注釋拨扶。
有人可能認(rèn)為注釋越多,其他人看到的就會越好茁肠。其實不然患民,注釋過多,或是一些冗余注釋垦梆,反而會影響源碼的可讀性匹颤。如果我們良好的命名規(guī)范,結(jié)合了需要和命名托猩。它可以省去許多不必要的注釋印蓖。
對于方法命名,首字母一會兒大寫京腥,一會兒小寫赦肃;一會兒全稱一會兒簡寫;一會兒駝峰命名法一會兒匈牙利命名法绞旅。
當(dāng)然摆尝,起一個好的名字不是件容易的事情。首先因悲,既要有盡量多的提供變量信息堕汞,又要盡可能的保證名字短小精悍,還不能為了短小而隨意采用縮寫而導(dǎo)致閱讀障礙晃琳,另外還要盡量保證以后程序更新后名稱仍然能很好的描述其內(nèi)容讯检。
在編寫代碼中,要盡可能的遵守一個良好的命名規(guī)范卫旱,并且不停地的調(diào)整學(xué)習(xí)命名人灼,從而逐漸掌握起一個良好名字的能力。
05
知道了代碼規(guī)范的重要性顾翼,但有時候迫于項目趕進(jìn)度壓力投放,有的因為繁瑣的規(guī)范作出很多額外的工作,影響了項目開發(fā)進(jìn)度适贸,而漸漸被忽略灸芳。
規(guī)范不是對開發(fā)的制約,而確實是有助于提高開發(fā)效率的拜姿,最大的受益人其實還是自己烙样。
不知你有沒有類似這樣的經(jīng)歷:
很多的時候閱讀自己的代碼,需要花費很多時間蕊肥?
尤其是出現(xiàn)bug的時候需要逐行的debug谒获?
自己編寫的代碼過了一段時間后再來看自己都亂了頭緒。回到前面說的疑問批狱,這代碼是我自己寫的嗎裸准?
我們應(yīng)該做的就是規(guī)范開發(fā),減少自己出現(xiàn)的錯誤精耐。很多時候項目的壓力一部分也是由于前期開發(fā)中遺留的眾多的問題狼速。
那些看似無用的東西要經(jīng)過我們慢慢地累積由量變達(dá)到質(zhì)變的時候,相信你能體會到其價值所在卦停。
養(yǎng)成良好的代碼規(guī)范不是為了別人向胡,也不是為了公司,而是為了提高自己的編程修養(yǎng)惊完,提高自己認(rèn)識事物的能力僵芹。讓自己編寫的代碼可維護(hù)性更好、可重用性和可擴(kuò)展性更強(qiáng)小槐。
接手別人項目時拇派,最讓你最難以接受的是什么?沒注釋凿跳,代碼亂件豌?代碼冗余?架構(gòu)拓展差控嗜?歡迎留言茧彤!
【END】