摘要:在上一篇的編程風格學習二中我們學習了一些在編碼過程中的格式規范,遵循這些規范毋庸置疑是我們的書寫高質量代碼的前提與基礎。二語言編程規范常量命名常量的每個單詞均大寫,單詞之間使用下劃線連接。方法表示動作,采用動詞命名。
在上一篇的java編程風格學習(二)中我們學習了一些在Java編碼過程中的格式規范,遵循這些規范毋庸置疑是我們的書寫高質量代碼的前提與基礎。今天我們更進一步,一起來學習Java編程的命名規范,向著編寫高質量代碼的終極目標進發。
(一)編程語言的通用規范在詳細介紹Java元素的命名規范之前我們首先來看一下所有語言通用的一些編碼規則。
1.名稱應該有實際意義當我們為變量、方法、類或者常量命名的時候應該使用對閱讀者來說是具有實際意義的名稱,避免使用單個字母或者通用名。
我們首先來看下面這一段代碼:
if (a < 65) { y = 65 - a; } else { y = 0; }
在上面這段代碼中,雖然我們能理清代碼的執行過程,但是卻不能判斷出變量a和常數65的意義,這毫無疑問讓我們很難理解這段代碼的實際意義。
如果我們使用具有實際意義的名稱來替換代碼中的字母變量和常量,這段代碼將十分容易理解。
if (age < RETIREMNT_AGE) { yearsToRetirement = RETIREMNT_AGE - age; } else { yearsToRetirement = 0; }
這種命名規則有一個例外情況,就是臨時變量的命名。
for (int i = 0; i < numberOfStudents; i++) { enrollStudent(i); }
臨時變量的意義通過上下文的充足信息我們就可以判斷出來,無需為其多帶帶命名。
2.使用人們熟悉的名稱使用閱讀者所熟悉的領域中的術語。如果閱讀者習慣使用“customer”這個詞,就不要使用“client”。當領域或者目標行業已經存在通用術語時,開發人員就不應該再采用非通用術語或者自己造新詞。
3.謹慎使用過長的名稱如果類、接口、變量和方法的名稱過長,那就說明這個實體的定義十分復雜。在給一個實體命名時,我們首先要考慮的是它的設計和用途,通過建立更具有針對性的類、接口、方法和變量來構成這些實體,并且給它們更簡單有意義的名稱。
4.不要使用只依賴大小寫來區分的名字雖然Java編譯器可以區分那些大小寫不同的名字,但是人在閱讀時是很難注意到差別的,這就很容易對讀者造成誤導。
比如,變量theSQLInputStream和變量theSqlInputStream是不應該出現在同一個作用域的。
常量的每個單詞均大寫,單詞之間使用下劃線連接。用大寫字母命名常量可以和其他非final型變量相區分開。
class Byte { public static final byte MAX_VALUE = 255; public static final byte MIN_VALUE = 0; }2.變量命名 (1)使用名詞來命名變量,變量名中的第一個單詞小寫,其后的每一個單詞的第一個字母大寫。
變量就是一個對象、事物,我們使用名稱表示。大寫能區分名詞中的每一個單詞,首字母小寫則可以區分變量名和類名。
(2)集合引用名要使用復數形式對象集合的字段和變量的名字要使用集合里包含的對象類型的復數形式,這便于區分多值變量和單值變量。
Customer[] customers = new Customer[MAX_CUSTOMERS]; void addCustomer(int index,Customer customer) { this.customer[index] = customer; } Vector orderItems = new Vector(); void addOrderItems(OrdetItem orderItem) { this.orderItems.addElement(orderItem); }(3)為不重要的臨時變量建立一套標準名稱
大多數變量的名字要使用完整的表述,但是也有很多經常出現的變量使用簡寫形式。
下面是幾個比較常用的例子:
字符--------c,d,e
坐標--------x,y,z
異常--------e
圖形--------g
對象--------o
流 ----------in,out
字符串-----s
(4)字段、參數命名我們在使用構造方法或者set方法給字段賦值時,應該為參數名和字段使用相同名稱,在方法內部使用this關鍵字來區分局部變量和字段變量。
class Student { private String name; public Student(String name) { this.name = name; } public void setName(String name) { this.name = name; } }3.方法命名 (1)使用動詞命名方法,方法名中的第一個單詞小寫,其后的每個單詞的第一個字母大寫。
方法表示動作,采用動詞命名。大寫可以把名字里的各個單詞很明確的區分開,首字母小寫則可以將方法調用和構造方法區分開。
class Account { private int balance; public Account(int balance) { this.balance = balance; } public void withdraw(int amount) { deposit(-1 * amount); } public void deposit(int amount) { this.balance += amount; } }(2)遵循JavaBeans中屬性訪問函數的方法的命名規范
JavaBeans規范為方法建立了一套命名規范,用來訪問JavaBeans實現的屬性。在任何類中定義方法都應該使用這些規范,無論是否實現了Bean。
JavaBean用is開頭的方法公開boolean屬性:
boolean isValid() { return this.isValid; }
JavaBean用get開頭的方法對其他屬性進行訪問:
string getName() { return this.name; }
JavaBean用set開頭的方法對屬性進行寫入操作:
void setName() { this.name = name; }4.類命名 采用名詞命名類,類名中的每個單詞的第一個字母大寫。
類用來定義對象或者事物,應該采用名詞形式。大寫可以明顯地區分名字中各個單詞,首字母大寫則可以區分變量名以及類名或者接口名。
class CustomerAccount { ··· }5.接口命名 采用名詞或者形容詞命名接口,接口中的每個單詞的第一個字母大寫。
接口描述一個對象的能力或者使聲明對象能夠提供的服務。
a.使用名詞給作為服務聲明的接口命名:
public interface ActionListener { public void actionPerformed(ActionEvent e); }
b.使用形容詞來為描述某種能力的接口命名:
public interface Runnable { public void run(); }
大多數的接口命名都是采用形容詞,這些形容詞由動詞加上able或者ible后綴得來。更能表示接口是表示一種能力的本質含義。
6.包命名 (1)使用多帶帶的小寫動詞作為每個包的根名包名里必須包含一個多帶帶的小寫詞,能夠清晰體現包的用途。包名也可以包含一個有實際意義的縮寫,例如Java標準包的java.io。
(2)用你所在組織的域名的倒序小寫的形式作為包名字的根限定詞例如,一個公司的域名為 weikanwave.com,該公司發布了一款名為server的服務器應用程序,那么該公司將該包命名為com.weikanwave.server。
以上內容就是本篇文章的全部內容,如果有補充或者不妥之處還請各位不吝賜教,下一篇我們將學習Java的文檔規范。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66724.html
摘要:最近在看一本有關編程規范的書,書中精煉闡述了使用語言時應該遵循的一些原則。所以擁有良好一致的編程規范對于一個團隊至關重要。二堅持最小驚奇原則在編碼過程中盡量避免可能讓軟件用戶感到意外的做法。 最近在看一本有關Java編程規范的書,書中精煉闡述了使用java語言時應該遵循的一些原則。接下來的一段時間我將在這里總結我的學習內容,也希望這一系列文章能夠對有需要的人有所幫助。 不考慮任何編碼規...
摘要:不管是還是,表之間的連接查詢,被映射為實體類之間的關聯關系,這樣,如果兩個實體類之間沒有實現關聯關系,你就不能把兩個實體或者表起來查詢。 因為項目需要選擇數據持久化框架,看了一下主要幾個流行的和不流行的框架,對于復雜業務系統,最終的結論是,JOOQ是總體上最好的,可惜不是完全免費,最終選擇JDBC Template。 Hibernate和Mybatis是使用最多的兩個主流框架,而JOO...
摘要:相對于電子書,我更喜歡紙質版的書籍。過去的年一共閱讀過本技術書,下面對這些書做一個小結。源碼深度解析這本書是年購買的,年是第四次閱讀。必知必會數據庫的復習書籍,內容淺顯易懂。 相對于電子書,我更喜歡紙質版的書籍。我喜歡在拿到新書時記錄購買時間、地點、開始閱讀的時間、第一次看完的時間,算是一種學習的記錄。過去的2016年一共閱讀過15本技術書,下面對這些書做一個小結。 《深入理解Java...
摘要:三進階階段這個階段主要是靠我們自己學習總結,可以通過前輩們的博客或者自己研究源碼,這些非常有利于我們快速的成長。讓自己保持永遠學習的精神。五零基礎學習資料最后給大家準備了一份不錯的學習資源,里面有很多學習視頻和資料,后臺回復資源,即可獲取。 showImg(https://segmentfault.com/img/bVbauV8?w=1212&h=816); 前兩次給大家分享了關于 j...
閱讀 591·2021-11-15 11:38
閱讀 1174·2021-10-11 10:59
閱讀 3491·2021-09-07 09:58
閱讀 479·2019-08-30 15:44
閱讀 3518·2019-08-28 18:14
閱讀 2599·2019-08-26 13:32
閱讀 3514·2019-08-26 12:23
閱讀 2413·2019-08-26 10:59