Gerrit搭建與代碼下載

一、向管理員申請gerrit帳戶

通常爲公司指定的我的郵箱。html

二、服務器名以及地址

三、配置.gitconfig信息

Linux 的.gitconfig 在 Home 目錄下。java

email:你的公司郵箱linux

name:cm給你分配的用戶名android

editor:提交massage時用的編輯器git

ui:高亮顯示程序員

alias:一些短引用,好比git branch,能夠直接寫git brgithub

url(2處):要替換爲本身用戶名,下例爲ssh://hp@192.168.8.74:29418/,替換hp爲上面name節點的名稱,sql

好比範建華的可爲:ssh://fjh@192.168.8.74:29418/express

insteadOf:勿修改apache

huangpeng@ubuntu:~$ cat .gitconfig
[user]
    email = hp@hpplay.cn
    name = hp
[core]
    editor = vim
[color]
    ui = auto
[alias]
    st = status
    br = branch
    co = checkout
    ci = commit
[url "ssh://hp@192.168.8.74:29418/"]
    insteadOf = "gerrit:"
[url "ssh://hp@192.168.8.74:29418/opensource/git-repo"]
    InsteadOf=https://gerrit.googlesource.com/git-repo
複製代碼

四、登陸並註冊

4.1 用步驟1申請的帳戶名和密碼登陸

4.2 跳轉到註冊頁面

4.3 註冊郵箱

4.4 收到郵件,【拷貝】連接到瀏覽器

4.5 完成註冊

五、配置SSH Public Keys

5.1 Linux/Ubuntu/gitbash

5.1.1 生成key,輸入

ssh-keygen -t rsa -C fjh@hpplay.cn
cat ~/.ssh/id_rsa.pub
複製代碼

過程當中會要求輸入密碼,爲了方便的話,能夠不設置密碼,直接回車便可

5.1.2 把~/.ssh/id_rsa.pub的內容copy到gerrit裏面,add

5.1.3 結果以下

5.1.4 配置帳戶

git config --global user.email "fjh@hpplay.cn"
git config --global user.name "Fan Jianhua"
git config --global core.editor vi
複製代碼

5.2 Windows

5.2.1 使用git的windows版本自帶的Git Bash

重複上面linux步驟便可,和linux的使用同樣
複製代碼

5.2.2 其餘可視化工具,這裏只列出SourceTree

5.2.2.1 建立祕鑰

5.2.2.2 拷貝上面選中的key值到gerrit,Add進去
5.2.2.3 保存成private key以後,在系統托盤裏面增長這個key值

5.2.2.4 剩下的使用和原來沒有什麼區別,只是不能直接push到git庫裏面了

六、提交代碼

6.1 下載

git clone ssh://xx@192.168.8.74:29418/test

6.2 修改代碼並本地提交

git commit -s

6.3 提交到gerrit

git push origin HEAD:refs/for/master
        第一次提交可能會缺乏Chang-Id,執行下面語句
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 fjh@192.168.8.247:hooks/commit-msg ${gitdir}/hooks/commit-msg" git commit --amend git push origin HEAD:refs/for/master 複製代碼

6.4 如今就能夠在gerrit上看到提交信息了

6.5 配置Sourcetree,使其可push到Gerrit

若是不想使用命令提交,也能夠在Sourcetree中添加push配置

打開config文件,如上圖:在[remote "origin"]裏面添加 push = refs/heads/:refs/for/

這樣就可使用 「推送」 按鈕將文件修改push到Gerrit上了

七、Linux下repo配置

7.1 該配置是在Ubuntu下驗證,下載repo,好比放在~/bin/repo

7.2 配置環境變量,

huangpeng@ubuntu:~$ vi .bashrc
複製代碼
export PATH=~/bin:$PATH
複製代碼

八、Gerrit提交規範

一、Message提交規範

ModuleName: do something

details

Ticket: LEBO5X-xxx
複製代碼

說明:

ModuleName是指工程裏面具備比較明確劃分的模塊名稱,若是工程比較單一,一個ModuleName就能夠

好比:接收端應用,能夠定義爲APP便可

ModuleName後面的冒號後緊接着一個小寫空格,而後是提交的內容描述,不可泛泛,控制在80列以內。

ModuleName下面空一行,再換行寫具體更加詳細的描述,可選。

Ticket是指jira的bug id,每次提交必須有一個bug對應,在bug裏面有對本次提交的具體緣由等信息

二、Gerrit提交流程

第一步:開發者本身review後+1

第二步:owner +2

第三步:開發者submit

Git 經常使用命令

  • 工做區:Workspace
  • 暫存區:Index/Stage
  • 倉庫區(或本地倉庫):Repository
  • 遠程倉庫:Remote

如下是如今工做中可能會用到的一些簡單的Git命令

1、獲取Git倉庫

git clone

獲取git倉庫,示例:

git clone ssh://tcc@192.168.8.74:29418/AndroidReceiver-SDK

2、分支

//查看分支

  • git branch 列出本地全部分支
  • git branch -r 列出全部遠程分支
  • git branch -a 列出全部遠程和本地分支

//切換分支

  • git checkout [branch-name] 切換到指定分支,並更新工做區

//新建本地分支

  • git branch [brnach-name] 新建分支,但依然留在當前分支
  • git checkout -b [branch-name] 新建分支,並切換到新分支

//刪除本地分支

  • git branch -d [branch-name] 刪除本地分支

3、拉取代碼

  • git pull 從遠程獲取最新版本並merge到本地
  • git fetch 從遠程獲取最新版本到本地,不會自動merge

git fetch 示例:

//首先從遠程的originmaster主分支下載最新的版本到origin/master分支上 git fetch origin master //而後比較本地的master分支和origin/master分支的差異 git log -p master..origin/master //最後進行合併 git merge origin/master

git fetch 示例2:

git fetch origin master:tmp git diff tmp git merge tmp

4、提交代碼

  • git status 顯示有變動的文件

  • git add [file] 提交指定文件到暫存區

  • git add [dir] 提交指定目錄到暫存區

  • git add . 添加當前目錄的全部文件到暫存區

  • git commit 提交暫存區到倉庫區

  • git commit --amend 用來改寫上一次commit的提交信息

  • git cherry-pick [commit] 選擇一個commit,合併進當前分支

4.一、樂播 git commit 提交信息規範

模塊(英文大寫): 提交信息(首行英文)

MODULE: commit message

示例:

SDK: modify VideoPlayer for leishi project

將播放器播放功能與播控UI實現分離

若是是解決在JIRA中提出的bug,須要把JIRA中bug號加上 格式以下

Ticket: bug編號

示例:

SDK: Ariplay or DLNA play failed

Airplay video status error Airplay or DLNA play failed

Ticket: Base130-1, Base130-2

若是修改內容涉及到SDK和APP,可使用 ALL來代替模塊,例如

ALL: modify SDK for leishi project and supply demo module

5、推送

git push

git push [remote] [branch-name] 上傳本地指定分支到遠程倉庫 示例: git push origin r1.3.2_bugfix //Gerrit git push origin HEAD:refs/for/r1.3.2_bugfix

6、撤銷修改

  • git checkout [file] 恢復暫存區的指定文件到工做區

  • git chekcout . 恢復暫存區的全部文件到工做區

  • git chekcout [commit] [file] 恢復某個commit的指定文件到暫存區和工做區

  • git reset [file] 重置暫存區的指定文件,與上一次commit保持一致,但工做區不變

  • git reset --hard 重置暫存區與工做區,與上一次commit保持一致

  • git reset [commit] 重置當前分支的指針爲指定commit,同時重置暫存區,但工做區不變

  • git reset --hard [commit] 重置當前分支的HEAD爲指定commit,同時重置暫存區和工做區,與指定commit一致

7、查看提交歷史

  • git log 顯示當前分支的版本歷史

  • git log --oneline 參數將每次提交記錄彙總成一行,默認狀況下,會展現commit的id和commit信息的第一行

  • git log --follow [file]顯示某個文件的版本歷史,包括文件更名

  • git log --stat 顯示commit歷史,以及每次commit發生變動的文件

  • git log -S [keyword] 搜索提交歷史,根據關鍵詞

  • git blame [file] 顯示指定文件是什麼人在什麼時間修改過

  • git show [commit] 顯示某次提交的元數據和內容變化

  • git show --name-only [commit] 顯示某次提交發生變化的文件

  • git show [commit]:[filename] 顯示某次提交時,某個文件的內容

  • git diff HEAD 顯示工做區與當前分支最新commit之間的差別

  • git diff 顯示暫存區和工做區的差別

8、標籤

  • git tag 列出全部tag
  • git show [tag-name] 查看tag信息

//切換代碼到指定TAG

  • git checkout [tag-name] 切換到指定tag
  • git checkout -b [branch-name] [tag-name] 新建一個分支,指向某個tag

//建立TAG

  • git tag [tag-name] 新建一個tag在當前commit
  • git tag [tag-name] [commit] 新建一個tag在指定commit

//刪除TAG

  • git tag -d [tag-name] 刪除本地tag

推送代碼修改到Gerrit

首先提交修改信息,與直接推送到git服務器不一樣的是,這裏是把修改信息推送到Gerrit,待經過Gerrit審覈以後,才能把代碼合併到git服務器

git提交流程

gerrit提交流程

具體到提交命令就是

//git git push origin r1.3.2_bugfix

//Gerrit git push origin HEAD:refs/for/r1.3.2_bugfix

若是使用Sourcetree來提交代碼須要在config文件中添加 push = refs/heads/:refs/for/

添加審覈人

經過第二步把修改信息推送到Gerrit上以後,登陸Gerrit查看提交信息

點擊修改信息,查看修改詳情

添加審覈人,等待審覈結果

代碼審覈經過,submit

代碼審覈不經過,繼續修改,commit --amend

Java代碼規範

1、爲何須要編碼規範

編碼規範對於程序員而言尤其重要,有如下幾個緣由:

一個軟件的生命週期中,80%的花費在於維護
幾乎沒有任何一個軟件,在其整個生命週期中,均由最初的開發人員來維護
編碼規範能夠改善軟件的可讀性,可讓程序員儘快而完全地理解新的代碼
複製代碼

2、命名

1. 包命名

命名規則:一個惟一包名的前綴老是所有小寫的ASCII 字母而且是一個頂級域名,一般是com,edu,gov,mil,net,org。包名的後續部分根據不一樣機構各自內部的命名規範而不盡相同。這類命名規範可能以特定目錄名的組成來區分部門 (department) ,項目(project),機器(machine),或註冊名(login names)。

例如:

com.lebo.項目縮寫.模塊名 à com.lebo.player.live

com.lebo.項目縮寫.層級名 à com.lebo.player.activities

2. 類和接口 命名

命名規則:類名是個一名詞,採用大小寫混合的方式,每一個單詞的首字母大寫。儘可能使你的類名簡潔而富於描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更普遍使用,像URL,HTML),類名必須使用駝峯命名法,即首字母必須大寫,若是爲詞組,則每一個單詞的首字母也必需要大寫,類名必須使用名詞,或名詞詞組。接口通常要使用able、ible、er等後綴,

例如:

class BookMarkAdd à 正確

class AddBookReadPlanActivity à 錯誤! 應爲 class BookReadPlanAddActivity

3. 方法的命名

命名規則:方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。類中經常使用方法的命名:

類的獲取方法(通常具備返回值)通常要求在被訪問的字段名前加上get,如
getFirstName(),getLastName()。通常來講,get前綴方法返回的是單個值,find前綴的方法返回的是列表值。

類的設置方法(通常返回類型爲void):被訪問字段名的前面加上前綴 set,如
setFirstName(),setLastName().

類的布爾型的判斷方法通常要求方法名使用單詞 is作前綴,如isPersistent(),isString()。或者使用具備邏輯意義的單詞,例如equal 或equals。

類的普通方法通常採用完整的英文描述說明成員方法功能,第一個單詞儘量採用動詞,首字母小寫,如openFile(),addCount()。

構造方法應該用遞增的方式寫。(參數多的寫在後面)。
複製代碼

4. 變量及常量命名

變量名應簡短且富於描述
第一個單詞的首字母小寫,其後單詞的首字母大寫
臨時整型變量一般被取名爲 i,j,k,m 和 n;字符型通常爲c,d,e
非public的、非static的字段名稱以m開頭。
static字段名稱以s開頭,final static 全大寫,能夠不以S開頭
其它字段以小寫字母開頭。
常量所有字母大寫並用下劃線分隔。
複製代碼

例如:

public class MyClass {

    public static final int SOME_CONSTANT = 42;
    
    public int publicField;
    
    private static MyClass sSingleton;
    
    int mPackagePrivate;
    
    private int mPrivate;
    
    protected int mProtected;

}
複製代碼

5. 異常命名

自定義異常的命名必須以Exception爲結尾。已明確標示爲一個異常。

6. layout 命名

layout xml 的命名必須以 所有單詞小寫,單詞間如下劃線分割,而且使用名詞或名詞詞組,即便用 模塊名_功能名稱 來命名。例如:

knowledge_gained_main.xml à 正確

list_book.xml à 錯誤!

7. id 命名

layout 中所使用的id必須以所有單詞小寫,單詞間如下劃線分割,而且使用名詞或名詞詞組,末尾加上view的縮寫,而且要求可以經過id直接理解當前組件要實現的功能。例如:

TextView @+id/textbookname à錯誤!應爲 @+id/book_name_show_tv

EditText @+id/textbookname à錯誤!應爲 @+id/book_name_edit_et

8. 資源命名

layout中所使用的全部資源(如drawable,style等)命名必須以所有單詞小寫,單詞間如下劃線分割,而且儘量的使用名詞或名詞組,即便用 模塊名_用途 來命名。若是爲公共資源,如分割線等,則直接用用途來命名,例如:

menu_icon_navigate.png à 正確

某分割線:line.png 或 separator.png à正確

9. 書寫順序

用於日誌記錄的TAG放在最前面
static final放在1)後面,按照語義,每塊定義中間加空格和註釋
用於Handler的WHAT值,要分語義賦值,語義相關的值依次累加
相關語義的變量要有相同的前綴,相似於包名命名方式
自定義View要把所在的layout寫到註釋裏面
View的定義順序要與layout裏面的順序一致
系統類變量定義
自定義類變量定義
普通變量定義
複製代碼

如:

private static final String TAG = "LiveView";

    // WHAT values using by handler

private static final int WHAT_ADD_CHANNEL_HISTORY = 0;

private static final int WHAT_PLAY_CHANNEL = 10;

private static final int WHAT_PLAY_PIP = 11;

    // keys of data when play channel used

private static final String KEY_CHANNEL_INDEX = "channel_index";

private static final String KEY_CHANNEL_URL = "channel_url";

    // in activity_main.xml

private TitleView mTitleView;

    // in tv_content.xml

private VideoPlayerController mMainPlayerController;

private VideoPlayerController mPipPlayerController;

private ChannelMenu mChannelMenuView;

    // dynamic add/remove

private VerifyView mVerifyView;

private AudioManager mAudioManager;

private SharedPreferences mPrefs;

private ChannelManager mChannelManager;

private LayerType mCurrentLayer = LayerType.LAYER_MAIN;

private boolean mHasShowLiveGuide;
複製代碼

3、註釋

Java 程序有兩類註釋:實現註釋(implementation comments)和文檔註釋(document comments)。實現註釋是使用/.../和//界定的註釋。文檔註釋(被稱爲"doc comments")由/**...*/界定。文檔註釋能夠經過javadoc 工具轉換成HTML 文件。

1. 文件註釋

每一個文件的開頭都應該有一句版權說明。而後下面應該是package包語句和import語句,每一個語句塊之間用空行分隔。而後是類或接口的定義。若是不過認證,就不用加。

/*

 * Copyright (C) 2013 The Android Open Source Project

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *      http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

package com.android.internal.foo;

import android.os.Blah;

import android.view.Yada;

import java.sql.ResultSet;

import java.sql.SQLException;

樂播文件頭註釋

/**

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2018</p>

* <p>Company: www.hpplay.com.cn</p>

* @author LEBO

* @date ${date}

*/
複製代碼

2. 類註釋

每一個類和自建的public方法必須包含Javadoc註釋,註釋至少要包含描述該類或方法用途的語句。而且該語句應該用第三人稱的動詞形式來開頭。註釋儘可能寫中文。

/**

 * Does X and Y and provides an abstraction for Z.

 */

public class Foo {

    ...

}
複製代碼

3. 方法註釋

每個方法的註釋都要包含當前方法的用途,當前方法參數的含義,當前方法返回值的內容和拋出異常的列表。

/** Returns the correctly rounded positive square root of a double value. */

static double sqrt(double a) {

    ...

}

或

/**

 * Constructs a new String by converting the specified array of

 * bytes using the platform's default character encoding. */ public String(byte[] bytes) { ... } 複製代碼

4. 類成員變量和常量註釋

公共成員變量和常量須要使用java doc形式的註釋,以說明當前變量或常量的含義

5. XML註釋

若是當前layout 或資源須要被多處調用,或爲公共使用的layout(若list_item),或者須要特殊說明的,則須要在xml寫明註釋。要求註釋清晰易懂。

6. TODO註釋

對那些臨時性的、短時間的、夠棒但不完美的代碼,請使用TODO註釋。

TODO註釋應該包含所有大寫的TODO,後跟一個冒號,例如:

// TODO: Remove this code after the UrlTable2 has been checked in.

// TODO: Change this to use a flag instead of a constant.
複製代碼

若是TODO註釋是「未來要作某事」的格式,則請確保包含一個很明確的日期(「在2005年11月會修正」),或是一個很明確的事件以後刪除本段代碼。

7. 修改OpenSource源碼註釋要求

必須如下面註釋開頭和結尾,後面能夠自行增長日期、做者、緣由:

// Lebo START

// Lebo END

8. 其餘註釋

方法內部的註釋 若是須要多行 使用/*…… */形式,若是爲單行是用//……形式的註釋。不要再方法內部使用 java doc 形式的註釋「/……/」,簡單的區分方法是,java doc形式的註釋在 eclipse中爲藍色,普通註釋爲綠色。

4、代碼風格

1. 縮進

不容許使用Tab進行縮進,使用4空格進行縮進。每換一次行縮進增長4個空格縮進,好比:

Instrument i =

            someLongExpression(that, wouldNotFit, on, one, line); à正確

    Instrument i =

       someLongExpression(that, wouldNotFit, on, one, line); à錯誤
複製代碼

2. 空行

空行將邏輯相關的代碼段分隔開,以提升可讀性。

下列狀況應該老是使用空行:

一個源文件的兩個片斷(section)之間
類聲明和接口聲明之間
兩個方法之間
方法內的局部變量和方法的第一條語句之間
一個方法內的兩個邏輯段之間,用以提升可讀性
不一樣邏輯變量區域之間
複製代碼

3. import

使用eclipse等自動化工具作這個工做

Import最小顆粒類,好比:
複製代碼

import foo.Bar;à正確

import foo.*;à錯誤

對Import語句排序
複製代碼

4. 使用標準的大括號風格

大括號不單獨佔用一行;它們緊接着上一行書寫。就像這樣:

class MyClass {

int func() {

if (something) {

            // ...

        } else if (somethingElse) {

            // ...

        } else {

            // ...

        }

    }

}

對於單行語句,也要增長大括號括起來,像這樣

if (condition) {

        body();

    } à正確

if (condition) body();à錯誤

if (condition)

        body();à錯誤
複製代碼

5. 不建議使用三目運算符

6. 限制代碼行和註釋的長度

每行代碼的長度不超過100個字符。

註釋的長度也不能超過100個字符。

5、其餘約定

1. 異常

禁止忽略異常,好比下面代碼:
複製代碼
void setServerPort(String value) {

try {

  int serverPort = Integer.parseInt(value);

       } catch (NumberFormatException e) {

    }

    }

可接受的替代方案包括:

    拋出默認異常
    拋出自定義異常
    處理錯誤並在catch {}語句塊中替換爲合適的值
    捕獲異常並拋出RuntimeException。這種作法比較危險:只有確信發生該錯誤時最合適的作法就是崩潰,才須要這麼作。
    忽略異常,但必須把緣由註釋出來
    忽略異常,但必須把緣由打印出來
複製代碼
不建議捕獲頂級的Exception,好比下面的代碼:
複製代碼
ry {

        someComplicatedIOFunction();        // may throw IOException

        someComplicatedParsingFunction();   // may throw ParsingException

        someComplicatedSecurityFunction();  // may throw SecurityException

        // phew, made it all the way

    } catch (Exception e) {                 // I'll just catch all exceptions handleError(); // with one generic handler! } 比捕獲頂級Exception更好的方案: 分開捕獲每一種異常,在一條try語句後面跟隨多個catch 語句塊。這樣可能會有點彆扭,但總比捕獲全部Exception要好些。請當心別在catch語句塊中重複執行大量的代碼。 從新組織一下代碼,使用多個try塊,使錯誤處理的粒度更細一些。把IO從解析內容的代碼中分離出來,根據各自的狀況進行單獨的錯誤處理。 再次拋出異常。不少時候在你這個級別根本就不必捕獲這個異常,只要讓方法拋出該異常便可。 複製代碼

2. 限制變量的做用範圍

局部變量應該限制爲最小的做用範圍。使用局部變量,能夠增長代碼的可讀性和可維護性,而且下降發生錯誤的可能性,每一個變量都應該在最小範圍的代碼塊中進行聲明,該代碼塊的大小隻要可以包含全部對該變量的使用便可,因此循環變量都應該在for語句內進行聲明,好比:

for (int i = 0; i < n; i++) {

        doSomethinginformation;

    }

和

for (Iterator i = c.iterator(); i.hasNext(); ) {

        doSomethingElse(i.next());

    }
複製代碼

3. 去除IDE提示的警號

注意@SuppressWarnings和@Deprecated要寫在方法的頭部

4. 簡稱要保持在同一項目內一致。

5. 不建議使用View.post和View.postDelayed

禁止使用View.post和View.postDelayed,須要的地方替換爲Handler的Message方式,以使代碼可控。

6. Log

禁止在循環內打印VERBOSE級別以上的log
禁止直接使用系統默認log,必須使用項目內自定義的log類
打印log的開關必須有統一的控制
複製代碼

7. 保持一致

編碼規範的重要目的就是爲了保持一致。若是你正在編寫代碼,請花幾分鐘瀏覽一下先後的其它代碼,以肯定它們的風格。若是它們在if語句先後使用了空格,那你也應該遵循。若是它們的註釋是用星號組成的框框圍起來的,那也請你照辦。

8. 編碼格式

爲了跨平臺以及跨編輯器,請統一使用UTF-8格式

Android Studio 代碼格式化配置

Android Studio統一使用Eclipse的格式化配置,可經過如下幾個步驟在Android Studio中配置使用Eclipse的代碼格式化方式:

1、Android Studio安裝 Eclipse Code Formatter 插件

編輯

1.一、搜索Eclipse Code Formatter插件

1.二、安裝Eclipse Code Formatter

安裝完畢重啓Android Studio

2、從Eclipse中導出代碼格式化配置文件

2.一、導出配置文件

工具欄點擊Windows選擇Preferences

導出代碼格式化配置文件

在導出以前須要修改不少默認配置,這裏就再也不一一贅述,建議直接使用前面配置好的xml文件,以便於保證代碼格式化風格統一。

3、在Android Studio中使用eclipse_format.xml文件

編輯

3.一、以下圖,找到Eclipse Code Formatter插件,找到Eclipse Java Formatter config file,選擇第二步從Eclipse中導出的配置文件

3.二、在工具欄中將代碼格式化插件更換爲 Eclipse Code Formatter

更換前

更換後

通過以上三步,在Android Studio中就可使用Eclipse的代碼格式化方式了

C 語言代碼規範

代碼格式規範

使用格式化工具CoolFormat,這裏不作具體展開說明。

github.com/akof1314/Su… akof1314.github.io/CoolFormat/… CoolFormat配置:

[SynTidy] C++=""-A10-xn-xc-xk-xV-s4-S-w-Y-p-xg-H-U-k3-xb-j-xf-xh-c-xy""

命名規範

一、文件命名:小寫+下劃線

二、函數命名:小寫+下劃線

三、結構體,枚舉等類型命名:大駝峯

四、常量,宏:大寫+下劃線

五、參數,變量:前綴+小駝峯

六、命名前綴:

n:整數

b:boolean類型

p:指針

o:結構體

str:字符串

g_:全局變量

k_:   const 全局常量

xxxMutex, xxxCond, arrXxx, pArrXxx
jobjXxx,  jMethodIdXxx
複製代碼

7,避免使用魔數,建議使用宏或者常量

返回值

外部接口返回值:int,0 成功,其它失敗

Cplusplus語言編程規範

相關文章
相關標籤/搜索