第十七课预期策略选择——C#计算器编程教学
2016-05-04 16:08
363 查看
编程的一个难题是,方法我可以穷尽,但有些结果并非是用户的选择或期望,换个说法,有些表达具有二义性,可以这样,也可以那样,或者因为表达不够完整,因而结果是什么可能也有二义性。那么我们生成哪个结果呢?
本程序有很多这样的情况。比如,用户输入了计算式,他再按开根号,你是给他当前项的根号值,还是给算式结果的根号值?用户输入了不完整的算式,你怎样处理?反正这都考验的不是编程能力,而是策略选择能力。
一方面你可以坚持严密原则,算式不完整是吧,我不给答案,而提示错误,你也可以以善意的原则修改最可能错误,给最善意的结果。另一方面,你也可以定义不完整为完整,或者确定用户最可能的意图。
以上的文字是不是很绕?
比如这样两个算式:
9*
9*9*
我的处理方法是,前面的我看作是9*9,后面的也看作9*9。为什么这样呢?9*,我将之定义为9的平方,即定义不完整为完整。而后面这个,我按最善意的原则认为用户多按了*号,所以计算前删除掉。
比如取反,用户按了9*9*,然后按取反,你取哪个反?第三个数字还没出来呢!那最可能的意图是取第二个数的反。
第十七课结语。以上说的都会体现在编程过程中。你不能不会用户的意,也不能只会用户的意,而不能自已定义。
本程序有很多这样的情况。比如,用户输入了计算式,他再按开根号,你是给他当前项的根号值,还是给算式结果的根号值?用户输入了不完整的算式,你怎样处理?反正这都考验的不是编程能力,而是策略选择能力。
一方面你可以坚持严密原则,算式不完整是吧,我不给答案,而提示错误,你也可以以善意的原则修改最可能错误,给最善意的结果。另一方面,你也可以定义不完整为完整,或者确定用户最可能的意图。
以上的文字是不是很绕?
比如这样两个算式:
9*
9*9*
我的处理方法是,前面的我看作是9*9,后面的也看作9*9。为什么这样呢?9*,我将之定义为9的平方,即定义不完整为完整。而后面这个,我按最善意的原则认为用户多按了*号,所以计算前删除掉。
比如取反,用户按了9*9*,然后按取反,你取哪个反?第三个数字还没出来呢!那最可能的意图是取第二个数的反。
第十七课结语。以上说的都会体现在编程过程中。你不能不会用户的意,也不能只会用户的意,而不能自已定义。
相关文章推荐
- 第十六课程序的测试和修改——C#计算器编程教学
- 第十五课代码复用——C#计算器编程教学
- 第十四课功能键之取反——C#计算器编程教学
- 第十三课功能键之开根号——C#计算器编程教学
- 第十二课通知界面变更接口——C#计算器编程教学
- 第十一课私有变量——C#计算器编程教学
- 第十课等于之调用关键调用——C#计算器编程教学
- C#虚函数virtual详解
- 第九课等于之关键调用——C#计算器编程教学
- 第八课等于之集合对象的操作——C#计算器编程教学
- C#基础知识六之委托(delegate、Action、Func、predicate)
- Chapter 2. C#语句---循环语句
- 第七课等于之算式还原——C#计算器编程教学
- .Net C#(类的继承/虚函数/抽象函数/密封类/静态类/抽象类)——学习笔记
- 第六课等于之对象相加——C#计算器编程教学
- C#学习:委托摘录 《自学系列》
- 第五课等于之解决思路——C#计算器编程教学
- Chapter 2 C#语句---选择语句
- 第四课输入时的细节处理——C#计算器编程教学
- 【C#设计模式-命令模式】