程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 小菜編程成長記(一 面試受挫——代碼無錯就是好?)

小菜編程成長記(一 面試受挫——代碼無錯就是好?)

編輯:C#基礎知識
小菜今年計算機專業大四了,學了不少軟件開發方面的東西,也學著編了些小程序,躊躇滿志,一心要找一個好單位。當投遞了無數份簡歷後,終於收到了一個單位的面試通知,小菜欣喜若狂。
        到了人家單位,前台小姐給了他一份題目,上面寫著,“請用C++、Java、C#或VB.NET任意一種面向對象語言實現一個計算器控制台程序,要求輸入兩個數和運算符號,得到結果。”
        小菜一看,這個還不簡單,三下五除二,10分鐘不到,小菜寫完了,感覺也沒錯誤。交卷後,單位說一周內等通知吧。於是小菜只得耐心等待。可是半個月過去了,什麼消息也沒有,小菜很納悶,我的代碼實現了呀,為什麼不給我機會呢。
        小菜找到工作三年的師哥大鳥,請教原因,大鳥問了題目和了解了小菜代碼的細節以後,哈哈大笑,說道:“小菜呀小菜,你上當了,人家單位出題的意思,你完全都沒明白,當然不會再聯系你了”。
        小菜說:“我的代碼有錯嗎?單位題目不就是要我實現一個計算器的代碼嗎,我這樣寫有什麼問題。”
代碼如下:

class Program
{
    static void Main(string[] args)
    {
        Console.Write("請輸入數字A:");
        string A = Console.ReadLine();
        Console.Write("請選擇運算符號(+、-、*、/):");
        string B = Console.ReadLine();
        Console.Write("請輸入數字B:");
        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 (O == "/")
            D = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(C));

        Console.WriteLine("結果是:" + D);
    }     
}

小菜的代碼有什麼問題呢?
二 代碼規范、重構

大鳥說:“且先不說出題人的意思,單就你現在的代碼,就有很多不足的地方需要改進。比如變量命名,你的命名就是ABCD,變量不帶有任何具體含義,這是非常不規范的;判斷分支,你這樣的寫法,意味著每個條件都要做判斷,等於計算機做了三次無用功;數據輸入有效性判斷等,如果用戶輸入的是字符符號而不是數字怎麼辦?如果除數時,客戶輸入了0怎麼辦?這些都是可以改進的地方。”

“哦,說得沒錯,這個我以前聽老師說過,可是從來沒有在意過,我馬上改,改完再給你看看。”
代碼如下:

class Program
{
static void Main(string[] args)
{
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);
}
}
}


大鳥:“吼吼,不錯,不錯,改得很快嗎?至在目前代碼來說,實現計算器是沒有問題了,但這樣寫出的代碼是否合出題人的意思呢?”

小菜:“你的意思是面向對象?”

大鳥:“哈,小菜非小菜也!”
  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved