日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ doxygen 注释规范_[代码规范]Go语言编码规范指导

發布時間:2025/3/15 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ doxygen 注释规范_[代码规范]Go语言编码规范指导 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本規范旨在為日常Go項目開發提供一個代碼的規范指導,方便團隊形成一個統一的代碼風格,提高代碼的可讀性,規范性和統一性。本規范將從命名規范,注釋規范,代碼風格和 Go 語言提供的常用的工具這幾個方面做一個說明。該規范參考了 go 語言官方代碼的風格制定。

一、 命名規范

命名是代碼規范中很重要的一部分,統一的命名規則有利于提高的代碼的可讀性,好的命名僅僅通過命名就可以獲取到足夠多的信息。

Go在命名時以字母a到Z或a到Z或下劃線開頭,后面跟著零或更多的字母、下劃線和數字(0到9)。Go不允許在命名時中使用@、$和%等標點符號。Go是一種區分大小寫的編程語言。因此,Manpower和manpower是兩個不同的命名。

  • 當命名(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);
  • 命名如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 private )
  • 1、包命名:package

    保持package的名字和目錄保持一致,盡量采取有意義的包名,簡短,有意義,盡量和標準庫不要沖突。包名應該為小寫單詞,不要使用下劃線或者混合大小寫。

    package demo ? package main

    2、 文件命名

    盡量采取有意義的文件名,簡短,有意義,應該為小寫單詞,使用下劃線分隔各個單詞。

    my_test.go

    3、 結構體命名

    • 采用駝峰命名法,首字母根據訪問控制大寫或者小寫
    • struct 申明和初始化格式采用多行,例如下面:
    // 多行申明 type User struct{Username stringEmail string } ? // 多行初始化 u := User{Username: "astaxie",Email: "astaxie@gmail.com", }

    4、 接口命名

    • 命名規則基本和上面的結構體類型
    • 單個函數的結構名以 “er” 作為后綴,例如 Reader , Writer 。
    type Reader interface {Read(p []byte) (n int, err error) }

    5、變量命名

    • 和結構體類似,變量名稱一般遵循駝峰法,首字母根據訪問控制原則大寫或者小寫,但遇到特有名詞時,需要遵循以下規則:
    • 如果變量為私有,且特有名詞為首個單詞,則使用小寫,如 apiClient
    • 其它情況都應當使用該名詞原有的寫法,如 APIClient、repoID、UserID
    • 錯誤示例:UrlArray,應該寫成 urlArray 或者 URLArray
    • 若變量類型為 bool 類型,則名稱應以 Has, Is, Can 或 Allow 開頭
    var isExist bool var hasConflict bool var canManage bool var allowGitHook bool

    6、常量命名

    常量均需使用全部大寫字母組成,并使用下劃線分詞

    const APP_VER = "1.0"

    如果是枚舉類型的常量,需要先創建相應類型:

    type Scheme string ? const (HTTP Scheme = "http"HTTPS Scheme = "https" ) ?

    7、 關鍵字

    下面的列表顯示了Go中的保留字。這些保留字不能用作常量或變量或任何其他標識符名稱。

    二、注釋

    Go提供C風格的/* */塊注釋和C ++風格的//行注釋。行注釋是常態;塊注釋主要顯示為包注釋,但在表達式中很有用或禁用大量代碼。

    • 單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋
    • 多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段

    go 語言自帶的 godoc 工具可以根據注釋生成文檔,生成可以自動生成對應的網站( http://golang.org 就是使用 godoc 工具直接生成的),注釋的質量決定了生成的文檔的質量。每個包都應該有一個包注釋,在package子句之前有一個塊注釋。對于多文件包,包注釋只需要存在于一個文件中,任何一個都可以。包評論應該介紹包,并提供與整個包相關的信息。它將首先出現在godoc頁面上,并應設置下面的詳細文檔。

    詳細的如何寫注釋可以 參考:http://golang.org/doc/effective_go.html#commentary

    1、包注釋

    每個包都應該有一個包注釋,一個位于package子句之前的塊注釋或行注釋。包如果有多個go文件,只需要出現在一個go文件中(一般是和包同名的文件)即可。 包注釋應該包含下面基本信息(請嚴格按照這個順序,簡介,創建人,創建時間):

    • 包的基本簡介(包名,簡介)
    • 創建者,格式: 創建人: rtx 名
    • 創建時間,格式:創建時間: yyyyMMdd

    例如 util 包的注釋示例如下

    // util 包, 該包包含了項目共用的一些常量,封裝了項目中一些共用函數。 // 創建人: hanru // 創建時間: 20190419

    2、結構(接口)注釋

    每個自定義的結構體或者接口都應該有注釋說明,該注釋對結構進行簡要介紹,放在結構體定義的前一行,格式為: 結構體名, 結構體說明。同時結構體內的每個成員變量都要有說明,該說明放在成員變量的后面(注意對齊),實例如下:

    // User , 用戶對象,定義了用戶的基礎信息 type User struct{Username string // 用戶名Email string // 郵箱 }

    3、函數(方法)注釋

    每個函數,或者方法(結構體或者接口下的函數稱為方法)都應該有注釋說明,函數的注釋應該包括三個方面(嚴格按照此順序撰寫):

    • 簡要說明,格式說明:以函數名開頭,“,”分隔說明部分
    • 參數列表:每行一個參數,參數名開頭,“,”分隔說明部分
    • 返回值: 每行一個返回值

    示例如下:

    // NewtAttrModel , 屬性數據層操作類的工廠方法 // 參數: // ctx : 上下文信息 // 返回值: // 屬性操作類指針 func NewAttrModel(ctx *common.Context) *AttrModel { }

    4、代碼邏輯注釋

    對于一些關鍵位置的代碼邏輯,或者局部較為復雜的邏輯,需要有相應的邏輯說明,方便其他開發者閱讀該段代碼,實例如下:

    // 從 Redis 中批量讀取屬性,對于沒有讀取到的 id , 記錄到一個數組里面,準備從 DB 中讀取 xxxxx xxxxxxx xxxxxxx

    5、注釋風格

    統一使用中文注釋,對于中英文字符之間嚴格使用空格分隔, 這個不僅僅是中文和英文之間,英文和中文標點之間也都要使用空格分隔,例如:

    // 從 Redis 中批量讀取屬性,對于沒有讀取到的 id , 記錄到一個數組里面,準備從 DB 中讀取

    上面 Redis 、 id 、 DB 和其他中文字符之間都是用了空格分隔。

    • 建議全部使用單行注釋
    • 和代碼的規范一樣,單行注釋不要過長,禁止超過 120 字符。

    三、代碼風格

    1、縮進和折行

    • 縮進直接使用 gofmt 工具格式化即可(gofmt 是使用 tab 縮進的);
    • 折行方面,一行最長不超過120個字符,超過的請使用換行展示,盡量保持格式優雅。

    我們使用Goland開發工具,可以直接使用快捷鍵:ctrl+alt+L,即可。

    2、語句的結尾

    Go語言中是不需要類似于Java需要冒號結尾,默認一行就是一條數據

    如果你打算將多個語句寫在同一行,它們則必須使用 ;

    3、括號和空格

    括號和空格方面,也可以直接使用 gofmt 工具格式化(go 會強制左大括號不換行,換行會報語法錯誤),所有的運算符和操作數之間要留空格。

    // 正確的方式 if a > 0 { ? } ? // 錯誤的方式 if a>0 // a ,0 和 > 之間應該空格 { // 左大括號不可以換行,會報語法錯誤 ? } ?

    4、import 規范

    import在多行的情況下,goimports會自動幫你格式化,但是我們這里還是規范一下import的一些規范,如果你在一個文件里面引入了一個package,還是建議采用如下格式:

    import ("fmt" )

    如果你的包引入了三種類型的包,標準庫包,程序內部包,第三方包,建議采用如下方式進行組織你的包:

    import ("encoding/json""strings" ?"myproject/models""myproject/controller""myproject/utils" ?"github.com/astaxie/beego""github.com/go-sql-driver/mysql" )

    有順序的引入包,不同的類型采用空格分離,第一種實標準庫,第二是項目包,第三是第三方包。

    在項目中不要使用相對路徑引入包:

    // 這是不好的導入 import “../net” ? // 這是正確的做法 import “github.com/repo/proj/src/net”

    但是如果是引入本項目中的其他包,最好使用相對路徑。

    5、錯誤處理

    • 錯誤處理的原則就是不能丟棄任何有返回err的調用,不要使用 _ 丟棄,必須全部處理。接收到錯誤,要么返回err,或者使用log記錄下來
    • 盡早return:一旦有錯誤發生,馬上返回
    • 盡量不要使用panic,除非你知道你在做什么
    • 錯誤描述如果是英文必須為小寫,不需要標點結尾
    • 采用獨立的錯誤流進行處理
    // 錯誤寫法 if err != nil {// error handling } else {// normal code } ? // 正確寫法 if err != nil {// error handlingreturn // or continue, etc. } // normal code ?

    6、測試

    單元測試文件名命名規范為 example_test.go 測試用例的函數名稱必須以 Test 開頭,例如:TestExample 每個重要的函數都要首先編寫測試用例,測試用例和正規代碼一起提交方便進行回歸測試

    四、常用工具

    上面提到了很過規范, go 語言本身在代碼規范性這方面也做了很多努力,很多限制都是強制語法要求,例如左大括號不換行,引用的包或者定義的變量不使用會報錯,此外 go 還是提供了很多好用的工具幫助我們進行代碼的規范,

    gofmt 大部分的格式問題可以通過gofmt解決, gofmt 自動格式化代碼,保證所有的 go 代碼與官方推薦的格式保持一致,于是所有格式有關問題,都以 gofmt 的結果為準。

    goimport 我們強烈建議使用 goimport ,該工具在 gofmt 的基礎上增加了自動刪除和引入包.

    go get golang.org/x/tools/cmd/goimports

    go vet vet工具可以幫我們靜態分析我們的源碼存在的各種問題,例如多余的代碼,提前return的邏輯,struct的tag是否符合標準等。

    go get golang.org/x/tools/cmd/vet

    使用如下:

    go vet .

    總結

    以上是生活随笔為你收集整理的c++ doxygen 注释规范_[代码规范]Go语言编码规范指导的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。