小菜编程成长记(一 面试受挫——代码无错就是好?)第1/3页
小菜编程成长记(一 面试受挫——代码无错就是好?)第1/3页
发布时间:2016-12-28 来源:查字典编辑
摘要:小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个...

小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若狂。

到了人家单位,前台小姐给了他一份题目,上面写着,“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”

小菜一看,这个还不简单,三下五除二,10分钟不到,小菜写完了,感觉也没错误。交卷后,单位说一周内等通知吧。于是小菜只得耐心等待。可是半个月过去了,什么消息也没有,小菜很纳闷,我的代码实现了呀,为什么不给我机会呢。

小菜找到工作三年的师哥大鸟,请教原因,大鸟问了题目和了解了小菜代码的细节以后,哈哈大笑,说道:“小菜呀小菜,你上当了,人家单位出题的意思,你完全都没明白,当然不会再联系你了”。

小菜说:“我的代码有错吗?单位题目不就是要我实现一个计算器的代码吗,我这样写有什么问题。”

复制代码 代码如下:

classProgram

{

staticvoidMain(string[]args)

{

Console.Write("请输入数字A:");

stringA=Console.ReadLine();

Console.Write("请选择运算符号(+、-、*、/):");

stringB=Console.ReadLine();

Console.Write("请输入数字B:");

stringC=Console.ReadLine();

stringD="";

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怎么办?这些都是可以改进的地方。”

“哦,说得没错,这个我以前听老师说过,可是从来没有在意过,我马上改,改完再给你看看。”

复制代码 代码如下:

classProgram

{

staticvoidMain(string[]args)

{

try

{

Console.Write("请输入数字A:");

stringstrNumberA=Console.ReadLine();

Console.Write("请选择运算符号(+、-、*、/):");

stringstrOperate=Console.ReadLine();

Console.Write("请输入数字B:");

stringstrNumberB=Console.ReadLine();

stringstrResult="";

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(Exceptionex)

{

Console.WriteLine("您的输入有错:"+ex.Message);

}

}

}

大鸟:“吼吼,不错,不错,改得很快吗?至在目前代码来说,实现计算器是没有问题了,但这样写出的代码是否合出题人的意思呢?”

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

大鸟:“哈,小菜非小菜也!”

当前1/3页123下一页阅读全文

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类