今天突發(fā)奇想,對編碼習慣和編程風格很感興趣,于是乎,找了一下關(guān)于編程風格(Java篇)的資料,希望對愛好編碼或者開始學習編碼的同學有幫助! 來自《The Elements of Java Style》-《Java編程風格》一書,值得一讀的書籍,會讓你在細節(jié)上節(jié)省很多時間,合作之間更加愉快! 好處不多說了,但是有幾個原則如下: 1.保持原有風格 2.堅持最小驚奇原則 3.第一次就做對 4.記錄所有非規(guī)范行為 格式規(guī)范:1.縮進嵌套的代碼:在每個代碼塊和嵌套中加入縮進,縮進代碼,加強可讀性。這些地方包括【類定義,內(nèi)部類定義,方法定義,靜態(tài)塊,for循環(huán)語句,if-else語句,try、catch和finally塊,匿名內(nèi)部類,while語句,do-while語句】 2.斷開很長的句子:第一,如果包含了逗號,那么在每一個逗號后面都另起一行,把逗號后面的每一個表達式都和逗號前面的表達式的第一個字母對齊。第二,應(yīng)該在優(yōu)先級最低的運算符之前斷行。 3.使用空白:關(guān)鍵字和左括號之間,右括號和緊隨其后的關(guān)鍵字,除了”.”之外的運算符與其前后的表達式之間用空格隔開。每個邏輯上獨立的方法和代碼段之間,定義類或者接口的成員之間,每個類和接口之間應(yīng)該加入空白行。 4.不要直接使用Tab控制符:不同環(huán)境對Tab控制符的解釋也是不同的。 命名約定:1.名稱應(yīng)該具有實際意義 2.使用人們熟悉的名稱 3.謹慎使用過長的名字,可以使用簡明通用的縮寫 4.盡量保留元音字母 5.縮寫詞的第一個字母大寫 6.不要使用大小寫來區(qū)分的名字 包命名: 1.用你所在組織的域名的倒序小寫形式作為包的根限定詞 2.使用單獨的小寫詞作為每個包的根名 3.僅當新舊版本二進制兼容的時候,其包可以使用相同的名字,否則,請使用新名字 類型命名: 1.類和接口名中的每個單詞的第一個字母大寫 類命名: 1.用名詞命名類 2.具有成組相關(guān)屬性,靜態(tài)服務(wù)或者常量的類名字使用復(fù)數(shù)形式 接口命名: 1.用名詞或者形容詞命名接口 方法命名: 1.方法名中的第一個單詞小寫,其后每個單詞的第一個字母大寫 2.用動詞命名方法 3.遵循JavaBean中命名屬性訪問函數(shù)方法:set,get,is 變量命名: 1.變量命中的第一個單詞小寫,其后的每個單詞的第一個字母大寫 2.用名詞命名變量 3.集合引用名要用復(fù)數(shù)形式 4.為不重要的臨時變量簡歷并使用一套標準名字 字段命名: 1.使用this字段變量可以區(qū)分開局部變量 參數(shù)命名: 1.構(gòu)造函數(shù)或者”set”方法給字段分配參數(shù)賦值,參數(shù)名應(yīng)該和字段名相同 常量命名: 1.常量的每個單詞均大寫,單詞之間使用下劃線連接 文檔約定:1.為使用和維護你的代碼的人編寫文檔 2.注釋和代碼要同步 3.使用積極的語氣,省略無用的詞語 注釋類型:1.用文檔注釋來描述編程接口 2.用標準注釋格式隱藏代碼而不必刪除它們 3.用單行注釋解釋實現(xiàn)細節(jié) 文檔注釋: 1.在編寫代碼前描述編程接口 2.為公用,受保護,包,私有成員建立文檔 3.為每個包編寫總結(jié)和概述 4.為包的每個應(yīng)用程序或組編寫概述 注釋風格: 1.對所有文檔注釋使用統(tǒng)一的格式和組織結(jié)構(gòu) 2.關(guān)鍵字,標識符和常量應(yīng)放到<code>…</code>標簽中 3.將代碼放入<pre>…</pre>標簽中 4.在標識符第一次出現(xiàn)的時候用{@link}標簽 5.為Javadoc標簽簡歷并使用一套固定的順序 6.使用第三人稱敘述的形式 7.編寫?yīng)毩⒌母攀?/p> 8.省略概述中動作和服務(wù)的主語 9.省略事物概述中的對象和動詞 10.使用this而不是the來指代當前類中的實例 11.方法名或者構(gòu)造函數(shù)名不需圓括號,除非你想突出一個特殊的簽名 注釋內(nèi)容: 1.每個類、接口、字段和方法都編寫概述 2.完整描述每個方法的簽名 3.包含示例 4.為前置、后置、不變條件編寫文檔 5.為已知的缺陷和不足編寫文檔 6.為同步語法編寫文檔 內(nèi)部注釋: 1.僅添加有助于理解你的代碼的內(nèi)部注釋 2.描寫代碼為什么這樣做,而不是在做什么 3.避免使用行尾注釋 4.用行尾注釋解釋局部變量聲明 5.建立并使用一套關(guān)鍵詞來標識尚未解決的問題 6.在嵌套程度高的控制結(jié)構(gòu)中標記出嵌套結(jié)束位置 7.如果兩個case標記之間沒有break語句,就在中間加入“fall-through”注釋 8.標記空語句 編程約定:1.將表示基礎(chǔ)數(shù)據(jù)類型的類聲明為final類型 2.通過本地類型和其他具體類型建立具體類型 3.定義小的類和小的方法 4.定義子類,以便任何使用超類的地方都可以使用子類 5.使所有字段私有 6.使用多態(tài)來替代instanceof 類型安全: 1.以java.lang.Object包裝通用類,提供靜態(tài)類型檢查 2.以類的形式封裝枚舉類型 3.盡量使用泛型 語句和表達式: 1.用等價的方法替換重復(fù)的、復(fù)雜的表達式 2.使用塊語句代替控制流結(jié)構(gòu)的表達式 3.使用括號明確操作順序 4.在switch語句中的最后一個case體使用break語句 5.使用equals(),而不是==來檢測對象的對等關(guān)系 構(gòu)造: 1.構(gòu)造狀態(tài)有效的對象 2.不要從構(gòu)造函數(shù)中調(diào)用非final方法 3.用嵌套的構(gòu)造函數(shù)消除冗余代碼 異常處理: 1.使用不受檢查、運行時的異常來報告可能在程序邏輯中出錯的嚴重未查明錯誤 2.使用檢查異常來報告可能發(fā)生,而在正常的程序運行時極少發(fā)生的錯誤 3.用返回代碼報告可預(yù)知的狀態(tài)改變 4.僅轉(zhuǎn)化異常來添加信息 5.不要私自處置運行時或者錯誤異常 6.用finally語句塊釋放資源 斷言: 1.按照約定編程 2.用無用代碼消除機制實現(xiàn)斷言 3.用斷言捕捉代碼中的邏輯錯誤 4.用斷言檢測方法的前置條件和后置條件 并發(fā): 1.僅在適當?shù)牡胤绞褂镁€程 同步: 1.避免同步 2.用同步的包裝器,提供同步接口 3.如果方法包含幾個不需要同步的重要操作,那么不要同步整個方法 4.讀寫實例變量的時候避免不必要的同步 5.使用notify()而不是notifyAll() 6.為同步初始化使用雙重檢查模式 效率: 1.使用懶惰初始化 2.避免創(chuàng)建不必要的對象 3.重新初始化并重新使用對象,盡量不要新建對象 4.把優(yōu)化工作留在日后 打包約定:1.將經(jīng)常使用、更改、同時發(fā)布或者互相依存的類型,放在同一個包里 2.共同封閉原則 3.重用/發(fā)布等價原則 4.無環(huán)依賴原則 5.將不穩(wěn)定的類和接口隔離在單獨的包中 6.易于修改的包不要依賴于難以修改的包 7.最大化抽象最大化穩(wěn)定性 8.將高層設(shè)計和架構(gòu)作為穩(wěn)定的抽象,組織為穩(wěn)定的包 以上僅是一些規(guī)則簡單的羅列,推薦閱讀此書。 |
|