在開始寫這篇文章之前,先給大家看兩段代碼:
第一段:
Console.Write("請輸入數字A:");
string A = Console.ReadLine();
Console.Write("請選擇運算符號(+、-、*、/)");
string B = Console.ReadLine();
Console.Write("請輸入數字C:");
string C = Console.ReadLine();
string D = "";
if (B == "+")
D = Convert.ToString(Convert.ToDouble(A) + Convert.ToDouble(C));
if (B == "-")
D = Convert.ToString(Convert.ToDouble(A) - Convert.ToDouble(C));
if (B == "*")
D = Convert.ToString(Convert.ToDouble(A) * Convert.ToDouble(C));
if (B == "/")
D = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(C));
Console.WriteLine("結果是:" + D);
第二段:
try
{
Console.Write("請輸入數字A:");
string strNumberA = Console.ReadLine();
Console.Write("請選擇運算符號(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("請輸入數字B:");
string strNumberB = Console.ReadLine();
string strResult = "";
switch (strOperate)
{
case "+":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) + Convert.ToDouble(strNumberB));
break;
case "-":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) - Convert.ToDouble(strNumberB));
break;
case "*":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) * Convert.ToDouble(strNumberB));
break;
case "/":
if (strNumberB != "0")
strResult = Convert.ToString(Convert.ToDouble(strNumberA) / Convert.ToDouble(strNumberB));
else
strResult = "除數不能爲0";
break;
}
Console.WriteLine("" + strResult);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("" + ex.Message);
}
大家看完上面的兩段代碼有什麼感覺呢?
稍有一些經驗的大神們一眼就會看出:第一段代碼的命名不合規範,而且會做無用功,還沒有考慮到C爲0的情況;第二段代碼雖然能夠較好的實現這個編程,但是沒有很好的運用到面向對象的概念。
現在,進入這篇文章的主題——代碼的規範。
先說一下爲什麼要把代碼寫規範
1) 有一個好的代碼可讀性;使得你讀別人的代碼和別人讀你的代碼一樣容易;
2)避免壞的代碼習慣,規範的代碼不容易引進bug,而且易於維護;
3)有一致的代碼風格,看上去所有的代碼就象一個人寫的;
4)以“程序結構和可讀性第一,優化第二”爲宗旨。
然後是命名的規範
如上面第二段代碼(strNumberA )所示:str代表的是變量A的數據類型是string,NumberA是數字A的名字,這兩個合在一起構成了數字A的名稱,能夠使人一眼就能夠更加直觀地看出A是一個什麼東西,減少了溝通的障礙,使得代碼更容易理解。
其實,代碼的編寫也是有一定的規則的:
1)直覺命名函數、變量、宏、常量,讓它們表示它們的意思 ,避免名字太短或太長,3<名字長度<40;
2)在變量、結構、函數名中,第一個單詞儘量用可以反映變量類型的單詞,其餘所有的單詞除了第一個單詞以
外第一個字母將用大寫;
3)類型定義(typedef)、宏(macro)、常量(constant)所有字母必須大寫,單詞連接用下劃線;
4)避免定義索引用數字,建議用集合定義;
5)避免用臨時變量,象I, ii , tmpBuf , 除了在一個局部有效,當局部外要 命名特別變量;
6)避免定義索引用數字,建議用集合定義; 避免用臨時變量,象I, ii , tmpBuf , 除了在一個局部有效,當局部
外要命名特別變量;
7)避免同一塊程序不同事物命名相似;
8)避免不同部分、不同共用全局對象(類型、變量、宏)用相同名;
9)建議用“g”或“g_”作爲全局變量前綴,“m”或“m_”作爲成員前綴(c++) 或靜態變量前綴(c),如果你願
意,可以參閱匈牙利命名規則。
在編程當中也是有一定規則的
1) 不要將多個語句放在同一行上
2) 使用行接續符
3) 縮進後續行
4) 運用語句縮進來顯示代碼的組織結構
5) 對模塊的D e c l a r a t i o n s部分中的代碼進行縮進,顯示其從屬關係
6) 使用白空間將相關語句組合在一起
以上這些是我根據米老師的講課和百度總結出來的,都是編程人員必須知道的事情,只有做好了這些才能成爲一個優秀的軟件編程人員。