zoukankan      html  css  js  c++  java
  • 个人项目-小学四则运算 “软件”之初版

    本次作业要求来自于: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)重构为全局变量,然后改动相应的代码,把重复的代码抽取独立成一个方法

    运算结果截图:

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

  • 相关阅读:
    解决php网页运行超时问题:Maximum execution time of 30 seconds exceeded
    C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例
    C#操作Xml:XPath语法 在C#中使用XPath示例
    C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
    C#操作Xml:如何定义Xsd文件
    C#操作Xml:linq to xml操作XML
    C#操作Xml:使用XmlWriter写Xml
    C#操作Xml:使用XmlReader读Xml
    C#操作Xml:通过XmlDocument读写Xml文档
    XML的序列化和反序列化 详细介绍
  • 原文地址:https://www.cnblogs.com/me-zzy/p/9758151.html
Copyright © 2011-2022 走看看