《大话设计模式》--怎么编写高质量的代码?---简单工厂模式

今天无意中看到《大话设计模式》这本书,便看了看觉得,恩!真的好。
所以我决定整理成学习笔记,记录自己学习的同时还可能能帮助需要的人。软件设计师的考试会需要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);
	}
}

上面的代码的确可以编造简单计算器,但是

  1. 先说A,B,C这样的就不符合命名规范
  2. 判断分支,这样的写法,意味着每个条件都要做判断,等于计算机做了三次无用功
  3. 在除法中,当客户输入了 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));
					else
						strResult = “除数不能为0;
					break;
			}
			Console.WriteLine("结果是"+ strResult);
			Console.ReadLine();
		}
		catch(Exception e)
		{
			Console.WriteLine(“输入有错:”+e.Message);
		}
	}
}

这是一个公司让编的一道简单的算法,但是在第一种编写中明显不如第二种,但是大鸟提示:这样真的符合出题人的意思吗?
接下来我还会根据书中的内容继续编写,面向对象的编写规则。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想当个程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值