在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java代碼之美,從遵循樣式規范開始

京東云 ? 來源:京東零售 劉仲偉 ? 作者:京東零售 劉仲偉 ? 2024-11-27 11:42 ? 次閱讀

作者:京東零售 劉仲偉

wKgZPGdGlT2AX8uIAAKWag0WCqs787.png

在軟件開發的世界里,代碼不僅是程序的基石,更是程序員交流的通用語言。而Java,作為一門廣泛應用于企業級應用的編程語言,其代碼的可讀性和一致性對于項目的長期維護和團隊協作至關重要。本文將帶你探索Java代碼的美學,揭示那些能夠讓你的代碼既美觀又高效的樣式規范。無論是初出茅廬的新手還是經驗豐富的老手,都能從中獲得靈感,提升編碼的藝術。

一、為什么要代碼樣式規范

對于團隊開發,不同的代碼規范或不規范可能引起的問題包括但不限于:

1.代碼可讀性,代碼是為了人閱讀的,不是只為了機器執行;

2.代碼format引發的大量的diff,干擾code review;

3.間接影響代碼質量和團隊協作效率;

在敏捷迭代的軟件開發環境中,良好的代碼規范不僅能夠幫助團隊成員快速理解彼此的代碼,減少溝通成本,還能在代碼維護和擴展時節省寶貴的時間。此外,一致的代碼風格也是項目專業性的體現,能夠給代碼審查者和未來的維護者留下良好的第一印象。

?

二、探索Java代碼規范

我們將深入探討Java社區廣泛認可的編碼規范,包括但不限于Google Java Style和Oracle官方的編碼指南。從命名約定、代碼格式化、注釋的使用,到錯誤處理和測試代碼的編寫,每一個細節都是構建高質量Java代碼的關鍵。

2.1 業界Java代碼樣式規范

a. Google Java Style

Google在github上維護的多種編程語言的代碼規范:https://github.com/google/styleguide,其中:

??javaguide.html 是Google對Java編程語言代碼編碼標準的完整定義;

??intellij-java-google-style.xml 是Google Java代碼規范文件,適用于Intellij IDEA開發工具;

b. 阿里Java規范

阿里在 GitHub 上有一個關于 Java 開發規范的倉庫 p3c:https://github.com/alibaba/p3c,其中:

??Java開發手冊(黃山版).pdf 覆蓋編程規約、異常日志、單元測試等七個維度;

??Alibaba Java Coding Guidelines Jetbrains插件市場提供的代碼指導插件, idea-plugin 提供編譯、安裝、使用手冊;

c. 其它規范

公司/組織 Style Guide
Sun/Oracle The Original Sun Java Style Guide
Andriod Android Open Source Project (AOSP) Style Guide
Twitter Twitter’s Java Style Guide
Coderanch The CodeRanch Style Guide

2.2 規范選擇與制定

a. 規范選擇

上面列舉了多項代碼規范,在決定使用哪種規范之前,可以考慮三個方面:

?明確目標:使用代碼規范的目的是什么,只是為了項目內代碼風格一致,還是為了和其他團隊分享或者其他公司分享或者開源?

?使用環境:開發閱讀代碼的環境是什么,GitHub、GitLab、公司內部的Coding?

?工具支持:code format工具支持情況,code sytle check工具支持情況,編譯工具:maven、gradle,IDE:IntelliJ、Eclipse、VS Code;

綜合上面的三個方面的考慮,優先選擇Google Java Style。

b. 規范制定

Google Java Style部分代碼樣式團隊難以接受,比如2空格縮進等,可以在原始Google Java Style基礎上,適當定制化調整。

?修改intellij-java-google-style.xml中的內容:

option previous value modified value note
INDENT_SIZE 2 4 行縮進空格數
TAB_SIZE 2 4 TAB空格數
CONTINUATION_INDENT_SIZE 4 8 換行縮進空格數
RIGHT_MARGIN 100 120 單行長度
JD_PRESERVE_LINE_FEEDS TRUE JavaDoc 中,保留手動的換行
KEEP_LINE_BREAKS TRUE Java代碼中,保留手動的換行

?修改intellij-java-jd-style.xml文件下載:http://xingyun.jd.com/codingRoot/liuzhongwei18/styleguide/blob/master/intellij-java-jd-style.xml?

2.3 規范使用

代碼樣式規范的使用分為兩個方面:

?代碼格式化

?代碼樣式校驗

規范使用 英文 使用對象 使用方式 說明 配置文件
代碼格式化 code style 開發者 IDE手動 定義代碼風格 intellij-java-jd-style.xml
代碼樣式校驗 check style 團隊 自動化 校驗代碼風格 checkstyle.xml

注意:code style 跟 check style 的「配置文件」必須對應,即按照code style format的代碼check style不報錯。

代碼樣式校驗

代碼格式化依賴于開發者手動進行格式化,為達到團隊/項目代碼樣式規范的落地,需要有全面的自動化的代碼檢查。根據當前業界推薦,采用Checkstyle作為自動化代碼樣式校驗工具。

需要對原始 Google Code Style 的google_checks進行定制,以適配上面intellij-java-jd-style.xml的定制。

?修改google_checks中的內容:

module property previous value modified value note
LineLength max 100 120 單行長度
Indentation basicOffset braceAdjustment caseIndent throwsIndent lineWrappingIndentation arrayInitIndent 2 2 2 4 4 2 4 0 4 4 4 4 使用checkstyle默認縮進風格

?修改checkstyle.xml文件下載:http://xingyun.jd.com/codingRoot/liuzhongwei18/styleguide/blob/master/checkstyle.xml?

?

除了上述的長度和縮進的代碼樣式校驗,Checkstyle還可以配置其它代碼校驗,可根據團隊接受情況予以配置。

module property default value note
FileLength max 2000 單個文件長度
MethodLength max 150 單個方法長度
ParameterNumber max 7 方法的參數個數
ModifierOrder ?
?
Java語言規范
NestedIfDepth max 1 檢查if-else嵌套層數
NestedTryDepth max 1 檢查try-catch-finally嵌套層數
ReturnCount max 2 一個方法最多有return的數量
CyclomaticComplexity max 10 方法圈復雜度
MagicNumber ?
?
檢查魔法數字,未被定義為常量的數值
... ?
?
https://checkstyle.org/checks.html

?

三、最佳實踐:如何將規范融入日常開發

3.1 code style配置&使用

a. IDEA配置code style

在 IntelliJ IDEA下,使用intellij-java-jd-style.xml進行代碼格式化之前,需要先進行配置。

設置配置文件,路徑:IntelliJ IDEA→Preference→Editor→Code Style,參考下圖:

導入定制的code style文件:intellij-java-jd-style.xml?

wKgZO2dGlT2ALn6kAAe30vL7Pc8157.png

命名Scheme,如圖中JD-Style,并啟用該代碼樣式規范

wKgZPGdGlT6ALxOyAAiAbns_I4A478.png

b. IDEA使用code style

完成上述配置后,在Mac環境的IntelliJ IDEA中,可以對選中的代碼格式化(快捷鍵:Option+Command+L)或者對選中的文件格式化(快捷鍵:Shift+Option+Command+L)

wKgZO2dGlT-AWgYYAABQwyQMEbU629.png

?

3.2 check style配置&使用

check style的配置和使用有兩種主要方式:

1. 在開發環境IDE中,開發者配置插件后,可觸發代碼樣式規范的檢查,根據提示項進行代碼修改;

2.在maven項目中,配置checkstyle插件,可用命令行觸發代碼樣式規范的檢查,集成到CI (Continuous Integration)的自動化流水線中;

a. IDEA配置CheckStyle插件

在 IntelliJ IDEA下,安裝Plugin,路徑:IntelliJ IDEA→Preference→Plugins,參考下圖:

wKgZPGdGlUCAU1NtAASXa5zZnuw026.png

下載配置文件checkstyle.xml,配置CheckStyle-IDEA插件,路徑:IntelliJ IDEA→Preference→Tools→Checkstyle,增加自定義配置文件并命名,參考下圖:

wKgZO2dGlUGAELkHAAkPLLbd_cE071.png

b. IDEA使用CheckStyle插件

安裝配置CheckStyle插件后,工具窗口增加了CheckStyle Tab,在CheckStyle窗口進行check,可以選擇:

?Check Current File

?Check Module

?Check Project

wKgZPGdGlUKABiSRAAStslUa_NU290.png

c. maven配置CheckStyle插件

參考Checkstyle maven插件的官方配置案例:多模塊項目配置,通常我們在項目中新建build-tools模塊,將checkstyle.xml等配置文件放在這個模塊的resources目錄下。

project-name
| -- pom.xml
| -- build-tools
| | -- pom.xml
| | -- src
| | | -- main
| | | -- resources
| | | -- checkstyle.xml
| | | -- checkstyle-suppressions.xml
| -- core
| -- gui
| -- other-module

build-tools模塊的pom.xml使用IDEA自動生成的配置文件,類似:



    
        project-name
        com.jd.project-name
        1.0.0
    

    4.0.0
    build-tools


配置文件checkstyle.xml、checkstyle-suppressions.xml可以從coding中下載http://xingyun.jd.com/codingRoot/liuzhongwei18/styleguide/blob/master/。

父項目的pom.xml中,增加如下配置:


    ...
    
        ...
        build-tools
    

    
        ...
        3.6.0
    

    
        
            
                
                    
                    org.apache.maven.plugins
                    maven-checkstyle-plugin
                    ${maven.checkstyle.version}
                    
                        build-tools/src/main/resources/checkstyle.xml
                        true
                        checkstyle-report.xml
                        false
                        true
                        target/**
                    
                    
                        
                            checkstyle
                            validate
                            
                                check
                            
                        
                    
                
            
        
        
            
                org.apache.maven.plugins
                maven-checkstyle-plugin
            
        
    
    
        
            
                org.apache.maven.plugins
                maven-checkstyle-plugin
                
                    
                        
                            checkstyle
                        
                    
                
            
        
    



maven-checkstyle-plugin的配置參數具體可參見checkstyle:check的參數說明。

這里對幾項配置進行說明:

?plugins>plugin>executions>execution

?id可以自行決定,這里選擇"checkstyle";

?phase是綁定到maven lifecycle的哪個執行階段,這里綁定到"validate"上,即執行maven validate的時候會執行該plugin任務;選擇validate階段可以保障checkstyle:check在代碼編譯之前執行,如果checkstyle檢查出違反樣式規范的問題,在代碼編譯之前就會報告出來;

?goals>goal是只綁定執行plugin的哪個任務,這里綁定的是"check";

?plugins>plugin>configuration>failOnViolation

?檢查到違反樣式規范的問題,打印出來,打印的問題級別根據checkstyle.xml中配置的severity確定;

?將severity級別配置為error,并將failOnViolation設為true,檢查到違反樣式規范的問題時,會停止maven命令繼續執行;

注意:failOnViolation與failOnError配置項的區別,failOnError在檢查到問題時立即停止執行,failOnViolation在檢查到問題時輸出檢查日志再停止執行。

按照上述配置,可達到在mvn編譯代碼前強制檢查代碼樣式規范,發現違反規范的問題,不會繼續java的編譯、打包。

d. maven使用CheckStyle插件

運行mvn package即可正常打包。

也可以單獨執行命令:

mvn checkstyle:check

注意:為了實現自動化代碼樣式規范檢查,可以為項目配置行云流水線任務,設置代碼評審的自動化檢查:指定流水線做為卡點,指定為卡點的流水線需運行成功后MR才允許合并。

?

四、結語:代碼規范-團隊協作的橋梁

最后,我們總結下Java樣式規范對于團隊協作的重要性,鼓勵每位開發者將這些規范內化為自己的編碼習慣。因為代碼規范不僅是個人技藝的體現,更是團隊協作和項目成功的基石。

通過閱讀本文,你將不僅了解到Java樣式規范的重要性,還將掌握如何將這些規范應用到實際開發中,讓你的代碼變得更加優雅和強大。讓我們一起追求編碼的藝術,用規范的代碼點亮編程的世界。

?

參考

??京東JAVA代碼規范-V1.0.pdf?

?JD編碼規范:https://doc.jd.com/base/eos-doc/system-rule/JD%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83/Java/?

?Jetbrains Java code style: https://www.jetbrains.com/help/idea/code-style-java.html?

?checkstyle官網:https://checkstyle.org/index.html?

?checkstyle發布:https://github.com/checkstyle/checkstyle/releases/?

?Apache Maven Checkstyle Plugin: https://maven.apache.org/plugins/maven-checkstyle-plugin/usage.html

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2967

    瀏覽量

    104748
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68603
收藏 人收藏

    評論

    相關推薦

    Java 23功能介紹

    Java 23 包含全新和更新的 Java 語言功能、核心 API 以及 JVM,同時適合新的 Java 開發者和高級開發者。?IntelliJ IDEA 2024.2?
    的頭像 發表于 12-04 10:02 ?205次閱讀
    <b class='flag-5'>Java</b> 23功能介紹

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨特的優勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學者。 動態類型系統
    的頭像 發表于 11-15 09:31 ?311次閱讀

    光發布新型CUDIMM與CSODIMM內存產品

     光公司近期宣布成功推出并已開始批量發貨兩款新型內存模塊——CUDIMM與CSODIMM,這兩款產品均遵循JEDEC固態存儲協會的標準,數據傳輸速率高達6400MT/s,相較于傳統DDR5內存,速度提升了15%。
    的頭像 發表于 10-16 14:38 ?571次閱讀

    遵循TPA6120A2規范簡化示意圖,耳機輸出阻抗是多少?

    遵循TPA6120A2規范簡化示意圖,耳機輸出阻抗是多少?
    發表于 09-27 07:46

    java反編譯能拿到源碼嗎

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回Java代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結構,但它并不
    的頭像 發表于 09-02 11:03 ?1007次閱讀

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質
    的頭像 發表于 09-02 11:00 ?677次閱讀

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Java是一種編程語言,它提供了一種用于開發各種應用程序
    的頭像 發表于 07-16 13:35 ?803次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    基本電子元件的內在

    的內在》(Open Circuits: The Inner Beauty of Electronic Components,No Starch Press出版社,2022年),下文節選自該書。正如
    發表于 07-11 16:49

    鴻蒙ArkTS聲明式開發:跨平臺支持列表【多態樣式】 通用屬性

    設置組件不同狀態的樣式API version 9開始,該接口支持在ArkTS卡片中使用。
    的頭像 發表于 06-07 09:48 ?407次閱讀
    鴻蒙ArkTS聲明式開發:跨平臺支持列表【多態<b class='flag-5'>樣式</b>】 通用屬性

    嵌入式系統中C語言的編寫規范

    一間一塵不染的房子。 因此,無論本文推薦的是什么,如果已經編寫了代碼并且您正在對其進行修補,請保持其當前的樣式一致,即使它不是您最喜歡的樣式。 ? 一般規則 這里列出了最明顯和最重要的一般規則。在你繼續閱讀其他章節
    的頭像 發表于 05-11 08:49 ?1138次閱讀

    開始量產HBM3E解決方案

    近日,全球領先的半導體存儲器及影像產品制造商光公司宣布,已開始大規模生產用于人工智能的新型高帶寬芯片——HBM3E。這一里程碑式的進展不僅標志著光在半導體技術領域的又一次突破,也預示著人工智能領域將迎來更為強勁的計算能力支持
    的頭像 發表于 03-08 10:02 ?419次閱讀

    代碼檢查的方式有三種

    等方面的問題。那么在代碼檢查服務中,提到的編程規范,規則集,規則,規則用例(場景、誤報、檢出)分別代表什么意思呢? 編程規范 在 SAST 靜態代碼檢查領域, 編程
    的頭像 發表于 02-25 10:08 ?855次閱讀
    <b class='flag-5'>代碼</b>檢查的方式有三種

    手表按鍵阻尼力測試儀:科技助力時間

    手表按鍵阻尼力測試儀:科技助力時間
    的頭像 發表于 02-21 09:28 ?466次閱讀
    手表按鍵阻尼力測試儀:科技助力時間<b class='flag-5'>之</b><b class='flag-5'>美</b>

    淺談代碼優化與過度設計

    本文記錄了作者代碼優化”到“過度設計”的典型思考過程,這過程中涉及了很多Java的語法糖及設計模式的東西,很典型,能啟發思考,遂記錄下來。 有一天Review師妹的代碼,看到一
    的頭像 發表于 01-19 10:05 ?548次閱讀
    淺談<b class='flag-5'>代碼</b>優化與過度設計

    解讀PCB設計規范

    規范規定了我公司 PCB 設計流程和設計原則,為 PCB 設計人員提供必須遵循的規則和約定。
    的頭像 發表于 01-12 11:06 ?2372次閱讀
    解讀PCB設計<b class='flag-5'>規范</b>
    主站蜘蛛池模板: 男人性天堂| 在线啪| 亚洲国产成人精品不卡青青草原| 日本高清色www| 中国美女一级黄色片| 日本xxxx69hd| 四虎国产精品免费视| 91伊人久久大香线蕉| 69色视频| 特一级毛片| 91精品久久国产青草| 免费大片黄国产在线观看| 四虎影院在线播放| 97国产影院| 717影院理伦午夜论八戒| 三级黄色网址| 天天躁狠狠躁夜夜躁| 亚洲情欲网| 欧美www| 久久天天躁狠狠躁夜夜2020一| 乱人伦的小说| 好硬好大好爽女房东在线观看| 国产伦精品一区二区三区| 亚洲欧美在线精品一区二区| 国产aaa级一级毛片| 日本最猛黑人xxxx猛交| 色人久久| 日韩一级片在线播放| 中文字幕乱码人成乱码在线视频| 狠狠色婷婷丁香综合久久韩国| 国产午夜毛片一区二区三区| 午夜黄色福利视频| 夜夜摸夜夜爽| 精品一区二区三区在线视频| 黄色欧美视频| 欧美人与z0zoxxxx| 欧美福利精品| 22222se男人的天堂| 日日噜噜噜夜夜爽爽狠狠视频| 天天弄天天模| 亚洲第二页|