根據當前項目中代碼存在的一些問題,編寫了一個編碼注意事項。這些注意事項都是針對自己當前實施的項目的代碼提出來的,並不作為項目的編碼規範,僅為項目群組成員提供參考。
1. 所有源檔案(包括 .java、.jsp、.properties、.html、.js、.css、.xml、.txt等)統一使用 UTF-8 編碼。
2. 每天上班時,從 SVN 擷取最新代碼;下班前,必須將測試通過的功能模組代碼提交至 SVN 版本庫。提交至SVN的代碼必須是完整的!
1. JAVA
1. 類和方法的命名必須具有實際意義,命名風格必須保持一致,禁止使用中英混搭(盡量使用英文,而非漢語拼音)。
2. 禁止寫入程式碼,項目中經常用到的且在整個項目開發、運行過程中始終不會修改的值,可以作為java常量統一定義在一個常量介面中;如果在項目開發、運行過程中可能會需要進行修改的值(如資料庫的配置資訊),則必須定義在設定檔中。
3. 對於 I/O 流對象、JDBC操作資料庫的對象、Socket 對象、LDAP連線物件、JMS連線物件等,在使用完成時,必須在 finally 塊中將其關閉。如果是在迴圈體中聲明的,則必須在迴圈體中關閉。(誰聲明,誰管理)。
4. 編譯層級在 jdk 1.5 以上的系統,在開發時集合類建議使用泛型,以免程式中到處都是警告。
5. 盡量避免在http session 中存放大對象,尤其是很大的集合對象。
6. 通過JDBC操作資料庫的時候,能夠通過一條 SQL 陳述式完成的功能,盡量避免使用多條 SQL 分開執行,如果同時執行多條 DML 語句,則必須開啟事務,保證資料的完整性。對於需要傳入參數的操作,為了防止SQL注入,必須使用 java.sql.PreparedStatement,而不能使用 java.sql.Statement。
7. 很多類都需要使用到的方法,盡量提取到 *Util 類中,而不要在每個用到該方法的類中都定義一次;如果只是少數幾個同種類型的類共用的方法,則可以考慮將其提取到父類中。
8. 常用的字串、數字、日期、數組操作,應當盡量使用 apache-commons-lang.jar 中的方法;常用的I/O操作,應當盡量使用 apache-commons-io.jar 中的方法,而不要自己再另外去定義了。
9. Servlet或Action返回 json 格式的資料時,切莫手動拼接 json 格式的字串,而應該直接使用 json-lib.jar 中的相關類進行操作。
10. 程式中禁止出現 System.out.println...的語句,應該使用 logger.debug 或 logger.info 代替;e.printStackTrace();則應該使用 logger.warn(e) 或logger.error(e) 代替。
11. 對於代碼中的 // TODO 標記語句,在完成了該任務的代碼編寫後,應當及時刪除。
12. 如果一個類有成對的操作時,方法的命名一定要注意相對應,常見的方法命名對應關係有:
add-->remove、insert-->delete、put-->get、create-->drop、init-->destroy、open-->close、start-->stop、begin-->end、first-->last、next-->previous、up-->down、send-->receive、lock-->unlock、show-->hide
2. JSP
1. 多個頁面共用的部分(如:頁頭和頁尾)應該提取為單獨的 jsp 檔案,然後在各個使用到該部分代碼的頁面用 <%@taglib inclue ...%> 將對應的程式碼封裝含進來。
2. 引入其他 jsp 檔案的時候,盡量使用指令引入,如果需要動態傳入參數,才考慮使用 jsp 動作進行引入。
3. 能用 EL 表達和 jsp 標籤實現的,盡量避免使用 <% %> 這樣的Java指令碼代碼。
4. jsp 檔案中引入 java 類的時候,為了提高代碼的可讀性,盡量每引入一個類單獨佔用一行。
3. HTML
1. 每個HTML頁面的第一行必須為 DOCTYPE 聲明,告知瀏覽器解析CSS的模式,以免頁面在各個瀏覽器中顯示的效果不一樣。
2. 盡量使用 DIV 進行布局,而不要使用 Table 嵌套 Table 的形式進行頁面配置。
3. 給Table、TD等元素指定寬度和高度時,應該使用樣式進行指定,而不是使用元素的 width 和 height 屬性進行指定。
4. 頁面內元素的嵌套必須為一一對應。
5. 給元素內的文字內容的四周添加空白地區禁止使用 和 <br>,而應該改為使用元素的 padding 樣式進行控制。
4. JavaScript
1. 共用的 js 片段必須提取為單獨的方法。
2. 多個頁面共用的 javascript 方法必須提取為單獨的 js 檔案,禁止在每個頁面中寫一個相同方法。
3. 方法和變數的命名必須有實際意義,禁止命名為類似於 aaa、bbb 的名稱。
4. 頁面載入完成後馬上執行的方法,盡量避免使用 <body onload="xxx()"> 和 window.onload=function(){} 的形式,應該改為使用 jQuery(document).ready(function(){}); 的形式。
5. 盡量避免在同一個頁面或同一個 js 檔案中同時使用原生的 js 和 jQuery 對頁面元素進行操作。
5. CSS
1. 多個頁面共用的樣式,必須提取為單獨的 css 檔案。
2. css 檔案中的樣式類名稱必須有實際意義,禁止使用類似於STYLE1、STYLE2 的名稱進行命名。
3. css檔案中止使用 tagName tagName (如 div div) 這樣的選取器,應該將其改為 #id tagName或 .class tagName 這樣的形式。
4. css 檔案中選取器的排序:元素選取器 –> 類別選取器 –> id選取器