由於是業余時間編寫,而且為了保證質量,對寫出來的東西也會反復斟酌,所以每周只能更新兩章左右,請大家諒解,也請大家耐心等待,謝謝大家的支持。
初學者應該怎樣學習本系列內容呢?根據我自己的學習經驗,一般直接看一遍的方法,學習與認知都會比較淺,很快就忘了。而看完后寫筆記、手抄或將所看的內容照着打一遍或多次的,可以比較深刻的理解文章或代碼中的思想,並能將里面的核心內容牢記在心。
對於開發規范,都是老生常談的事情了,很多正規一些的公司都有一套規范來約束,這些規范都是大同小異。
規范為什么那么重要?為什么大家反復提而初學者們都是當作耳邊風,無視這些要求呢?下面先舉幾個例子給初學者說明一下。
08年的時候在一家主要做OA開發的公司,負責OA的二次開發,當時接到項目代碼時傻眼了,沒有文檔、沒有數據字典,代碼規范就不要講了,代碼中的變量命名與數據庫表和字段全是用拼音首字母來命名的,當時真有想死的感覺。當時只能感嘆說,原開發人員真是太奇葩了。
記得幾年前帶過的一批應屆生(當時公司對代碼要求不是很嚴格,只追求能快速出產品),在進公司的時候我也詳細為他們講了開發規范以及相關要求,然后進入開發狀態。而對於這些新進公司的同事來說,開始時應該都會覺得我比較煩,又要求開發規范也要求編寫開發文檔。不過因為公司不太重視,所以當時也沒有很好的實行下去,那他們對開發規范也就不重視了。
一開始做的項目還好,給一些不太復雜的需求,而我也會經常檢查他們的代碼,每周大概會有一到兩天抽空開個小會議,為他們講解代碼中存在的問題以及一些算法,所以代碼雖然不太規范,但也沒有什么問題。后來有一段時間特忙沒空理會大家,而他們也開始各自獨立負責一些小項目開發。其中一位開發的是一款《斗地主》KJava手機游戲,經過一段時間努力奮戰后游戲完成了,而這位同事由於個人原因也同時請辭離職,可想而知這個項目是什么結果。項目在測試時發現存在不少BUG,想叫人接手這個項目時,才發現無人可以接手,因為項目里的注釋量少,又沒有完善的開發文檔,而代碼編碼也不夠規范,花上不少時間研究也沒弄清里面的關系......最終的結果是公司花了不少投入而得出一個無法維護的項目。
還有一個比較經典的案例也是KJava手機項目,做的是《日歷》類的應用軟件,開發人員花了大量的時間,研究中國農歷的時辰、二十八宿、五行、天干地支、民俗吉凶日等內容,終於開發出能自動計算每日時辰吉凶禁忌的手機日歷,投入到市場也有很不錯的下載量和收入,推廣效果很好。產品投入市場三個月后,領導要求對該項目進行二次開發,增加一些新的需求,當這位同事重新熟悉自己寫的代碼時才發現,自己也很難看懂自己寫過的代碼了~~~大家是不是覺得不太可能發生這種事情,自己寫過的代碼也會不記得?呵呵......主文件2K多行代碼沒有多少注釋,功能調用比較混亂,命名與編碼也不規范,再加上各種時辰吉凶禁忌的計算......聽到這些你是否已經開始暈了,最后他自己也只能做一些UI的修改,當然在這以后他對代碼規范的重視也就完全不一樣了。
當然例子還有很多,這類型的例子並不是偶然現象,相信類似的情型也曾發生過在不少公司項目中,為什么會發生這么多類似的案例呢?大家在追求高效開發,快速產出的時候,與代碼規范也並不沖突啊?
接觸多不少類似項目后,發現主要原因可能有這幾個方面:
第一是沒有一個好的開發框架,對於新人來說,還沒有養成良好的開發習慣,接觸的項目也很少,他們不知道如何去規范自己的代碼,也沒有成熟的例子給他們模仿,在開發的時候過於自由沒有約束的話,就會自由發揮,將那里影響自己開發速度,不喜歡的事情全部剔除,然后做出的東西就非常個性化啦;
第二是不懂得開發規范的重要性(根本不重視),覺得自己寫的代碼自己肯定可以看得懂,至於其他人能否看得明白那就無所謂啦,看不明白就最好,那樣的話公司就離不開自己,萬一公司想炒掉自己這個項目可能就黃了。或者代碼自己很熟悉,自以為別人也一樣能看明白。但他們沒有考慮的是,可讀性好、嚴格執行開發規范的代碼在應聘新公司時其實就是一張非常好的敲門磚。
第三是公司領導不重視,上行下效,如果領導層都不重視,那怎么將開發規范貫徹下去?
第四是技術主管不懂得代碼規范以及其重要性。
......
當然也有可能是其他方面的原因,但最重要的還是開發者自身問題,如果你有有一個良好的開發習慣,那么其他外因都影響不到你。
而遵守開發規范真的會浪費你的開發時間,降低開發效率嗎?
對於我本人的開發習慣來說,代碼中的注釋非常多,幾乎占代碼量的1/3到1/2(這只是個人習慣,並不推薦大家都用這種方法),很多人都會覺得不可思議,也許很多人都會想,你這個家伙太浪費時間了,老板真是浪費金錢養你......哈哈......真正的事實是我所在公司的技術團隊中,10年以上經驗的大牛占了一半,而我的開發速度與效率可以排在前二,為什么呢?第一我對開發規范比較重視,已成為我的一種習慣;第二我打字非常快;第三我對項目很了解;第四我必須這么做,因為開發出來的框架、封裝好的類與函數是直接提供給其他同事調用的,如果開發不夠規范且注釋又少的話,那其他同事就會很頭痛了,那么可能要花很多時間與大家溝通說新增了什么功能,它的做什么用的,該怎么調用等等,這樣會浪費很多開發時間。
嚴格按開發規范實施,編寫大量注釋表面看會占用不少時間,但從長期的角度來看,它提高了團隊的開發效率,對二次開發維護也有非常重要的幫助。大家可以設想一下,幾十萬行的代碼,如果沒有好的注解,那就得天天在做猜迷游戲,經常要與大家溝通,了解某個函數是如何使用的,或干脆不用別人已開發的功能,自己重新寫過,那太多的個性化會使項目將來維護起來特別麻煩,這將很大的浪費團隊開發效率。而項目在進行二次開發維護時,由於時間跨度或接手的人不同了,那他要了解之前的功能以及相關業務流程,那將是多少苦逼的事情。
如果一個系統只需要100行代碼,那里問題也不大。如果有一千行代碼,那么認真研究一下也沒可以搞定。要是一萬行、十萬行以上代碼時,不要說別人要理解你開發的框架中,各個接口、類、函數是干什么用的,就算是自己過了段時間也會不清楚為什么代碼是這樣寫的,設置某個參數到底有什么用,某些函數是做什么用的......
看過有園友在博客上說,只要命名規范,寫不寫注釋是無所謂的事情,呃......這個嘛要根據國情,國內很多開發人員的E文並不怎么樣,當然也包括我在內,沒有注釋的話相信不少朋友會很暈,看得很吃力,除非公司能有非常好的文檔與足夠的時間給予學習。這可能也是我這菜鳥水平,沒辦法進那些高大上公司的原因,呵呵......
講了一大堆看似無關的事情,其實主要目的是告訴初學者們,開發規范比你們想象中還重要,所以接下來就不要再懶惰了,從現在起認真要求自己,養成良好的開發習慣,對你的職業生涯的幫助將會非常大。
那么本框架開發中,我們要使用什么樣的開發規范呢?
網上很多規范內容都非常詳細,並不一定適合本本項目,所以針對本項目的需求我對相關的規范文檔進行了一些修改。對於本文檔你只要了解就可以了,具體到編碼時你按我代碼中的風格嘗試去編寫,慢慢你就可以掌握大部分的要求了,至於更詳細更規范的要求,等本項目完成后大家再繼續自己去進修吧o(∩_∩)o
文檔下載地址:點擊下載
版權聲明:
本文由AllEmpty原創並發布於博客園,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過1654937@qq.com 聯系我,非常感謝。
發表本編內容,只要主為了和大家共同學習共同進步,有興趣的朋友可以加加Q群:327360708 或Email給我(1654937@qq.com),大家一起探討。
更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/