个人项目-小学四则运算 “软件”之初版

本次作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166

我的项目GitHub远程仓库地址:https://github.com/numtozzy/mytest/tree/master/FourOperations

简单的过程记录:

构思:仔细看了一下书上阿超的例子加上老师的讲解指导,启发出用数字代替运算符。主干思路就根据运算符来区分运算各种情况。

设计:首先,我在main函数里把运算符为一个的情况先写出来,这样就能把大致的结构捋顺,运算无误后再想办法扩展。

把重复的结构一一抽取出来,比如把add(),sub(),mul(),div()独立出来,做单一具体的功能。边做边试边想,那些代码是重复的能不能把它抽取独立出来,然后想办法独立出来。最后再不断测试重构测试重构直到达到自己想要的效果。

遇到的问题:

1、很多耦合(重复判断),输入的值与所求值是否相等的判断。

2、输出公式的展现。

3、参数名称不明朗,形参的位置搞错。

4、答案不能是负数的解决,最最头痛的事,出现了很多种情况。

(1)一个负数加一个正数 相加 怎样答案一定为正数。

(2)一个正数连续减去 两个正数,怎样确保最终答案为正数(双减方式二:对于极端条件下,num2+num3很容易超过一百,那么在100内随机抽取的num1永远也达不到出去的条件)

5、出现由于作用域的问题,想从一个方法中返回多个值的问题和强改增加混乱状况等问题。

如何解决:

1、(解决之道):重构代码,把输入与计算的值分开。计算纯计算,输入纯输入。

2、用字符串。

3、因为较多处进行了运算,为避免混淆,所以改用不一样的形参名,但在形式上保持容易区分状态。

4、(1)负数的绝对值小于正数

(2)想到两种方式:最后在条件限制性只能选择方式一

(方式一:第一个result要为正数且大于num3)

(方式二:num1 大于等于 num2 +num3 )

5、把result、随机产生的三个数(num1、num2、num3)重构为全局变量,然后改动相应的代码,把重复的代码抽取独立成一个方法

运算结果截图:

(不足之处):较多处进行了运算,为避免混淆,所以改用不一样的形参名。没有考虑时间和空间复杂度问题,按理来说,在确保最终结果不为负数上,理应改变被减数才能更有效率,可有些情况,在自己的算法结构下,却只能改变减数。只在变化产生的随机数,缺乏工程思维,没有结合数据库等知识综合运用,这样带来的后果是如果再扩展运算符等功能困难较多重构麻烦,所以这算是一次试水吧,积累经验教训。

posted on 2018-10-09 00:55  少年zzy  阅读(197)  评论(4编辑  收藏  举报

导航