C語言的基本編寫規(guī)范你了解嗎
基本編寫規(guī)范
規(guī)范是一種規(guī)定,它是一種人為的、約定成俗的,即使不按照那種規(guī)定也不會(huì)出錯(cuò),這種規(guī)定就叫作規(guī)范。雖然我們不按照規(guī)范也不會(huì)出錯(cuò),但是那樣代碼寫得就會(huì)很亂。如果你養(yǎng)成一種非常不好的寫代碼的習(xí)慣,代碼寫得亂七八糟,等到將來工作面試的時(shí)候,這樣的習(xí)慣可能會(huì)讓你失去機(jī)會(huì)。
一、代碼規(guī)范化的好處
看著整齊舒服,邏輯清楚,條理清晰。假如你現(xiàn)在用不規(guī)范的方式寫了一萬行代碼,現(xiàn)在能看得懂,但等過了三個(gè)月你再回頭看時(shí)就很吃力了,更不要說給別人看了。所以代碼要寫規(guī)范。規(guī)范的代碼不容易使程序出錯(cuò),即使出錯(cuò)了查錯(cuò)也會(huì)很方便。如果按照不規(guī)范的格式輸入代碼的話,很容易出錯(cuò)。格式雖然不會(huì)影響程序的功能,但會(huì)影響可讀性。程序的格式追求清晰、美觀,是程序風(fēng)格的重要構(gòu)成元素。
規(guī)范的代碼
約瑟夫環(huán)
#include <stdio.h> #define N 100 int main() { int n,m=3,s=1; //n:總?cè)藬?shù),m:報(bào)數(shù)值,s報(bào)數(shù)人的起始編號(hào) scanf("%d",&n); int a[N] = {0}; //數(shù)組初始化 int i,j; for(i = 0; i < n; i++) //數(shù)組遍歷 { a[i] = i+1; //i是數(shù)組的位置量,a[i]是每個(gè)人的原始編號(hào)(從1開始) } i=s-1; //數(shù)組的起點(diǎn)(0) while (n > 1) { i = (i+m-1) % n; //出圈的人在數(shù)組中的位置 for(j = i+1; j < n; j++) { a[j-1] = a[j]; } n--; //出局1人后,總?cè)藬?shù)-1 if(i == n) //終點(diǎn)后,開始起點(diǎn)(圍成一個(gè)圈) { i = 0; } } printf("%d\n", a[i]); //輸出留下的人的原始編號(hào) return 0; }
不規(guī)范的代碼
#include<stdio.h>int main(void){int n,u,d,s,t;s=0;t=0;scanf("%d%d%d",&n,&u,&d);if(u>=n) printf("1");else{do{s=s+u;t++;if(s>=n)break;else{s=s-d;t++;}}while(s<=n);printf("%d",t);}}#include<stdio.h> int main(void){int n,u,d,s,t;s=0; t=0; scanf("%d%d%d",&n,&u,&d); if(u>=n) printf("1"); else{ do{s=s+u;t++; if(s>=n)break; else { s=s-d; t++;} }while(s<=n); printf("%d",t);} }
二、規(guī)范目的與基本規(guī)則
1.目的
可移植性、連貫、整潔、易于維護(hù)、易于理解、簡潔
2.基本原則
1.空行
空行起著分隔程序段落的作用??招械皿w將使程序的布局更加清晰??招胁粫?huì)浪費(fèi)內(nèi)存。
規(guī)則一:定義變量后要空行。盡可能在定義變量的同時(shí)初始化該變量。
規(guī)則二:每個(gè)函數(shù)定義結(jié)束之后都要加空行。
規(guī)則三:兩個(gè)相對(duì)獨(dú)立的程序塊、變量說明之后必須要加空行。比如上面幾行代碼完成的是 一個(gè)功能,下面幾行代碼完成的是另一個(gè)功能,那么它們中間就要加空行。這樣看起來更清晰。
例
2.空格
規(guī)則一:關(guān)鍵字之后要留空格。像 const、case 等關(guān)鍵字之后至少要留一個(gè)空格,否則無法辨析關(guān)鍵字。像 if、for、while 等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)(,以突出關(guān)鍵字。
規(guī)則二:函數(shù)名之后不要留空格,應(yīng)緊跟左括號(hào)(,以與關(guān)鍵字區(qū)別。
規(guī)則三:(
后不打空格; )
、,
、;
這三個(gè)前不打空格。
規(guī)則四:,
之后要留空格。如果;
不是一行的結(jié)束符號(hào),其后要留空格。
規(guī)則五:賦值運(yùn)算符、關(guān)系運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符,如 =、==、!=、+=、-=、*=、/=、%=、>>=、<<=、&=、=、|=、>、<=、>、>=、+、-、*、/、%、&、|、&&、||、<<、>>、 等雙目運(yùn)算符的前后應(yīng)當(dāng)加空格。
注意,%d 中的“%”前后不用加空格。
規(guī)則六:單目運(yùn)算符 !、~、++、--、-、*、& 等前后不加空格。
規(guī)則七:像數(shù)組符號(hào)[]、結(jié)構(gòu)體成員運(yùn)算符.、指向結(jié)構(gòu)體成員運(yùn)算符->,這類操作符前后不加空格。
規(guī)則八:對(duì)于表達(dá)式比較長的 for 語句和 if 語句,為了緊湊起見,可以適當(dāng)?shù)厝サ粢恍┛崭?。?for 和 if 后面緊跟的空格不可以刪,其后面的語句可以根據(jù)語句的長度適當(dāng)?shù)厝サ粢恍┛崭?。例如?br />for (i=0; i<10; i++); //for 和分號(hào)后面保留空格就可以了,=和<前后的空格可去掉。
3.成對(duì)書寫(有些編譯器會(huì)自動(dòng)補(bǔ)括號(hào))
成對(duì)的符號(hào)一定要成對(duì)書寫,如 ()、{}。不要寫完左括號(hào)然后寫內(nèi)容最后再補(bǔ)右括號(hào),這樣很容易漏掉右括號(hào),尤其是寫嵌套程序的時(shí)候。
4.縮進(jìn)(有些編譯器會(huì)自動(dòng)縮進(jìn))
縮進(jìn)是通過鍵盤上的 Tab 鍵實(shí)現(xiàn)的,縮進(jìn)可以使程序更有層次感。原則是:如果地位相等,則不需要縮進(jìn);如果屬于某一個(gè)代碼的內(nèi)部代碼就需要縮進(jìn)。
5.對(duì)齊(有些編譯器會(huì)自動(dòng)對(duì)齊)
規(guī)則一:{
和}
分別都要獨(dú)占一行?;橐粚?duì)的{
和}
要位于同一列,并且與引用它們的語句左對(duì)齊。
規(guī)則二:{}
之內(nèi)的代碼要向內(nèi)縮進(jìn)一個(gè) Tab,且同一地位的要左對(duì)齊,地位不同的繼續(xù)縮進(jìn)。
6.代碼行
規(guī)則一:一行代碼只做一件事情,如只定義一個(gè)變量,或只寫一條語句。這樣的代碼容易閱讀,并且便于寫注釋。
規(guī)則二:if、else、for、while、do 等語句自占一行,執(zhí)行語句不得緊跟其后。此外,非常重要的一點(diǎn)是,不論執(zhí)行語句有多少行,就算只有一行也要加{}
,并且遵循對(duì)齊的原則,這樣可以防止書寫失誤。
7.注釋
C語言中一行注釋一般采用//…
,多行注釋必須采用/*…*/
。注釋通常用于重要的代碼行或段落提示。在一般情況下,源程序有效注釋量必須在 20% 以上。
規(guī)則一:注釋是對(duì)代碼的“提示”,而不是文檔。注釋太多會(huì)讓人眼花繚亂。
規(guī)則二:如果代碼本來就是清楚的,則不必加注釋。
規(guī)則三:邊寫代碼邊注釋,修改代碼的同時(shí)要修改相應(yīng)的注釋,以保證注釋與代碼的一致性,不再有用的注釋要?jiǎng)h除。
規(guī)則四:當(dāng)代碼比較長,特別是有多重嵌套的時(shí)候,應(yīng)當(dāng)在段落的結(jié)束處加注釋,這樣便于閱讀。
規(guī)則五:每一條宏定義的右邊必須要有注釋,說明其作用。
例
#include <stdio.h> int main() { int i = 0; int x,y,z; int n; scanf("%d",&n); for(x = 0 ; x <= 100 ; x++) // 5分 { for(y = 0 ; y <= 100 ; y++) //2分 { for(z = 0 ; z <= 100 ; z++) //1分 { //判斷硬幣面值相加等于150分時(shí),還要三種硬幣相加等于100枚 if((x*1 + y*2 + z*5 == 150) && x+y+z == 100) { i++; if(z > 0 && z <= n) {//判斷前N種方案 printf("%d %d %d",z,y,x); if(z < n) {//換行輸出,同時(shí)最后一行輸出完,不再換行 printf("\n"); } } } } } } return 0; }
三、其他細(xì)節(jié)
1.頭文件放在代碼最前面,頭文件include從抽象到具體,次序:C標(biāo)準(zhǔn)庫→C++標(biāo)準(zhǔn)庫→OS相關(guān)→第三方庫→工程頭文件
2.標(biāo)識(shí)符的命名要清晰、明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解
常見縮寫
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
實(shí)例講解C++編程中l(wèi)ambda表達(dá)式的使用
這篇文章主要介紹了C++編程中l(wèi)ambda表達(dá)式的使用實(shí)例,lambda表達(dá)式特性的引入在C++11中可謂千呼萬喚始出來,非常重要,需要的朋友可以參考下2016-01-01WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù)詳解
這篇文章主要介紹了WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù),有助于讀者更好的理解windows程序的消息機(jī)制,需要的朋友可以參考下2014-07-07OLEDB打開Excel文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狾LEDB打開Excel文件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01教你在VS2022?MFC程序中調(diào)用CUDA代碼的方法
這篇文章主要介紹了在VS2022?MFC程序中調(diào)用CUDA代碼,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04