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.定義: 淺拷貝:將物件所有欄位複製到新物件(副本)中,其中,值型別的值被複制到副本中之後,在副本中的修改不會影響源物件的值;而引用型別欄位被複制到副本中的是引用型別的引用,而不是引用的物件,在副本中對引用型別欄位的修改會影響到源物件本身。 深拷貝:將物件中的所有欄位複製到新物件中,不過無
真正的C與C++程式設計高手是什麼?臭美的群體!如何編寫高質量程式碼?
前 言軟體質量是被大多數程式設計師掛在嘴上而不是放在心上的東西!除了完全外行和真正的程式設計高手
每週一書-編寫高質量程式碼:改善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:匿名函式 在多人合作一個網站時,每個人都會寫自己的