程式設計規範 寫 if 語句不要任性

2021-07-30 23:08:07 字數 2848 閱讀 9477

在之前的文章程式設計規範_這個星球上最好的c程式設計風格中,介紹了猿屆的辟邪劍譜,哦不,是獨孤九劍,google c++ style guide。程式設計規範而已,用不著自宮。為了方便大家,我也專門挑出了c語言相關的部分,並且翻譯成了中文,放在我的github上。

程式執行都是由各種各樣的語句組成,最常見的有表示式語句和函式呼叫語句,以及控制語句等。據統計,全世界的程式語句中,條件語句的比例高達67.3%,迴圈語句也有36.5%。不要問我這個資料怎麼得到的,通常開篇都要開個玩笑,好讓大家有興趣把文章看下去。

表示式語句和函式呼叫很簡單,都只有一行,因此只要程式設計規範上注意下縮排就好。控制語句的花樣就多一點,也就是大家最常用的條件語句、迴圈語句語句。如果不加注意,就會遇到各種樣式的ifelse。

我在程式設計規範_這個星球上最好的c程式設計風格提到的「幾位前輩用連括號前乙個空格都不放過的嚴謹讓我受益匪淺」,講的是關於if語句圓括號與左大括號的空格。很謝謝當時遇到的前輩,這情景現在還印象深刻。

我們團隊並沒有強制執行這個格式規範,因此就遇到了這樣的困擾。於是今天抽空梳理了下,希望大家在平常刻意練習,相互督促,形成乙個好的團隊程式設計氛圍。

這些都在谷歌c++程式設計規範的『格式』章節中,前文程式設計規範入門篇 空格和tab的區別也是出自這個章節。

提倡不在圓括號中新增空格,關鍵字else另起一行。

對基本條件語句有兩種可以接受的格式,一種在圓括號和條件之間有空格,一種沒有。

最常見的是沒有空格的格式,那種都可以,還是一致性為主。如果你是在修改乙個檔案,參考當前已有格式;如果是寫新的**,參考目錄下或專案中其他檔案的格式,還在徘徊的話,就不要加空格了。

if (condition)  else
如果你傾向於在圓括號內部加空格:

if ( condition )  else
注意所有情況下if和左圓括號間有個空格,右圓括號和左大括號(如果使用的話)間也要有個空格:

if(condition) // bad - space missing after if.

if (condition)

但如果語句中哪一分支使用了大括號的話,其他部分也必須使用:

// not allowed - curly on if but not else

if (condition) else

bar;

// not allowed - curly on else but not if

if (condition)

foo;

else

// curly braces around both if and else required because

// one of the clauses used braces.

if (condition) else

以團隊夥伴新鮮出爐的**為例。

if(getcadorrxstateswitchflag() ==0)

按照谷歌規範需要做如下修改,我用^號來表示要新增的空格:

if^(getcadorrxstateswitchflag() ==^0)^
這裡要說明下,除了指標和位址操作符外,其餘的操作符的前後都要加空格,因此 ==^0,這邊要有個空格。

switch語句可以使用大括號分塊;空迴圈體應使用{}或continue。

switch語句中的case塊可以使用大括號也可以不用,取決於你的喜好,使用時要依下文所述。

如果有不滿足case列舉條件的值,要總是包含乙個default(如果有輸入值沒有case去處理,編譯器將報警)。如果default永不會執行,可以簡單的使用assert:

switch (var) 

case 1:

default:

}

最近似乎沒看到特別的switch,暫且不寫。

單句宣告的迴圈體中,括號是可選的。

for (int i = 0; i < ksomenumber; ++i)

printf("i love you\n");

for (int i = 0; i < ksomenumber; ++i)

空迴圈,要用括號或者continue,而不能直接用個分號。

while (condition) 

for (int i = 0; i < ksomenumber; ++i) {} // good - empty body.

while (condition) continue; // good - continue indicates no logic.

while (condition); // bad - looks like part of do/while loop.

for(i=0;i注意對比下,這裡有好幾個空格要加,實際完成效果如下。

for (i = 0; i < length; i++)

雖然谷歌規範說括號是單句宣告的迴圈體,括號是可選的。但是我覺得還是加個括號括起來比較好,萬一別人要再加個迴圈內的語句,忘記加括號就容易發生事故。你加了括號,別人還更省心,可以直接填語句。

好了,就是這點小細節,再見。

DDL語句規範

create database dborder character set utf8 use dborder create table page id bigint 20 unsigned not null auto increment comment 自增id url varchar 255 no...

sql查詢語句規範

sqlite中所有sql語句都需要先編譯為stmt,然後執行。首先構造sqlitestatement物件,然後使用該物件執行,通過session呼叫到連線池中某個connection的execute相關方法。其中,在connection中重新構建preparedstatement,其實該物件才真正指...

sql語句書寫規範

一 sql書寫規範 1 sql語句的所有表名 欄位名全部小寫,系統保留字 內建函式名 sql保留字大寫。2 連線子or in and 以及 等前後加上乙個空格。3 對較為複雜的sql語句加上注釋,說明演演算法 功能。注釋風格 注釋單獨成行 放在語句前面。1 應對不易理解的分支條件表示式加注釋 2 對...