《大话设计模式》--怎么编写高质量的代码?---简单工厂模式
今天无意中看到《大话设计模式》这本书,便看了看觉得,恩!真的好。
所以我决定整理成学习笔记,记录自己学习的同时还可能能帮助需要的人。软件设计师的考试会需要23种设计模式,慢慢的我会持续更新。
接下来是用C#语言编写的,其实语言之间都是相通的,即使不会C#语言大家也能看得懂。
题意要求:编写一个简单计算器
接下来给大家两块代码,大家比较一下
public class SimpleModel {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(B=="/")D = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(C));Console.WriteLine("结果是:" + D);}
}
上面的代码的确可以编造简单计算器,但是
- 先说A,B,C这样的就不符合命名规范
- 判断分支,这样的写法,意味着每个条件都要做判断,等于计算机做了三次无用功
- 在除法中,当客户输入了 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(strNumber !="0")strResult = Convert.ToString(Convert.ToDouble(strNumberA)/Convert.ToDouble(strNumberB));elsestrResult = “除数不能为0”;break;}Console.WriteLine("结果是"+ strResult);Console.ReadLine();}catch(Exception e){Console.WriteLine(“输入有错:”+e.Message);}}
}
这是一个公司让编的一道简单的算法,但是在第一种编写中明显不如第二种,但是大鸟提示:这样真的符合出题人的意思吗?
接下来我还会根据书中的内容继续编写,面向对象的编写规则。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
