1. 程式人生 > >C/C++之寫出高質量程式碼

C/C++之寫出高質量程式碼

      自從看了林銳博士的《高質量C++程式設計指南》以後,感覺自己以前寫的程式碼都是一些垃圾,真的low,根本不知道一些基本的程式設計規範,然後看了一些大神寫的程式碼,清晰易懂,而且還很漂亮,給人一種賞心悅目的感覺,寫一手高質量的程式碼,是一個程式設計師最基本的素養,程式碼的質量也能看出你是否有過專案經驗。因此,本文總結一些程式設計規範,為有需要的朋友提供幫助。有欠缺或者錯誤請大家幫忙斧正。

一、我們寫的程式碼是給別人看的,所以在程式碼開頭我們必須宣告這個程式是用來幹嘛的,作者是誰,以及版本號和修改歷史,以及修改者的名稱,還有完成的日期能讓別人一目瞭然。這是我的一個例子:

二、標頭檔案的使用:

1.首先說一下標頭檔案的作用:呼叫庫功能以及加強型別安全檢查。

2.為防止標頭檔案被重複引用,應該使用 ifndef/define/endif結構產生預處理塊。

3.#include <stdio.h> 格式引用標準庫的標頭檔案,即編譯器從標準庫目錄開始搜尋。#include "stdio.h"格式引用非標準庫的標頭檔案,即編譯器從使用者工作目錄開始搜尋。

4.在標頭檔案中最好不用全域性變數,不要出現extern int value這類宣告。

5.標頭檔案放在一份目錄下,定義檔案放在另一個目錄下,最好這樣分開。

三、具體程式:

1.空行

   程式好的佈局需要空行,每個函式定義結束之後加空行,在函式體內,邏輯密切相關語句不用空行,其他地方用空行分離。

void fun() 
{
    ...; 
} 
//空行 
void fun1() 
{ 
   while (1); 
  { 
    ...; 
    //空行 
    if (...) 
    { 
       ...; 
    } 
  } 
}
 //空行

2.程式碼行

   一行程式碼只做一件事情,定義變數或者是一條語句,在定義變數的同時最好將其初始化;

   if、for、while、do等語句佔一行,不論執行語句多長,都記得加‘{’、‘}’。

int a=1;
int b=2;
int c=a+b;
if (..)
{
   ....;
}
//空行
other();


3.程式碼行內的空格

   關鍵字之後留空格,if、for等關鍵字之後留空格再跟括號;

   向前緊跟的“,”、“(”、“)”、“;”不留空格;

   ”,“後留空格,”;“如果不是一行的結束符,其後留空格;

   操作符等二元操作符前後加空格,一元操作符前後不加空格;“[ ]”、“.”、“->”前後不加空格,

   對較長表示式可適當去掉一些空格。

void fun(int a ,int b, int c);

if (year >= 2000)

if ((a>=b) && (c<=d))

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

array[2] = 0;

int *x = &y;
4.對齊    “{”、“}”獨佔一行並且在同一列對齊,與引用它們的語句左對齊,括號裡面的程式碼塊左對齊。巢狀括號縮排對齊。
void fun(int x)
{
    .....;
}

for (...)
{
    ....;
}
{
   {
      ...;
   }
}

5.長行拆分

  程式碼行最大長度控制在70至80個字元以內,便於檢視和列印,長表示式在低優先順序操作符處拆分成新行,操作符放在新行之首,並適當縮排

if ((a1 >= a2)
   && (a3 >= a4)
   && (a5 >= a6))

int main(a1,
             a2);

for (long;
      middle;
      short)


6.修飾符的位置

  * 和 & 緊靠變數名

7.註釋,註釋符有/*... */、//、#if 0,#endif

   註釋要少而精,不能喧賓奪主,它的作用是幫助理解程式碼;

   邊寫程式碼邊註釋,保證一致性,避免二義性以及在註釋中使用不常用縮寫;

   程式碼較長時,或者有多重巢狀時,應當在段落的結束處加註釋,便於閱讀。

好了,這篇文章就先了解標頭檔案與程式碼行的一些程式設計規範,下篇文章將講述命名規則與表示式的程式設計規範。

相關推薦

C/C++質量程式碼

      自從看了林銳博士的《高質量C++程式設計指南》以後,感覺自己以前寫的程式碼都是一些垃圾,真的low,根本不知道一些基本的程式設計規範,然後看了一些大神寫的程式碼,清晰易懂,而且還很漂亮,給人一種賞心悅目的感覺,寫一手高質量的程式碼,是一個程式設計師最基本的素養,

如何質量c程式碼(一)C的陷阱

1.函式宣告 首先讓我們來看一個函式的宣告 (* ( void (*)() )0)); 面對這樣的一個函式宣告也許有人會很迷惑,那麼我們來一步步剖析 第一我們要分清指向函式的指標和返回指標的函式 我前面的一篇部落格已經寫過關於指向函式的指標了,他的一

讀書筆記《編寫質量程式碼:改善C#程式的157個建議》

最近,在閱讀書籍《編寫高質量程式碼:改善C#程式的157個建議》,感覺寫得很不錯,特將其中的建議整理了一下,待以後隨時檢視。 現只羅列了其中的部分建議,因為書籍還沒有閱讀完,會慢慢的完善補充。 1 正確操作字串 1.1 確保儘量少的裝箱 在使用其他值引用型別到字串的轉換並

如何質量程式碼

引言 不重視程式碼質量的工程師永遠是初級工程師 為什麼專案維護困難、BUG 反覆?實際上很多時候就是程式碼質量的問題。程式碼架構就像是建築的鋼筋結構,程式碼細節就像是建築的內部裝修,建築的抗震等級、簡裝或豪裝完全取決於團隊開發人員的水平。 本文是筆者對於一些程式碼質

如何質量程式碼

3種錯誤處理的方法 在寫程式碼之前,要考慮單元測試。如果能夠設計全面的單元測試用例並在程式碼中體現出來,那麼寫出的程式碼自然也就是完整正確的了。通常我們從功能測試、邊界測試和負面測試三方面來設計測試用例。 其中,負面測試是指當輸入不符合要求的時候,程式還能做

怎樣才能質量的偽原創,並且排名在前?

站長 拿站 索引 思考 總結 失去 讀取 新增 操作方法 1、等價替換法 ①、文字排序法:如隨便拿本站的這篇文章“編輯寫偽原創文章的五大技巧”如何做等價替換法?通過近義詞以及打亂標題關鍵詞順序來達到等價替換,你可以改成“編輯五大技巧寫偽原創文章”,“五大技巧幫助編輯寫偽原創

4年前的隨筆---質量程序的要點

找到 post 規範 ++ 總量 word popu 清晰 之前 從1990年開始敲代碼。到如今已經快20年了。總結出寫出高質量程序的幾個要點: - 1、開始寫之前思路越清晰完整越好。 - 2、寫的過程中代碼一定要規範一致,這種代碼便於維護和改動。這個規範一致性包括名稱

SEO高手們如何質量的文章的?

SEO高手們如何寫出高質量文章的呢?下面太白就來給大家分享一下技巧。   首先先要了解什麼樣的文章稱得上高質量的文章?針對搜尋引擎而言,核心關鍵詞明確,內容相關性高,對使用者參考價值高,原創性時效性高,都能稱得上高質量文章,而對於使用者而言,排版乾淨且內容通俗易懂的都算是高質

如何用正確的方法質量軟體的75條體會

    1. 你們的專案組使用原始碼管理工具了麼?   MVM:應該用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的選擇是VSS。  2. 你們的專案組使用缺陷管理系統了麼?  MVM:應該用。ClearQuest太複雜,我

《程式設計珠璣》程式碼路12:如何用C/C++實現array[-1]並利用它優美的程式碼

我們就以最大子陣列和為例: 最大子段和問題:給一組數,計算最大子段和。 在部落格:最大欄位和的6種解法,解法三中,我們提到了儲存前i項和的操作: cache[i]代表前i-1項之和,因為在c/c++中,cache[-1]會越界,所以如果用cache[i]代表前i項和的話,那麼在用遞推公式

編寫質量程式碼改善C#程式的157個建議——導航開篇

為什麼要來看這本書    寫此書的作者在書中也有明確的記錄。作者一直在思考一個問題:就是到底什麼樣的程式設計書籍能夠幫助入門者快速進階?所謂“入門者”指的是已經可以使用一門語言來編寫程式,但是不太明白如何編寫高質量程式碼的人。作者回憶自己開發生涯的入門階段發現,那時候常常被以下三類問題所困擾。

深拷貝與淺拷貝---《編寫質量程式碼改善C#程式的157個建議》筆記

1.定義: 淺拷貝:將物件所有欄位複製到新物件(副本)中,其中,值型別的值被複制到副本中之後,在副本中的修改不會影響源物件的值;而引用型別欄位被複制到副本中的是引用型別的引用,而不是引用的物件,在副本中對引用型別欄位的修改會影響到源物件本身。 深拷貝:將物件中的所有欄位複製到新物件中,不過無

真正的CC++程式設計高手是什麼?臭美的群體!如何編寫質量程式碼

前 言軟體質量是被大多數程式設計師掛在嘴上而不是放在心上的東西!除了完全外行和真正的程式設計高手

每週一書-編寫質量程式碼:改善C程式程式碼的125個建議

首先說明,本週活動有效時間為2016年8月28日到2016年9月4日。本週為大家送出的書是由機械工業出版社出版,馬偉編著的《編寫高質量程式碼:改善C程式程式碼的125個建議》。 編輯推薦

C#程式編寫質量程式碼改善的157個建議[4-9]

前言   本文首先亦同步到http://www.cnblogs.com/aehyok/p/3624579.html。本文主要來學習記錄一下內容:   建議4、TryParse比Parse好   建議5、使用int?來確保值型別也可以為null   建議6、區別readonly和const的使用方法   建議

質量的SEO優化文章是因為沒文采?

今天有位朋友問岑輝宇一個問題,你是如何每天做到寫SEO文章的?筆者思考了一下,回答道:長期的堅持,習慣了。他又問,我該如何寫好SEO優化文章呢?我不假思索的回答道,不斷去實踐和學習。誰知這位朋友說我要有你這樣的文采就好了,我就寫不出這樣的文章出來,我反問了他一句,寫不出高質量的SEO優化文章是

編寫質量程式碼(從入坑到坑)

第一坑:三元操作符的型別務必一致     三元操作符是if-else的簡化寫法,在專案中使用它的地方很多,也非常好用,但是好用 又簡單的東西並不表示就可以隨便用,我們來看看下面這段程式碼:public class Client i     public static voi

C++演算法雙向連結串列的程式碼

工作閒暇時間,把程式碼過程較好的程式碼片段收藏起來,下邊資料是關於C++演算法之雙向連結串列的程式碼,應該是對各朋友有些用處。  typedef struct _DOUBLE_LINK_NODE { int data; }DOUBLE_LINK_NODE; 複製程式碼(2

《編寫質量程式碼--web前端開發修煉道》筆記-CSS

此篇為本筆記的第二篇 標準模式與怪異模式(模擬老式瀏覽器的行為) 如果漏寫了DTD宣告,Firefox仍然會按照標準模式來解析網頁,但在IE中(包括IE6,IE7,IE8)就會觸發怪異模式 IE盒模型的解析 標準模式:網頁元素的寬度有padding,bo

編寫質量程式碼:Web前端開發修煉道(三)

第五章:高質量的Javascript 這章的內容我看的最久,這是跟我js基礎沒打好有著莫大的關係,但是還是耐著性子看完了, 不懂的東西都是百度上搜索,理解後再繼續。下面是記錄下來的筆記。 1)如何避免JS衝突 A:匿名函式 在多人合作一個網站時,每個人都會寫自己的