242
社区成员




其中Bottle、Equipment作为父类,Commodity作为接口 (虽然好像没什么用来着),Tool作为封装函数的中转站,Fightlog作为战斗日志的储存,Store作为单例。
最初的fightlog作为main类当中的一个Arraylist用于存储有效的日志,AOE时每次遍历挑战者列表挑出处于战斗状态的挑战者,极大地减省了调整架构的时间。但是最后发现有一个未给出数据的中测点死活过不了(乐),最终不得不在ddl前一天晚上重构,将进入战斗状态的挑战者和有效日志单独开两个列表加入fightlog类当中,并将寻找对应战斗日志的函数也搬入其中,然后就过了(鉴于笔者半夜重构脑子不清醒没做好版本管理,于是在强测数据点出来之后也没办法找出之前版本的错误(跪
美中不足的是,对于fightlog的加入这部分函数,仍然在Tool这个函数中,没有做到功能的完全独立。
Tool类的产生于一个函数不能超过60行一个类不能超过500行的checkstyle限制,不得不将所有相关函数移入一个新的类作为所有函数的中转站。
路漫漫其修远兮,尚有很多不足亟待改进。对于接口、继承和模式的使用,似乎更多只是形式主义,在具体的代码实现中并没有做到物尽其用。
对于Adventure这个将将500行的类,很多函数其实都可以建立一个新的类用于封装,(例如对于背包等的操作,相比于直接用一个Arraylist加在Adventure类下,用一个Bag更方便也更明晰)
最大的感受是,我怎么还要deJUnit的bug(不
但还是谢谢JUnit,确实找出了一些bug
数据搓复杂了对自己不好,数据搓简单了对程序不好
因此最合适的构造数据方法:扒拉一组中测数据并在此基础上进行更多指令的输入
在de出一个bug并进行相应修改后,可先在JUnit中进行小范围的输出确保没有问题再进行整个的数据运行
起初只是认为面向对象就是将不同的对象分开处理,所以在最初的代码架构中将Adventure、Bottle、Equipment等全都分开处理,并未实现层次化。在之后的学习中,逐渐认识到了什么是面向对象编程,将操作行为归类到不同的对象当中。比如添加新的药水、新的装备等操作都应该是在其对象所属的类中,建立相应的添加方法,将其存入到各自的容器中。
简言之,面向过程更加注重于对于所学知识的掌握和应用,而面向对象则需要在掌握新知识之后选择如何应用、如何架构,这是更需要思考和斟酌的。
详情见上。没有合理的面向对象框架使得在迭代的过程中,拓展新的功能十分繁琐复杂,难以避免代码复用等导致出现一些细枝末节的bug,给调试带来了极大的困难。所以好的代码框架可以让迭代事半功倍,高校高质量完成迭代任务。
因此在每次写代码过程中,要提前预留好迭代、扩展的空间,不能够仅仅以完成目前的目标为代价(eg.留最后三行空间为给下一次迭代)
希望老师可以将关于代码风格和重构的部分提前,或者将这部分内容穿插在几次课程内容中进行讲述。这样做有助于同学们及时更新和改进自己的代码,不必在某一次作业中进行大幅度改动。另外,对于继承、接口、工厂模式等部分,似乎不需要用相应的课上所学也可实现?我个人认为课下作业无法体现出这些方法的便捷程度(譬如我一直在思考学习工厂模式和接口的意义是什么……)也许明年的OOpre可以做的更好(?