zoukankan      html  css  js  c++  java
  • 【SE】Week3 : 四则运算式生成评分工具Extension&Release Version(附加题)

    [附加题]第四阶段目标 - 界面模块,测试模块和核心模块的松耦合。

    写到这里我只想吐槽一句,哪天我能写出功能复杂且真正松耦合的模块,我应该就不用写代码了吧【手动再见。。

    当然这只是强调下松耦合和代码复杂性之间难以权衡的问题,即使困难,我们还是在努力完成。

    由于我们对自己写的后端模块较有信心,希望用我们的计算核心和别人的UI代码耦合。

    但这道附加题基本是赶着做的,并没有完全地成功实现两个小组之间前后端模块的松耦合,原因有很多,如:

    1)我们采用普通模式和批处理模式两种方式,难以和不支持的界面耦合。(这点其实比较好解决,只要在xml文件中始终将batchmode设为false即可)

    2)关键的一点是少数组有使用xml进行前后端的参数传输,因此难以找到符合要求的前端代码。

    于是我们尝试用了@刘乾(给大乾神跪安_(:з」∠)_)小组的前端代码,因为我们的部分功能一致,耦合较为方便。

    但看到UI界面和我们需求的差别还是挺大的,因此我们不得不对UI中的控件进行修改。。直到最后成了完全按照我们想法来的UI界面。。

    当做到这步我们反思了一下,何不更干脆一点直接修改成100%合适的界面呢?

    于是就有了这个很丑很丑没有任何修饰的软件:详见此链接

    [附加题]第五阶段目标 - 通过增量修改的方式,改进程序,完成对各种错误情况的处理。

    在实现过程中,我们对如下异常进行了自定义:

    namespace Core
    {
        public class MyException { }
    
        public class FileNotExistException : Exception
        { public FileNotExistException(string str) : base("File \"" + str + "\"" + "doesn't exist!") { } }
    
        public class FileNotReadableException : Exception
        { public FileNotReadableException(string str) : base("Can't read file \"" + str + "\"") { } }
    
        public class InvalidExpressionException : Exception
        { public InvalidExpressionException(string str) : base("Invalid expression : " + str) { } }
    
        public class InvalidNumberException : Exception
        { public InvalidNumberException(string str) : base("Invalid number : " + str) { } }
    
        public class DivideZeroException : Exception
        { public DivideZeroException() : base("Divisor can't be zero!") { } }
    
        public class DenumeratorZeroException : Exception
        { public DenumeratorZeroException() : base("Denumerator can't be zero!") { } }
    
        public class InvalidXmlFileException : Exception
        { public InvalidXmlFileException(string str) : base(str) { } }
    }

    同时考虑了各种错误情况,大大地提高了程序的鲁棒性,以下列举一些:

    1)文件格式或者输入表达式非法。(这种级别的太轻了。。)

    2)xml文件不存在或出现异常。(同上。。)

    3)批处理过程中根据用户给的正则表达式筛选出的文件不合法。(还算手下留情了。。)

    4)在程序运行过程中xml被用户异常修改。(好像开始有点恶心了。。)

    5)批处理过程中随意删除或添加文件。(你一定是故意的吧,喂。。。)

    6)在Generator执行任务过程中疯狂切换tab然后在生成结束前又开启另一个任务。(不要看我是多线程就这样欺负我啊!!(╯‵□′)╯︵┻━┻)

    .....

    更多异常情况就留给保有OO课程精髓的您去发现了(真诚眼)

    (等等。。。我们好像提交成了未修复第六条的版本啊Σ( ° △ °|||)︴,助教大大手下留情啊啊啊啊啊!!)

  • 相关阅读:
    246.Strobogrammatic Number
    245.Shortest Word Distance III
    244.Shortest Word Distance II
    243.Shortest Word Distance
    242. Valid Anagram
    241. Different Ways to Add Parentheses
    240.Search in a 2D Matrix II
    239. Sliding Window Maximum
    238. Product of Array Except Self
    postgres 行列转换
  • 原文地址:https://www.cnblogs.com/kanelim/p/4857996.html
Copyright © 2011-2022 走看看