基于度量分析程序结构
第一次作业
第二次作业
第三次作业
分析自己程序的 Bug
第一次作业使用 java 正则表达式类库的时候,没有详细查询文档,导致输入串过长的时候,正则表达式类库会爆栈抛出 Error。而我在最外层只 catch 了 Exception,导致程序崩溃。
第二次作业没有被发现 Bug。
第三次作业误解了指导书中的 INVALID 格式,因为一个格式错误导致公测所有的非法输入都挂掉了(10 个测试点),略有遗憾。其他的也没有被发现 Bug。
分析发现别人 Bug 所采用的策略
第一次作业发现了别人两个 Bug。第二次作业发现了别人会程序崩溃(然而他申诉我的输入是无效输入,被助教删掉了 Bug,我不太懂指导书中“任何情况下都不应该出现 crash”和他的 README 谁的优先级比较高)。第三次作业发现了别人的两个 Bug。
我的策略主要是先自己阅读两遍他人的代码,一般读完一遍我就能找出所有的功能性和边界的 Bug,读第二遍只是为了确保万一。同时,我也会制造一些随机数据,让我的程序和他的程序一起运行,然后比对结果。不过这一步一般没什么用,Bug 通常在阅读代码的时候已经找完了。
心得体会
前两次作业我都只在周二晚上花了约 1h 写完,导致对第三次的难度估计有些偏差,没有花费足够的时间阅读指导书。虽然第三次作业没有功能性的问题,但是却因为格式错误而挂了 10 个公测点,略有遗憾。
通过三次作业,我对 java 的面向对象设计方法有了更深的理解,对于继承、接口,以及重载、覆盖等也比较熟悉了。java 这套方法虽然有的时候会感觉略有累赘,没有写 c++ 的时候的畅快的感觉,但是对于多人合作一个大的工程却很有帮助。
编写面向对象程序的时候,我们一定要提前设计好程序的整体层次、类的继承关系、接口,还要分析好需求,考虑可扩展性。