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

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

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

由于我们对自己写的后端模块较有信心,希望用我们的计算核心和别人的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课程精髓的您去发现了(真诚眼)

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

【SE】Week3 : 四则运算式生成评分工具Extension&Release Version(附加题)的更多相关文章

  1. 【SE】Week3 : 四则运算式生成评分工具Extension&Release Version(结对项目)

    Foreword 此次的结对项目终于告一段落,除了本身对软件开发的整体流程有了更深刻的了解外,更深刻的认识应该是结对编程对这一过程的促进作用. 在此想形式性但真心地啰嗦几句,十分感谢能端同学能够不厌其 ...

  2. 随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)

    PS:这是昨天编写的随机生成四则运算式2的代码:http://www.cnblogs.com/wsqJohn/p/5264448.html 做了一些改进. 补:在上一次的运行中并没有加入真分数参与的运 ...

  3. java 自动生成四则运算式

    本篇文章将要介绍一个“自动生成四则运算式”的java程序,在没有阅读<构建之法>之前,我已经通过一个类的形式实现了要求的功能,但是当阅读完成<构建之法>之后,我意识到自己所写程 ...

  4. [开源]C#二维码生成解析工具,可添加自定义Logo

    二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...

  5. Map工具系列-03-代码生成BySQl工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  6. Nibbler – 免费的网站测试和指标评分工具

    Nibbler 是一款免费的工具,用于测试网站的各个方面指标.输入任意网站的地址,Nibbler 会给你一份报告,列出网站的10个关键领域的分数,包括可访问性,用户体验,搜索引擎优化,社交媒体和技术等 ...

  7. 网站性能评分工具Yslow 使用教程

    Yslow 这个工具相信无论是搞前端的攻城师或者是搞网站的站长都了解,Yslow 可比谷歌的PageSpeed 有名多了:那个百分制下的评分数据总让国人着迷,看来应试教育造的孽太深了.Jeff 认为的 ...

  8. JAVA自动生成正则表达式工具类

    经过很久的努力,终于完成了JAVA自动生成正则表达式工具类.还记得之前需要正则,老是从网上找吗?找了想修改也不会修改.现在不用再为此烦恼了,使用此生成类轻松搞定所有正则表达式.赶快在同事面前炫一下吧. ...

  9. [开源]C#二维码生成解析工具,可添加自定义Logo (转)

    二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...

随机推荐

  1. Sketch网页截屏插件设计开发

    1.需求 在Sketch的Artboard中插入网页截图: 1.1.输入网址,自动截图到Artboard中,并居中显示: 1.2.可截取网页局部图片 2.技术选型 技术的选型主要是针对截图功能的选型, ...

  2. 寒假训练——搜索 E - Bloxorz I

    Little Tom loves playing games. One day he downloads a little computer game called 'Bloxorz' which m ...

  3. Java虚拟机4:Java对象创建和对象访问

    1.对象创建 Java是一门面向对象的语言,Java程序运行过程中无时无刻都有对象被创建出来.在语言层面上,创建对象(克隆.反序列化)就是一个new关键字而已,但是虚拟机层面上却不是如此.看一下在虚拟 ...

  4. Java SE和Java EE应用的性能调优

    凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...

  5. cocos2d-x 3.0 安装及创建项目

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/LanerGaming/article/details/24146921 好久没实用过cocos2d- ...

  6. 说明split()与join()函数的区别?

    前者是切割成数组的形式,后者是将数组转换成字符串join函数获取一批字符串,然后用分隔符字符串将它们连接起来,从而返回一个字符串.Split函数获取一个字符串,然后再分隔符处将其断开,从而返回一批字符 ...

  7. rsyslog和logrotate服务

    参考: http://www.lampbo.org/others/opensource/rsyslog-config-file-detail.html http://bangerlee.blog.ch ...

  8. checkbox选中并通过ajax传数组到后台接收

    这次讲的是通过复选框,选中,点击提交,并将值chuan到后台controller.这个应用是比较广的,什么批量修改,批量添加,授权管理等等,都用到这个.其实这个还是挺简单的,并没有想象中的那么难,但我 ...

  9. 【SPOJ GSS】数据结构题选做

    SPOJ GSS1 题意:给一个序列以及一些询问,每个是问\([l,r]\)中最大连续子序列和是多少. 思路:这个问题是以下问题的基础. 我们考虑用线段树来解决这个问题. 首先我们来想想如果要求出最大 ...

  10. Qt 中一些常用类中文说明

    Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...