这次作业成绩还算不错,但是也收获了很多的经验与教训,在这里总结一下。

需要继续改进的地方

  • 作业提交方面仍旧有些问题。如助教所说,在GitHub中并没有保存已经编译好的exe文件,导致助教在检查作业的时候还有重新生成一遍解决方案。这虽然看上去并不是什么大问题,但是回想起我之前在GitHub上下载下来的代码,确实很多时候看着一堆堆的文件,(在不是很了解这个工程的构架的时候)不知道这个代码最后应该怎么跑起来。建立一个Release文件夹确实是一个好思路,能够更加方便他人阅读。
  • 作业的质量方面也有些许瑕疵。比如程序的编译警告没有全部消除。这个我后来又看了一下,发现基本都是一些变量定义了并没有使用。这个问题之前复审别人代码的时候我就发现了。确实自己写代码的时候因为再不停的修改,留下了很多注释掉的语句啊,无用的变量啊之类的东西。这个真是逼死强迫症,下次再提交之前应该再将代码完善一下,将测试代码和冗余的部分剔除,可以更加精简清爽。
  • 代码的架构设计跟不上之后的开发。在后面的对Bug的修改和结对编程的过程中,都体验到了这个问题。由于最开始的没有经验,对于各个计算模块的模块化做的并不够,虽然分成了不同的函数,但是之间仍旧共享很多的公共计算函数,全局变量也有大量的使用,耦合度过大,导致后来修改时“牵一发动全身”。这对之后要进行的团队编程想必是非常的不利的,当时相信有了这次的经验,之后对于模块化编程会有更深的理解吧。

一些做的不错的地方

  • 代码效率很高。这个确实下了功夫,但是后来在听课的时候老师也讲到应该再编程结束之后再着手代码优化的事情。我在编程的时候也想到了这个问题,完成一个问题有很多种解决方案,有的核心计算速度很快,但是为了适配又需要有很多外围函数进行处理,而一些基本的方法虽然计算效率不高,但是更加通用。就像这次,直接对每个站进行广度优先搜索是最基本的方法,而我最后采用的换乘站之间进行迪杰斯特拉算法搜索是一种计算效率更高的算法。在取舍的过程中,前者更加方便进行处理,但是后者需要将地图进行抽象,并且做很多的特殊比较,这些处理都需要时间。在没有同时写这两个算法的前提下,我并不能知道到底哪个更快。虽然最后我选择了后者,事实证明这个算法的效率比直接广搜快了10倍不止。但是外围函数非常的复杂,逻辑上有很多特殊处理的地方很考验脑子,并且最后外围函数处理时间要比路径计算还要长。并且本身写这些函数所花费的精力就是简单算法的几倍。在直接广搜所用时间也不是非常的长的前提下,这样的优化是否是一个合适的举动,确实值得考虑。
  • 支持了附加题的路径计算。这个问题看上去不难但实际上花费了我大量的时间。因为这本质上来说是一个NP问题,并不能在多项式时间内求得答案。所以在考虑之前我权衡了一下是否是求精确解还是求一个近似解。其实如果把地图抽象成以换乘站为顶点的无向图的话,其实一共也就只有50个左右的顶点。这样的计算规模还是能够把精确求解时间限定在可接受范围内的。于是我就计划写一个求精确解的算法。而后我又想到,其实这个问题跟从哪个站出发并没有关系,因为每个站都会遍历到,也就是如果求出了某个站开始的最短路径,那么这条路径其实就是全局的最短路径。实际上只要在程序中存储一条计算好的最短路径,然后根据不同的起点站进行修改就好(因为本身就是一个环)。我甚至都在想手工计算出一条路径,然后保存在程序中(理论上也是可行的)。但是最后为了程序的通用性,还是每次都进行计算。不过这个算法的效率并不高,计算一次需要1分钟左右的时间。虽然后来在结对项目中我把这个功能设置为后台运算,前台还能进行其他的查询以节省用户时间,不过这都是后话了。。。。。

最后po一张小黄衫照哈哈

软工_个人项目反(shai)思(zhao)的更多相关文章

  1. [2017BUAA软工助教]个人项目小结

    2017BUAA个人项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7545780.html 二.评分细则 0.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

  2. 【软工】个人项目作业——个人软件流程(PSP)

    [软工]个人项目作业--个人软件流程(PSP) 项目 内容 班级:北航2020春软件工程 006班(罗杰.任健 周五) 博客园班级博客 作业:设计程序求几何对象的交点集合 个人项目作业 个人课程目标 ...

  3. [2017BUAA软工助教]个人项目准备工作

    BUAA软工个人项目准备工作 零.注册Github个人账号(你不会没有吧..) 这是Git的使用教程: http://www.cnblogs.com/schaepher/p/5561193.html ...

  4. [BUAA2021软工助教]结对项目-第二阶段小结

    一.作业链接 结对项目-第二阶段 二.优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 磨练,结对编程!(中) zzx 和 zzy 同学实 ...

  5. 福大软工 1816:项目UML设计(团队作业三)

    项目UML设计(团队) 团队信息 团队名:第三视角 各成员学号及姓名 姓名 学号 博客链接 张扬(组长) 031602345 http://www.cnblogs.com/sxZhangYang/p/ ...

  6. [2021BUAA软工_助教博客]作业成绩汇总

    作业及成绩 作业链接 成绩链接 个人阅读作业#1 个人阅读作业#1_成绩 个人阅读作业#2 个人阅读作业#2_成绩 结对项目-第一阶段 结对项目-第一阶段_成绩 结对项目-第二阶段 结对项目-第二阶段 ...

  7. [2017BUAA软工助教]个人项目测试结果

    个人项目测试结果 标签(空格分隔): 未分类 9.29第一次测试结果 注:点击表头内相应项目可针对该项目进行排序 -c测试结果 INDEX NumberID -c 1 -c 5 -c 100 -c 5 ...

  8. [沈航软工教学] 学生项目Coding地址汇总

    同学们把自己的coding主页链接贴在评论里,要求格式"班号+学号+coding主页链接",如: "1301+13061193 + https://coding.net/ ...

  9. [2017BUAA软工助教]结对项目小结

    2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

随机推荐

  1. Emit学习(3) - OpCodes - 循环和异常

    本来准备直接进入Dapper的, 但是昨天初步看了一下, 内容不少, Dapper不愧是一款成熟的框架, 里面对各种情况的考虑, 很实用, 不过这也使得我短时间内看不完, 所以得等几天了. 那就先来看 ...

  2. Win10怎么输入法切换

    按 windows 键+空格键,或者CTRL+Shift,或者只按 Shift,或者CTRL+空格 试试 方法/步骤1在桌面上点击[控制面板],进入控制面板后使用分类显示控制面板内的选项.然后在语言下 ...

  3. OCP开放封闭原则

    一.定义 软件实体(类.模块.函数等)应该是可以扩展的,但是不可修改. 如果正确的应用了OCP原则,那么 以后在进行同样的改动时,就只需要添加新的代码,不必修改已经正常运行的代码. 二.OCP概述 1 ...

  4. dapper 注意事项之GUID

    今天把ef框架换成了dapper,数据库使用的是mysql. 主键使用GUID,mysql数据库中设置的为varchar(36). 使用dapper报错,不能将string转换为GUID,后来调试比对 ...

  5. C#网站发布在IIS10上,Access数据库读取为空白的解决方案

    打开IIS10,进入应用程序池,右边“设置应用程序池默认设置”中,启用32位应用程序,False改为True即可.

  6. Web API:将FlexChart导出为图片

    如果想要将FlexChart在应用之外使用,比如使用在报表中,Web API帮助你将FlexChart导出成任何你需要的图片格式. 下面是实现的步骤: 1:创建FlexChart 2:调用Servic ...

  7. EventBus简单的实现

    EventBus是最近项目用到的,也只是会些简单的功能,不过感觉功能蛮强大的.代码链接:http://download.csdn.net/detail/qq_29774291/9629346 Even ...

  8. springmvc(2)Controller源码简单解析

    前面简单的分析了一下DispatcherServlet,接下来分析一下Controller,在web的MVC中,Controller就是其中的C,启动的一些页面逻辑处理,页面映射的功能: 首先看看超类 ...

  9. Oracle 数据库基础学习 (四) group by的使用

      group by分组查询 示例:要求查询出每个部门的编号,人数,以及最高和最低工资  select deptno, count(empno), max(sal), min(sal) from em ...

  10. windows不能显示此连接属性。windows management instrumentation (WMI) 信息可能损坏

    Windows Management Instrumentation (WMI)信息可能损坏错误修复 在 查看“本地连接”的属性,并切换到“高级”选项卡后,提示:“Windows不能显示此连接的属性. ...