設計模式——代碼的規範

在開始寫這篇文章之前,先給大家看兩段代碼:

第一段:

            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) 使用白空間將相關語句組合在一起

以上這些是我根據米老師的講課和百度總結出來的,都是編程人員必須知道的事情,只有做好了這些才能成爲一個優秀的軟件編程人員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章