主頁 > 後端開發 > 優秀 Java 程式員寫代碼的風格

優秀 Java 程式員寫代碼的風格

2020-09-18 00:06:36 後端開發

今天突發奇想,對編碼習慣和 編程風格 很感興趣,于是乎,找了一下關于編程風格(Java篇)的資料,希望對愛好編碼或者開始學習編碼的同學有幫助!

來自《The Elements of Java Style》-《Java編程風格》一書,值得一讀的書籍,會讓你在細節上節省很多時間,合作之間更加愉快!

好處不多說了,但是有幾個原則如下

1.保持原有風格

2.堅持最小驚奇原則

3.第一次就做對

4.記錄所有非規范行為

格式規范

1.縮進嵌套的代碼:在每個代碼塊和嵌套中加入縮進,縮進代碼,加強可讀性,這些地方包括【類定義,內部類定義,方法定義,靜態塊,for回圈陳述句,if-else陳述句,try、catch和finally塊,匿名內部類,while陳述句,do-while陳述句】

2.斷開很長的句子:第一,如果包含了逗號,那么在每一個逗號后面都另起一行,把逗號后面的每一個運算式都和逗號前面的運算式的第一個字母對齊,第二,應該在優先級最低的運算子之前斷行,

3.使用空白:關鍵字和左括號之間,右括號和緊隨其后的關鍵字,除了”.”之外的運算子與其前后的運算式之間用空格隔開,每個邏輯上獨立的方法和代碼段之間,定義類或者介面的成員之間,每個類和介面之間應該加入空白行,

4.不要直接使用Tab控制符:不同環境對Tab控制符的解釋也是不同的,

命名約定

1.名稱應該具有實際意義

2.使用人們熟悉的名稱

3.謹慎使用過長的名字,可以使用簡明通用的縮寫

4.盡量保留元音字母

5.縮寫詞的第一個字母大寫

6.不要使用大小寫來區分的名字

包命名

1.用你所在組織的域名的倒序小寫形式作為包的根限定詞

2.使用單獨的小寫詞作為每個包的根名

3.僅當新舊版本二進制兼容的時候,其包可以使用相同的名字,否則,請使用新名字

型別命名

1.類和介面名中的每個單詞的第一個字母大寫

類命名

1.用名詞命名類

2.具有成組相關屬性,靜態服務或者常量的類名字使用復數形式

介面命名

1.用名詞或者形容詞命名介面

方法命名

1.方法名中的第一個單詞小寫,其后每個單詞的第一個字母大寫

2.用動詞命名方法

3.遵循JavaBean中命名屬性訪問函式方法:set,get,is

變數命名

1.變數命中的第一個單詞小寫,其后的每個單詞的第一個字母大寫

2.用名詞命名變數

3.集合參考名要用復數形式

4.為不重要的臨時變數簡歷并使用一套標準名字

欄位命名

1.使用this欄位變數可以區分開區域變數

引數命名

1.建構式或者”set”方法給欄位分配引數賦值,引數名應該和欄位名相同

常量命名

1.常量的每個單詞均大寫,單詞之間使用下劃線連接

檔案約定

1.為使用和維護你的代碼的人撰寫檔案

2.注釋和代碼要同步

3.使用積極的語氣,省略無用的詞語

注釋型別

1.用檔案注釋來描述編程介面

2.用標準注釋格式隱藏代碼而不必洗掉它們

3.用單行注釋解釋實作細節

檔案注釋

1.在撰寫代碼前描述編程介面

2.為公用,受保護,包,私有成員建立檔案

3.為每個包撰寫總結和概述

4.為包的每個應用程式或組撰寫概述

注釋風格

1.對所有檔案注釋使用統一的格式和組織結構

2.關鍵字,識別符號和常量應放到標簽中

3.將代碼放入

標簽中

4.在識別符號第一次出現的時候用{@link}標簽

5.為Javadoc標簽簡歷并使用一套固定的順序

6.使用第三人稱敘述的形式

7.撰寫獨立的概述

8.省略概述中動作和服務的主語

9.省略事物概述中的物件和動詞

10.使用this而不是the來指代當前類中的實體

11.方法名或者建構式名不需圓括號,除非你想突出一個特殊的簽名

注釋內容

1.每個類、介面、欄位和方法都撰寫概述

2.完整描述每個方法的簽名

3.包含示例

4.為前置、后置、不變條件撰寫檔案

5.為已知的缺陷和不足撰寫檔案

6.為同步語法撰寫檔案

內部注釋

1.僅添加有助于理解你的代碼的內部注釋

2.描寫代碼為什么這樣做,而不是在做什么

3.避免使用行尾注釋

4.用行尾注釋解釋區域變數宣告

5.建立并使用一套關鍵詞來標識尚未解決的問題

6.在嵌套程度高的控制結構中標記出嵌套結束位置

7.如果兩個case標記之間沒有break陳述句,就在中間加入“fall-through”注釋

8.標記空陳述句

編程約定

1.將表示基礎資料型別的類宣告為final型別

2.通過本地型別和其他具體型別建立具體型別

3.定義小的類和小的方法

4.定義子類,以便任何使用超類的地方都可以使用子類

5.使所有欄位私有

6.使用多型來替代instanceof

型別安全

1.以java.lang.Object包裝通用類,提供靜態型別檢查

2.以類的形式封裝列舉型別

3.盡量使用泛型

陳述句和運算式

1.用等價的方法替換重復的、復雜的運算式

2.使用塊陳述句代替控制流結構的運算式

3.使用括號明確操作順序

4.在switch陳述句中的最后一個case體使用break陳述句

5.使用equals(),而不是==來檢測物件的對等關系

構造

1.構造狀態有效的物件

2.不要從建構式中呼叫非final方法

3.用嵌套的建構式消除冗余代碼

例外處理

1.使用不受檢查、運行時的例外來報告可能在程式邏輯中出錯的嚴重未查明錯誤

2.使用檢查例外來報告可能發生,而在正常的程式運行時極少發生的錯誤

3.用回傳代碼報告可預知的狀態改變

4.僅轉化例外來添加資訊

5.不要私自處置運行時或者錯誤例外

6.用finally陳述句塊釋放資源

斷言

1.按照約定編程

2.用無用代碼消除機制實作斷言

3.用斷言捕捉代碼中的邏輯錯誤

4.用斷言檢測方法的前置條件和后置條件

并發

1.僅在適當的地方使用執行緒

同步

1.避免同步

2.用同步的包裝器,提供同步介面

3.如果方法包含幾個不需要同步的重要操作,那么不要同步整個方法

4.讀寫實體變數的時候避免不必要的同步

5.使用notify()而不是notifyAll()

6.為同步初始化使用雙重檢查模式

效率

1.使用懶惰初始化

2.避免創建不必要的物件

3.重新初始化并重新使用物件,盡量不要新建物件

4.把優化作業留在日后

打包約定

1.將經常使用、更改、同時發布或者互相依存的型別,放在同一個包里

2.共同封閉原則

3.重用/發布等價原則

4.無環依賴原則

5.將不穩定的類和介面隔離在單獨的包中

6.易于修改的包不要依賴于難以修改的包

7.最大化抽象最大化穩定性

8.將高層設計和架構作為穩定的抽象,組織為穩定的包

以上僅是一些規則簡單的羅列,推薦閱讀此書,

推薦去我的博客閱讀更多:

1.Java JVM、集合、多執行緒、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架構、阿里巴巴等大廠最新面試題

覺得不錯,別忘了點贊+轉發哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69357.html

標籤:Java

上一篇:SpringBoot使用freemarker無法獲取Model值,一直報空???

下一篇:Spring中眼花繚亂的BeanDefinition

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more