小菜編程成長記(一 面試受挫——代碼無錯就是好?)第1/3頁
更新時間:2006年10月17日 00:00:00 作者:
小菜今年計算機(jī)專業(yè)大四了,學(xué)了不少軟件開發(fā)方面的東西,也學(xué)著編了些小程序,躊躇滿志,一心要找一個好單位。當(dāng)投遞了無數(shù)份簡歷后,終于收到了一個單位的面試通知,小菜欣喜若狂。
到了人家單位,前臺小姐給了他一份題目,上面寫著,“請用C++、Java、C#或VB.NET任意一種面向?qū)ο笳Z言實(shí)現(xiàn)一個計算器控制臺程序,要求輸入兩個數(shù)和運(yùn)算符號,得到結(jié)果?!?
小菜一看,這個還不簡單,三下五除二,10分鐘不到,小菜寫完了,感覺也沒錯誤。交卷后,單位說一周內(nèi)等通知吧。于是小菜只得耐心等待。可是半個月過去了,什么消息也沒有,小菜很納悶,我的代碼實(shí)現(xiàn)了呀,為什么不給我機(jī)會呢。
小菜找到工作三年的師哥大鳥,請教原因,大鳥問了題目和了解了小菜代碼的細(xì)節(jié)以后,哈哈大笑,說道:“小菜呀小菜,你上當(dāng)了,人家單位出題的意思,你完全都沒明白,當(dāng)然不會再聯(lián)系你了”。
小菜說:“我的代碼有錯嗎?單位題目不就是要我實(shí)現(xiàn)一個計算器的代碼嗎,我這樣寫有什么問題。”
class Program
{
static void Main(string[] args)
{
Console.Write("請輸入數(shù)字A:");
string A = Console.ReadLine();
Console.Write("請選擇運(yùn)算符號(+、-、*、/):");
string B = Console.ReadLine();
Console.Write("請輸入數(shù)字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("結(jié)果是:" + D);
}
}
小菜的代碼有什么問題呢?
二 代碼規(guī)范、重構(gòu)
大鳥說:“且先不說出題人的意思,單就你現(xiàn)在的代碼,就有很多不足的地方需要改進(jìn)。比如變量命名,你的命名就是ABCD,變量不帶有任何具體含義,這是非常不規(guī)范的;判斷分支,你這樣的寫法,意味著每個條件都要做判斷,等于計算機(jī)做了三次無用功;數(shù)據(jù)輸入有效性判斷等,如果用戶輸入的是字符符號而不是數(shù)字怎么辦?如果除數(shù)時,客戶輸入了0怎么辦?這些都是可以改進(jìn)的地方?!?
“哦,說得沒錯,這個我以前聽老師說過,可是從來沒有在意過,我馬上改,改完再給你看看?!?BR>
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("請輸入數(shù)字A:");
string strNumberA = Console.ReadLine();
Console.Write("請選擇運(yùn)算符號(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("請輸入數(shù)字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 = "除數(shù)不能為0";
break;
}
Console.WriteLine("結(jié)果是:" + strResult);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("您的輸入有錯:" + ex.Message);
}
}
}
大鳥:“吼吼,不錯,不錯,改得很快嗎?至在目前代碼來說,實(shí)現(xiàn)計算器是沒有問題了,但這樣寫出的代碼是否合出題人的意思呢?”
小菜:“你的意思是面向?qū)ο螅俊?br>
大鳥:“哈,小菜非小菜也!”
到了人家單位,前臺小姐給了他一份題目,上面寫著,“請用C++、Java、C#或VB.NET任意一種面向?qū)ο笳Z言實(shí)現(xiàn)一個計算器控制臺程序,要求輸入兩個數(shù)和運(yùn)算符號,得到結(jié)果?!?
小菜一看,這個還不簡單,三下五除二,10分鐘不到,小菜寫完了,感覺也沒錯誤。交卷后,單位說一周內(nèi)等通知吧。于是小菜只得耐心等待。可是半個月過去了,什么消息也沒有,小菜很納悶,我的代碼實(shí)現(xiàn)了呀,為什么不給我機(jī)會呢。
小菜找到工作三年的師哥大鳥,請教原因,大鳥問了題目和了解了小菜代碼的細(xì)節(jié)以后,哈哈大笑,說道:“小菜呀小菜,你上當(dāng)了,人家單位出題的意思,你完全都沒明白,當(dāng)然不會再聯(lián)系你了”。
小菜說:“我的代碼有錯嗎?單位題目不就是要我實(shí)現(xiàn)一個計算器的代碼嗎,我這樣寫有什么問題。”
復(fù)制代碼 代碼如下:
class Program
{
static void Main(string[] args)
{
Console.Write("請輸入數(shù)字A:");
string A = Console.ReadLine();
Console.Write("請選擇運(yùn)算符號(+、-、*、/):");
string B = Console.ReadLine();
Console.Write("請輸入數(shù)字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("結(jié)果是:" + D);
}
}
小菜的代碼有什么問題呢?
二 代碼規(guī)范、重構(gòu)
大鳥說:“且先不說出題人的意思,單就你現(xiàn)在的代碼,就有很多不足的地方需要改進(jìn)。比如變量命名,你的命名就是ABCD,變量不帶有任何具體含義,這是非常不規(guī)范的;判斷分支,你這樣的寫法,意味著每個條件都要做判斷,等于計算機(jī)做了三次無用功;數(shù)據(jù)輸入有效性判斷等,如果用戶輸入的是字符符號而不是數(shù)字怎么辦?如果除數(shù)時,客戶輸入了0怎么辦?這些都是可以改進(jìn)的地方?!?
“哦,說得沒錯,這個我以前聽老師說過,可是從來沒有在意過,我馬上改,改完再給你看看?!?BR>
復(fù)制代碼 代碼如下:
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("請輸入數(shù)字A:");
string strNumberA = Console.ReadLine();
Console.Write("請選擇運(yùn)算符號(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("請輸入數(shù)字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 = "除數(shù)不能為0";
break;
}
Console.WriteLine("結(jié)果是:" + strResult);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("您的輸入有錯:" + ex.Message);
}
}
}
大鳥:“吼吼,不錯,不錯,改得很快嗎?至在目前代碼來說,實(shí)現(xiàn)計算器是沒有問題了,但這樣寫出的代碼是否合出題人的意思呢?”
小菜:“你的意思是面向?qū)ο螅俊?br>
大鳥:“哈,小菜非小菜也!”
相關(guān)文章
Unity實(shí)現(xiàn)答題系統(tǒng)的示例代碼
這篇文章主要和大家分享了利用Unity制作一個答題系統(tǒng)的示例代碼,文中的實(shí)現(xiàn)方法講解詳細(xì),對我們學(xué)習(xí)或工作有一定的幫助,需要的可以參考一下2022-05-05
C#實(shí)現(xiàn)ListView選中項(xiàng)向上或向下移動的方法
這篇文章主要介紹了C#實(shí)現(xiàn)ListView選中項(xiàng)向上或向下移動的方法,通過兩個按鈕點(diǎn)擊事件實(shí)現(xiàn)ListView選中項(xiàng)的上下移動功能,需要的朋友可以參考下2015-06-06
c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的
這篇文章主要介紹了c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
C#修改IIS站點(diǎn)framework版本號的方法
這篇文章主要介紹了C#修改IIS站點(diǎn)framework版本號的方法,涉及C#調(diào)用使用ASP.NET IIS注冊工具Aspnet_regiis.exe進(jìn)行IIS站點(diǎn)framework版本號修改的方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
c#實(shí)現(xiàn)字符串反序輸出字符串的實(shí)例
下面小編就為大家分享一篇c#實(shí)現(xiàn)字符串反序輸出字符串的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
C#實(shí)現(xiàn)軟件開機(jī)自動啟動的兩種常用方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)軟件開機(jī)自動啟動的兩種常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2023-07-07
利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度
本文介紹利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度,具體實(shí)例代碼已附上,僅供大家參考,希望對大家有所幫助2016-11-11

