2019 - OO第一单元作业总结

基于度量的程序结构分析

这里用IDEA自带的UML功能和MetricsReloader插件进行分析。

方法的复杂度分析主要基于循环复杂度的计算。循环复杂度是一种表示程序复杂度的软件度量,由程序流程图中的“基础路径”数量得来。

  1. ev(G):即Essentail Complexity,用来表示一个方法的结构化程度,范围在[1,v(G)]之间,值越大则程序的结构越“病态”,其计算过程和图的“缩点”有关。

  2. iv(G):即Design Complexity,用来表示一个方法和他所调用的其他方法的紧密程度,范围也在[1,v(G)]之间,值越大联系越紧密。

  3. v(G):即循环复杂度,可以理解为穷尽程序流程每一条路径所需要的试验次数。

  • 第一次作业

这里可以发现,iv(G)和v(G)的值在某些方法中比较大。主要是由于在第一次作业时对象化思想还不够,代码仍然是“面向过程”的思想,把不同的方法当作是函数进行调用。并不能体现对象间信息传递的特点。

  • 第二次作业

这里的Polynomial.merge()方法的ev(G)值过大,说明它的结构很“糟糕”。经过查验发现是因为使用了ArrayList来保存每项,而在merge(合并同类项)的过程中,我使用了四次for循环,这显然并不是一个好的方法。可以考虑在以后类似的情况下使用HashMap。

  • 第三次作业

Expression的构造方法额ev(G)值、iv(G)、v(G)值较大,这里可能的原因是我在解决括号嵌套问题时使用了栈的方法,把所有当前第一级的“(”和“)”都替换成了“{”和“}”,这个过程如果能够另设一个方法的话可能会使代码层次更好。还有关于嵌套求导的部分我把他都放在了TriFunc类中,这样会使最后的结构很冗余,应该再另外设置一个类。

自己程序的bug分析

  • 在第一次作业里,我的bug主要是以WRONG FORMAT为主,比如不可见空格、其他特殊字符等。在运用正则表达式时,由于不熟悉而造成了许多错误。这些bug都是很明显的,也很容易做出修正。
  • 在第二次作业里,我的bug不多,并进行了简单层次的优化,将每一项作为一个三元组进行简单的合并同类项。
  • 第三次作业的难度明显有了较大程度的提升,在进行自测提交时出了很多的Bug,主要是在正则表达式的运用上。比如在进行括号的匹配时,.+和.+?就有很大的不同。由于时间和难度的原因本次作业我没有进行优化。
  • 总的来说我这三次作业在实现正确性上没有较大的问题,主要还是在于性能的优化部分,以及整体的设计模式和风格上还有很大的提升空间。

互测bug分析

要读完一个互测屋7个人的代码并在理解的基础上编出合适的测试样例显然是很有难度且不现实的,因此我在前两次的互测环节主要还是针对WRONG FORMAT。而第三次作业由于没有互测制度的改变,我没有能够成功hack。这也是我今后需要学习的地方,争取能通过一个自动化的工具更加高效地完成互测部分的内容。

Applying Creational Pattern

这三次作业虽然完成地并不算好,但是我能够感觉到自己面向对象的思想正在一步步地成熟。

首先是第一次作业,还是延续了此前的“面向过程”思想,虽然实现了功能,但是不符合本课程的初衷;第二次作业,“面向对象”思想初具雏形,建立了单项式、多项式、主类三个类;第三次作业,参考了课程建议建立了多种类,并设置了统一的接口“求导”来使整个project的联系更加紧密。由于能力的欠缺,我对后两次作业都没有能够在上一次作业的基础上添加功能完成,而是都进行了重构。这在效率上是一个很大的损失。希望在以后的作业中我能够逐渐实现提高编程能力、成熟设计思想的要求。

 

转载于:https://www.cnblogs.com/lsw-CS-2019/p/10585189.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值