亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Java代碼之美,從遵循樣式規(guī)范開始

京東云 ? 來源:京東零售 劉仲偉 ? 作者:京東零售 劉仲偉 ? 2024-11-27 11:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東零售 劉仲偉

wKgZPGdGlT2AX8uIAAKWag0WCqs787.png

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

一、為什么要代碼樣式規(guī)范

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

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

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

3.間接影響代碼質(zhì)量和團隊協(xié)作效率;

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

?

二、探索Java代碼規(guī)范

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

2.1 業(yè)界Java代碼樣式規(guī)范

a. Google Java Style

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

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

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

b. 阿里Java規(guī)范

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

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

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

c. 其它規(guī)范

公司/組織 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 規(guī)范選擇與制定

a. 規(guī)范選擇

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

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

?使用環(huán)境:開發(fā)閱讀代碼的環(huán)境是什么,GitHub、GitLab、公司內(nèi)部的Coding?

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

綜合上面的三個方面的考慮,優(yōu)先選擇Google Java Style。

b. 規(guī)范制定

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

?修改intellij-java-google-style.xml中的內(nèi)容:

option previous value modified value note
INDENT_SIZE 2 4 行縮進空格數(shù)
TAB_SIZE 2 4 TAB空格數(shù)
CONTINUATION_INDENT_SIZE 4 8 換行縮進空格數(shù)
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 規(guī)范使用

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

?代碼格式化

?代碼樣式校驗

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

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

代碼樣式校驗

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

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

?修改google_checks中的內(nèi)容:

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還可以配置其它代碼校驗,可根據(jù)團隊接受情況予以配置。

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

?

三、最佳實踐:如何將規(guī)范融入日常開發(fā)

3.1 code style配置&使用

a. IDEA配置code style

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

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

導(dǎo)入定制的code style文件:intellij-java-jd-style.xml?

wKgZO2dGlT2ALn6kAAe30vL7Pc8157.png

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

wKgZPGdGlT6ALxOyAAiAbns_I4A478.png

b. IDEA使用code style

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

wKgZO2dGlT-AWgYYAABQwyQMEbU629.png

?

3.2 check style配置&使用

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

1. 在開發(fā)環(huán)境IDE中,開發(fā)者配置插件后,可觸發(fā)代碼樣式規(guī)范的檢查,根據(jù)提示項進行代碼修改;

2.在maven項目中,配置checkstyle插件,可用命令行觸發(fā)代碼樣式規(guī)范的檢查,集成到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的配置參數(shù)具體可參見checkstyle:check的參數(shù)說明。

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

?plugins>plugin>executions>execution

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

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

?goals>goal是只綁定執(zhí)行plugin的哪個任務(wù),這里綁定的是"check";

?plugins>plugin>configuration>failOnViolation

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

?將severity級別配置為error,并將failOnViolation設(shè)為true,檢查到違反樣式規(guī)范的問題時,會停止maven命令繼續(xù)執(zhí)行;

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

按照上述配置,可達到在mvn編譯代碼前強制檢查代碼樣式規(guī)范,發(fā)現(xiàn)違反規(guī)范的問題,不會繼續(xù)java的編譯、打包。

d. maven使用CheckStyle插件

運行mvn package即可正常打包。

也可以單獨執(zhí)行命令:

mvn checkstyle:check

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

?

四、結(jié)語:代碼規(guī)范-團隊協(xié)作的橋梁

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

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

?

參考

??京東JAVA代碼規(guī)范-V1.0.pdf?

?JD編碼規(guī)范: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官網(wǎng):https://checkstyle.org/index.html?

?checkstyle發(fā)布:https://github.com/checkstyle/checkstyle/releases/?

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2995

    瀏覽量

    115397
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4932

    瀏覽量

    72849
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Arm Neoverse CPU上大代碼Java應(yīng)用的性能測試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語言。Java 應(yīng)用的一些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于 Java 字節(jié)碼無法直接在 CPU 上執(zhí)行,因此通常運行時在
    的頭像 發(fā)表于 11-05 11:25 ?250次閱讀
    Arm Neoverse CPU上大<b class='flag-5'>代碼</b>量<b class='flag-5'>Java</b>應(yīng)用的性能測試

    如何直接main函數(shù)開始仿真?

    段地址也要修改) 2. 修改前三條指令: 80000000:10010117auipcsp,0x10010#堆棧指針90010000開始80000004:293000efjalra
    發(fā)表于 11-05 06:10

    Java 25正式發(fā)布,重要特性詳解(附代碼示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    Java 25現(xiàn)已發(fā)布,更多新特性來了!配合Perforce JRebel,代碼修改即時生效,無需重啟服務(wù),即可實現(xiàn)“改完就看效果”。新特性+快工具,讓你的Java開發(fā)體驗雙倍提升!
    的頭像 發(fā)表于 10-29 13:16 ?376次閱讀
    <b class='flag-5'>Java</b> 25正式發(fā)布,重要特性詳解(附<b class='flag-5'>代碼</b>示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    代碼格式化工具Clang-Format提升你的CW32工程質(zhì)量

    它能自動統(tǒng)一團隊代碼風格,讓不同開發(fā)者寫出的代碼如出一轍。就像 CW32 官方庫函數(shù)遵循統(tǒng)一規(guī)范一樣,Clang-Format 能讓團隊所有成員的
    的頭像 發(fā)表于 10-09 17:43 ?805次閱讀
    <b class='flag-5'>代碼</b>格式化工具Clang-Format提升你的CW32工程質(zhì)量

    國產(chǎn) OPS 電腦是否完全遵循 Intel OPS 規(guī)范,能直接適配華為智慧黑板、鴻合教育一體機嗎?

    觸控一體機廠家在采購國產(chǎn) OPS 電腦時,最擔心的問題之一便是 “適配性”—— 害怕國產(chǎn) OPS 電腦不遵循通用規(guī)范,導(dǎo)致無法與華為智慧黑板、鴻合教育一體機等主流設(shè)備兼容,出現(xiàn)觸控失靈、顯示卡頓
    的頭像 發(fā)表于 08-23 18:11 ?468次閱讀

    Perforce JRebel 簡介:即時加載代碼變更,加速Java應(yīng)用開發(fā)

    Perforce JRebel 專為Java開發(fā)提速而生!支持跳過構(gòu)建與重新部署,實時加載代碼變更,支持100+框架,無縫集成主流IDE與應(yīng)用服務(wù)器。
    的頭像 發(fā)表于 08-14 14:35 ?430次閱讀
    Perforce JRebel 簡介:即時加載<b class='flag-5'>代碼</b>變更,加速<b class='flag-5'>Java</b>應(yīng)用開發(fā)

    緩存根上理解 ConcurrentHashMap

    表的占用,以保持并發(fā)可讀性,次要目的是保持空間消耗與 HashMap 相同或更好,并支持利用多線程在空表上高效地插入初始值。在 Java 8 及之后的版本,使用 CAS 操作
    的頭像 發(fā)表于 08-05 14:48 ?344次閱讀

    如何使用USB2.0將數(shù)據(jù)fpga傳輸?shù)絇C?

    : Input/Output Error您CAN 幫助我找到此錯誤的解決方案,以便 CAN 將數(shù)據(jù) fpga 發(fā)送到計算機?在此先感謝。 告訴我是否需要查看 JAVA 代碼和 vhdl 項目。 預(yù)先謝謝
    發(fā)表于 05-29 06:28

    Java開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開發(fā)者在用?

    Perforce JRebel是一款Java開發(fā)效率工具,旨在幫助java開發(fā)人員更快地編寫更好的應(yīng)用程序。JRebel可即時重新加載對代碼的修改,無需重啟或重新部署應(yīng)用程序,就能讓開發(fā)者即時看到
    的頭像 發(fā)表于 04-27 13:44 ?553次閱讀
    <b class='flag-5'>Java</b>開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多<b class='flag-5'>Java</b>開發(fā)者在用?

    Java 到 Go:面向?qū)ο蟮木奕伺c云原生的輕騎兵

    Go 語言在 2009 年被 Google 推出,在創(chuàng)建之初便明確提出了“少即是多(Less is more)”的設(shè)計原則,強調(diào)“以工程效率為核心,用極簡規(guī)則解決復(fù)雜問題”。它與 Java 語言生態(tài)
    的頭像 發(fā)表于 04-25 11:13 ?456次閱讀

    Java的SPI機制詳解

    接口規(guī)范以及可以發(fā)現(xiàn)接口實現(xiàn)的機制,而不需要實現(xiàn)接口。 SPI機制在Java中應(yīng)用廣泛。例如:JDBC中的數(shù)據(jù)庫連接驅(qū)動使用SPI機制,只定義了數(shù)據(jù)庫連接接口的規(guī)范,而具體實現(xiàn)由各大數(shù)據(jù)庫廠商實現(xiàn),不同數(shù)據(jù)庫的實現(xiàn)不同,我們常用
    的頭像 發(fā)表于 03-05 11:35 ?1028次閱讀
    <b class='flag-5'>Java</b>的SPI機制詳解

    光宣布 1γ DRAM 開始出貨:引領(lǐng)內(nèi)存技術(shù)突破,滿足未來計算需求

    光業(yè)界首款高性能 1γ 節(jié)點技術(shù),為數(shù)據(jù)中心、客戶端及移動平臺帶來卓越的性能與能效 ? 2025 年 2 月 26 日,中國上海 — ? 光科技股份有限公司(納斯達克股票代碼:MU)今日宣布,已
    發(fā)表于 02-26 13:58 ?446次閱讀

    SSM框架在Java開發(fā)中的應(yīng)用 如何使用SSM進行web開發(fā)

    SSM框架,即Spring、SpringMVC和MyBatis的整合,是Java Web開發(fā)中常用的技術(shù)棧。它通過分層架構(gòu),實現(xiàn)了視圖、控制、業(yè)務(wù)邏輯和數(shù)據(jù)訪問的分離,提高了代碼的可維護性和可擴展性
    的頭像 發(fā)表于 12-16 17:28 ?2019次閱讀

    Java 23功能介紹

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

    對比Python與Java編程語言

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