java代碼開發規范

          Java代碼開發規范

                                 

          格式規范:                                                                     

                1、TAB空格的數量。編輯器上的TAB空格數量統一取值為4

                2、換行, 每行120字符

                3、if語句的嵌套層數3層以內   

                4、匿名內部類20行以內 ,太長的匿名內部類影響代碼可讀性,建議重構為命名的

                  (普通)內部類。

                5、文件長度2000行以內

                6、方法長度150行以內

                7、邏輯上相關序代碼與其前后之程序代碼間應以空白行加以分隔;在注釋段與程序

                   段、以及不同程序段插入空行。提高可讀性

             

               8、方法(構造器)參數在5個以內 ,太多的方法(構造器)參數影響代碼可讀性。

                   考慮用值對象代替這些參數或重新設計。

                9、CC 度量值不大于10

                   解釋:CC(CyclomaticComplexity)圈復雜度指一個方法的獨立路徑的數量,可以

                   用一個方法內if,while,do,for,catch,switch,case,?:語句與&&,||操作符的

                   總個數來度量。

               10、NPath度量值不大于200

                   解釋:NPath度量值表示一個方法內可能的執行路徑的條數。

               11、布爾表達式中的布爾運算符(&&,||)的個數不超過3個

                

          命名規范:                                                                                                               

          開發人員如果遇到以下未列舉的類型,請書面通知相關管理人員,由管理人員集中更新列

           表內容,不得擅自啟用未經確定的新變量前綴

             

           包名 必須全部用小寫。

           命名方式:業務領域名.子系統名.層名 如com.iteach.dao.weibo

             

          類名 以英文單詞取名,首字母必須大寫,多個英文單詞以大寫字母間隔,避免使用單詞的縮寫,除非它的縮寫已經廣為人知,如HTTP。類名中不允許'_'、 '-'等符號。[A4] 

             

          屬性 在類定義的開始,按照public,protected,package,private順序放置。定義local變量盡量在那段代碼的開始處,如方法的開始處。

          如果是if,for,while段,盡量在左大括號"{"的下一行處定義要使用的local變量。

          盡量用相同含義英文單詞表示,不允許'_'、 '-'等符號,如:custName。第一個字母小寫,中間單詞的第一個字母大寫。不要用_或&等符號作為第一個字母。 單字符的變量名一般只用于生命期非常短暫的變量。如:i,j,k,m,n一般用于int。如果變量是集合,則變量名應用復數,即以小寫s結尾 。例如:

          序號

          變量名稱

          注    釋

          1

          strFileName

          "文件名"字符串類型

          2

          intFileCount

          "文件總數"整型

          3

          strFames

          多個"文件名"的集合

          4

          gMemory

          全局變量

             

           常量名 均全部大寫,單詞間以'_'隔開。例如:

          序號

          常量名稱

          注 釋

          1

          MAX_NUM

          最大數

          2

          public static final String FUNCTION_LIST = "function_list";

             

          方法 命名采用"動作+屬性" 的方法。并且,動作以小寫字母開始,屬性以大寫字母開始。常用的動作有:is、get、set、add、 update、del等。

          例如:getName、setName、isSysManager、saveXXX、mdfXXX、delXXX等。

          規則名稱

          規則

          說明

          新增數據

          addXXX

            

          修改數據

          updateXXX

            

          刪除數據

          deleteXXX

            

          查詢數據

          findXXX

          getXXX

          findUserByName() 獲取單個

          getUserByName()  獲取所有

          備注:

                遇到縮寫如XML時,僅首字母大寫,即loadXmlDocument()而不是

                    loadXMLDocument()

             

                    為了基于接口編程,不采用首字母為I或加上IF后綴的命名方式,如

                    IBookDao,BookDaoIF。

             

                    頁面部件名建議命名為:btnOK、lblName或okBtn、nameLbl

                    其中btn、lbl縮寫代表按鈕(Button)、標簽(Label)。

             

          注釋規范:                                                                      

          在類、方法開始之前需要添加中文注釋,類和方法的注釋采用Java自動生成的注釋格式。

                1、類注釋:

                /**

                 * 類功能說明

                 * 類創建者 創建日期

               */

                2、函數注釋

               /**

                * 函數功能說明

                * 創建者名字 創建日期

                * 修改者名字 修改日期

                * 修改內容

                * @param 參數名稱  參數類型 參數說明

                * @return 返回值類型 返回值說明

                */

                3、程序段注釋

                       如果做過修改需加上修改者和日期   //修改者 修改日期 說明

              或者     

                    /**

                     *修改者 修改日期

                     *說明

                            */

                4、變量或屬性注釋

                    //說明

                5、失效代碼注釋

                      由/*...*/界定,標準的C-Style的注釋,專用于注釋已失效的代碼

              

                 注:沒有意義的注釋語句刪掉,不留空的注釋語句

             

             

             

              備注建議的注釋:(非下劃線標注的規范建議使用,不強制)

                 循環語句和判斷語句前必須注釋。

                  特殊變量聲明時需要注釋。

                  如果方法允許Null作為參數,或者允許返回值為Null,必須在JavaDoc中說明。

             

                     注釋中的第一個句子要以(英文)句號、問號或者感嘆號結束。Javadoc生成

                     工具會將注釋中的第一個句子放在方法匯總表和索引中。

                     

                     為了在JavaDoc和IDE中能快速鏈接跳轉到相關聯的類與方法,盡量多的使用

                     @see xxx.MyClass,@see xx.MyClass#find(String)。

             

                     如果注釋中有超過一個段落,用<p>分隔。

                     示例代碼以<pre></pre>包裹。

                     標識(java keyword, class/method/field/argument名,Constants) 以<code></code>

                     包裹。

             

                     標識在第一次出現時以{@linkxxx.Myclass}注解以便JavaDoc與IDE中可以鏈

                     接。

                        

                     如果該注釋是廢話,連同標簽刪掉它,而不是自動生成一堆空的標簽,如空的

                     @param name,空的@return。

             推薦的注釋內容:

                     對于API函數如果存在契約,必須寫明它的前置條件(precondition),后置條件

                     (postcondition),及不變式(invariant)。

             

                     對于調用復雜的API盡量提供代碼示例。

                     對于已知的Bug需要聲明。

                     在本函數中拋出的unchecked exception盡量用@throws說明。

             

                     代碼質量不好但能正常運行,或者還沒有實現的代碼用//TODO: 或 //XXX:

                     聲明存在錯誤隱患的代碼用//FIXME:聲明

             

          異常處理:                                                                     

                    重新拋出的異常必須保留原來的異常,即throw new NewException("message", e);

                    而不能寫成throw new NewException("message")。

             

                    在所有異常被捕獲且沒有重新拋出的地方必須寫日志。

                    如果屬于正常異常的空異常處理塊必須注釋說明原因,否則不允許空的catch塊。

             

                    框架盡量捕獲低級異常并封裝成高級異常重新拋出,隱藏低級異常的細節,方便 

                    系統能夠更好的跟蹤運行情況。

                     

                     

                    如果一個層要拋出多個異常,那么所有自定義異常必須統一繼承一個父類異常。

                    這樣上層可以通過父類異常捕獲。

             

          編寫細節建議規范:                                              

             

             1、 為了提高可讀性,一般情況下,字符串的連接使用"+",而不是StringBuffer

                        中的方法。在考慮速度性能的時候才考使用StringBuffer

             

                2、(不強制)沒有特殊原因,不要定義synchronized 的方法。而是在方法內實

                       際需要同步的代碼段加入synchronized限定,如:

                            public void sharedMethod() {
          			

           

                                   String display = null;
          			

           

                                   synchronized( this ) {
          			

           

                                 display = mySharedObject.getHelloWorld();
          			

           

                                    }
          			

           

                                     System.out.println( display );
          			

           

                               }
          			

           

             

             

              3、   捕捉例外的標準書寫規則如下:

          try{

                 // some stuff

          } catch ( FileNotFoundException fnfe ) {

                 // some stuff

          } finally {

                 // some stuff

          }

                        例外的變量名統一規定為例外類名中大寫字母的組合。

             

                 4、  (不強制)對于一個方法或實例化類調用是否成功,不采用返回boolean值來判

                        斷,而采用捕捉例外的方法,如:

          Order m_order = new Order();

          try {

                 m_order.init();

          } catch ( OrderNotFoundException onfe ) {

                 // some stuff

          }

          http://cobaya.cn/

          posted on 2012-09-11 16:51 Nirvana reborn 閱讀(4919) 評論(3)  編輯  收藏 所屬分類: ★項目架構

          評論

          # re: java代碼開發規范 2012-09-12 09:41 莊虎

          好文章 我要打印下來保存  回復  更多評論   

          # re: java代碼開發規范 2012-09-12 12:35 Nirvana reborn

          @莊虎
          拙作,多多交流,多多支持,謝謝!  回復  更多評論   

          # re: java代碼開發規范 2012-09-17 15:10 Nirvana reborn

          @tb
          多多交流!!!  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          公告

          我好喜歡它,
          我的 QQ 66013804
          我想做技術流,可是我很懶,
          博客新地址:<a href="

          隨筆分類(19)

          文章檔案(1)

          博主鏈接

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 昌宁县| 朔州市| 阿尔山市| 宜丰县| 富阳市| 建阳市| 云龙县| 修水县| 洛南县| 叶城县| 东至县| 安阳市| 衡东县| 汕头市| 普定县| 水城县| 广宁县| 林州市| 西乌珠穆沁旗| 湘阴县| 东至县| 宾阳县| 信宜市| 揭阳市| 龙岩市| 南阳市| 临城县| 望都县| 临洮县| 武胜县| 遂川县| 华坪县| 肥西县| 庆城县| 清流县| 衡阳县| 拜城县| 仪征市| 海盐县| 石门县| 平舆县|