黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 十大Java代碼規(guī)范

十大Java代碼規(guī)范

更新時間:2022-10-10 10:36:47 來源:動力節(jié)點(diǎn) 瀏覽1256次

1. 變量范圍、可讀性和 Lambda 表達(dá)式

在 Java 中,聲明的每個變量都有一個作用域。這意味著變量的可見性和使用必須僅限于范圍內(nèi)。在局部變量的情況下,從其聲明點(diǎn)到聲明它的方法或代碼塊的末尾都是可見的。在可能使用的點(diǎn)附近聲明一個變量是一個好習(xí)慣。這不僅增強(qiáng)了代碼的可讀性,而且使調(diào)試更簡單。

嘗試
   連接 con = DriverManager。獲取連接(DATABASE_URL,
      用戶名密碼);
   語句 stmt = con.createStatement();
   結(jié)果集 rs = stmt.executeQuery(SQL_QUERY)
){
   //... 
}捕獲(SQLException e){
   e.printStackTrace();
}

在代碼片段中觀察局部變量的范圍是如何限制在聲明它們的塊內(nèi)的。一旦塊結(jié)束,變量就看不見了。此外,代碼變得更加直觀、易讀和干凈。

但是,從 Java 8 開始,我們可以利用 lambda 表達(dá)式使代碼更加簡潔和直觀。為了說明這個想法,請注意我們?nèi)绾卧谝恍?lambda 表達(dá)式中組合許多實(shí)用程序。

整數(shù)[] nums={90,71,26,34,42,35,66,57,88,89};

打印原始數(shù)字。

最終列表<整數(shù)> l1 = 數(shù)組。asList (nums);
系統(tǒng)。out .printf( "原文:%s%n" ,l1);

現(xiàn)在我們使用 lambda 表達(dá)式來打印升序排序后的數(shù)字。

最終列表<整數(shù)> l2 = 數(shù)組。流(數(shù)字).sorted 
   ().collect(Collectors.toList ());
系統(tǒng)。out .printf( "排序后:%s%n" ,l2);

我們可以應(yīng)用更多的實(shí)用程序,例如只打印那些大于 50 的數(shù)字,然后按升序?qū)λ鼈冞M(jìn)行排序。

最終列表<整數(shù)> l3 = 數(shù)組。流(數(shù)字)
.filter(num -> num > 50).collect(Collectors.toList ( ));
系統(tǒng)。out .printf( "只對大于 50 的數(shù)字排序
   : %s%n" , l3);

2.類字段

在 Java 中,方法要么屬于一個類,要么屬于一個接口。因此,局部變量可能會被程序員無意中賦予與類成員變量相同的名稱。然而,Java 編譯器能夠從范圍中選擇正確的編譯器。此外,現(xiàn)代 IDE 足夠復(fù)雜,可以識別沖突。無論如何,程序員自己應(yīng)該有足夠的責(zé)任來避免這種沖突,因?yàn)榻Y(jié)果可能是災(zāi)難性的。下面的代碼說明了如果我們不處理沖突的變量名,我們?nèi)绾蔚玫椒浅2煌慕Y(jié)果。

public class TestClass {
   私人雙倍傭金= 5.5d;
   public double increaseCommission( final double newComm){
       double Commission = newComm;
      傭金+=傭金;
      退貨傭金;
   }
   public double getCommission(){
      返回傭金;
   }
   公共靜態(tài)無效{TestClass m = new TestClass();
      系統(tǒng)。out .println(m.increaseCommission(3.3));
      系統(tǒng)。出.println(m.getCommission());
   }
}

避免與具有局部變量的類的字段名稱沖突的另一種方法是使用this關(guān)鍵字。例如this.commission總是只引用類字段。但是,經(jīng)驗(yàn)表明,最好在構(gòu)造函數(shù)以外的方法中完全使用不同的名稱,以避免字段名稱沖突。

3. 將方法參數(shù)視為局部變量

在 Java 中,一個變量一旦聲明就可以被重用。因此,方法參數(shù)中聲明的非最終局部變量也可以用不同的值重用。但是,這不是一個好主意,因?yàn)樽兞孔鳛榉椒▍?shù)發(fā)送應(yīng)該保存它所帶來的值的值,即方法使用的原始值。如果我們改變這個值,我們將完全失去方法中帶來的原始內(nèi)容。相反,我們必須做的是將值復(fù)制到另一個變量并進(jìn)行必要的處理。但是,我們可以通過使用final關(guān)鍵字來完全限制參數(shù)變量并使之成為常量,如下所示。

公共雙計(jì)算(最終雙newVal){
   雙tmp = newVal;
    // ...
   返回tmp;
}

4. 裝箱和拆箱

在 Java 中,裝箱和拆箱是基本類型與其對應(yīng)的包裝類之間的轉(zhuǎn)換技術(shù)的另一面。包裝類什么都不是,而是原始類型的“類”版本,例如int到Integer、float到Float、double到Double、char到Character、byte到Byte、Boolean到Boolean等等。裝箱是將int轉(zhuǎn)換為Integer,拆箱是從Integer轉(zhuǎn)換回來到int。編譯器經(jīng)常在后臺執(zhí)行轉(zhuǎn)換;這稱為自動裝箱。但是,有時,這種自動裝箱可能會產(chǎn)生意想不到的結(jié)果,我們必須意識到這一點(diǎn)。

公共靜態(tài)無效更新(最終雙newVal){
   // ...
}
最終雙 val = null ;
更新(val);

5. 接口

因?yàn)榻涌诓灰蕾囉谌魏畏椒▽?shí)現(xiàn)(默認(rèn)方法除外),所以我們必須在不需要具體類的地方充分使用它們。接口就像合同一樣,具有足夠的自由度和靈活性來布置合同。具體課程可以利用靈活性來豐富和補(bǔ)充其業(yè)務(wù)議程。尤其如此,當(dāng)實(shí)施涉及外部系統(tǒng)或服務(wù)時,通常可以看到這一點(diǎn)。

包c(diǎn)om.mano.examples;
公共接口Payable {
    public double calcAmount();
}
包c(diǎn)om.mano.examples;
公共類Invoice實(shí)現(xiàn)Payable {
    private String itemNumber ;
   私有字符串項(xiàng)目名稱;
   私人 int 數(shù)量;
   私人雙單位價(jià)格;
   public Invoice(String itemName, int quantity,
          double unitPrice) {
       // ...
   }
   public int getQuantity() {
       // ...
      返回?cái)?shù)量;
   }
   public double getUntPrice() {
       // ... 
      return unitPrice ;
   }
   @覆蓋
   public double calcAmount() {
       return getQuantity()*getUntPrice();
   }
}

6. Strings

Java 中沒有其他類型像String一樣被擴(kuò)展。Java 字符串以 UTF-16 格式表示,并且是不可變對象。這意味著每次我們執(zhí)行像連接這樣需要修改原始字符串的操作時,都會創(chuàng)建一個新的字符串對象。僅為執(zhí)行所需操作而創(chuàng)建的這個中間字符串對象既浪費(fèi)又低效。這是因?yàn)橹虚g對象的創(chuàng)建是無關(guān)的;它涉及垃圾收集,盡管我們可以避免它。有兩個配套的字符串類,稱為StringBuffer和StringBuilder,它們可以恰當(dāng)?shù)卮龠M(jìn)我們可能需要的那種字符串操作。這兩個類就是為此而構(gòu)建的。StringBuffer和_StringBuilder是前者是線程安全的。我們可以在需要大量字符串操作時使用這兩個類,而不是使用不可變的String實(shí)例。

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append( "你好" );
stringBuilder.append(108);
stringBuilder.deleteCharAt(0);
stringBuilder.insert(0, "h" );
stringBuilder.replace(stringBuilder.length() - 3,
   stringBuilder.length(), "." );
系統(tǒng)。out .println(stringBuilder);

7. 命名約定

Java 命名約定是一組規(guī)則,使 Java 代碼在 Java 項(xiàng)目和庫中看起來一致。它們不是嚴(yán)格的規(guī)則,而是作為良好編程實(shí)踐的準(zhǔn)則。因此,由于倉促或反抗而違反代碼統(tǒng)一性的神圣性并不是一個好主意。規(guī)則非常簡單。

包名是小寫的類型:javax.sql、org.junit、java.lang。

類、枚舉、接口和注釋名稱以大寫形式輸入:Thread、Runnable、@Override。

方法和字段名稱以駝峰形式輸入:deleteCharAt、add、isNull。

常量是用下劃線分隔的大寫類型:SIZE、MIN_VALUE。

局部變量以駝峰形式輸入:employeeName、birthDate、email。

這些約定已經(jīng)成為 Java 的一部分,幾乎每個程序員都虔誠地遵循它們。結(jié)果,這方面的任何變化看起來都是古怪和錯誤的。遵循這些約定的一個明顯好處是代碼風(fēng)格與庫或框架代碼保持一致。它還可以幫助其他程序員在需要時快速獲取代碼,從而利用代碼的整體可讀性。

8. 標(biāo)準(zhǔn)庫

Java以其豐富的庫集而聞名。然而,并不是每個庫都經(jīng)過完美設(shè)計(jì),但在大多數(shù)情況下它們都是最優(yōu)的。Java 不時發(fā)布新庫并積極改進(jìn)現(xiàn)有庫。因此,應(yīng)始終盡可能多地使用庫中的類、方法、接口、Java枚舉和注釋。這可以大大減少生產(chǎn)時間。此外,所包含的功能都經(jīng)過了很好的測試。最好在需要時使用庫中的它們,而不是重新發(fā)明輪子。

由于 Java 平臺不斷發(fā)展,因此我們必須密切關(guān)注我們從第三方庫或框架中包含的特性,這些特性已經(jīng)存在于 Java 標(biāo)準(zhǔn)庫中。經(jīng)驗(yàn)法則是先用盡內(nèi)部資源,然后再從外部資源中剔除支持。

9. 不變性

不變性的概念非常重要。我們必須決定我們打算設(shè)計(jì)的類是否可以不可變,因?yàn)椴豢勺冃员WC了它幾乎可以在任何地方使用,而不會出現(xiàn)并發(fā)修改的任何麻煩。不幸的是,并非所有類都可以設(shè)計(jì)為不可變的。但是,請確保我們必須盡可能這樣做。這使生活變得更加輕松。您可以稍后感謝我。

10. 測試

測試驅(qū)動實(shí)踐 (TDD) 是 Java 社區(qū)中代碼質(zhì)量的象征。測試是現(xiàn)代 Java 開發(fā)的一部分,Java 標(biāo)準(zhǔn)庫有 Junit 框架來幫助實(shí)現(xiàn)這個方向。因此,初出茅廬的 Java 程序員不應(yīng)該回避用代碼編寫測試用例。盡量保持測試簡單而簡短,一次只關(guān)注一件事。生產(chǎn)環(huán)境中可以有數(shù)百個測試用例。編寫測試用例的一個明顯好處是它們提供了正在開發(fā)的特性的即時反饋。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧洲一级做a爱在线观看 | 男女污污无遮挡免费观看 | 日韩欧美视频在线播放 | 国产91精品一区二区麻豆网站 | 一个人在线免费观看www | 精品一区二区三区在线观看视频 | 成人免费视频一区 | 国产日韩欧美亚洲精品95 | 日韩精品中文字幕一区二区三区 | 最新一本大道香蕉综合 | 99视频在线精品免费观看18 | 337p日本大胆欧洲色噜噜高清 | 午夜寂寞网站 | 亚洲福利天堂 | 免费看一片 | 精品在线小视频 | 二级特黄绝大片免费视频大片 | 最新大黄网站免费 | 日日干日日操日日射 | 久久精品视频8 | 成人激情视频网站 | 欧美特级黄色片 | 午夜久久影院 | 欧美日韩亚洲视频 | 国产视频一区二区在线观看 | 麻豆成人传媒一区二区 | 91久久偷偷做嫩草影院免 | 一级毛片免费在线观看网站 | 色视频免费版高清在线观看 | 欧美青青| 国外成人在线视频 | 草视频在线 | 亚洲欧美高清视频 | 国产精品永久免费视频观看 | 欧美成a人片免费看久久 | 手机在线国产精品 | 国产精品成在线观看 | 在线观看麻豆精品国产不卡 | 成人a毛片一级 | 成人国产永久福利看片 | 看全色黄大色黄大片女图片第一次 |