第二次BLOG作业

前言

完成这次代码作业的过程,就像一场充满挑战的冒险。虽说最后基本实现了功能,但仔细审视,仍有诸多地方是靠AI来解决我的问题,值得深入反思与改进。下面我将详细聊聊在这次作业中遭遇的问题、内心的起伏变化,以及从中获得的感悟。

设计与分析

类的功能剖析

Customer 类:这个类就像是一个客户信息小本本。它专门用来存放客户的各种信息,像客户属于哪种类型,是个人还是企业;客户的身份编号,能准确标识客户;客户的姓名、联系电话以及地址等。通过构造函数,把这些信息一股脑儿地存进去。然后又设置了一些 “小窗口”,也就是getter方法,能让我们随时方便地查看这些信息。这样一来,客户信息的管理就变得井井有条,需要用的时候,直接通过这些 “小窗口” 获取就行,特别方便。 Flight 类:它描述的是航班的各种情况。航班号就像航班的身份证,能让人一眼认出是哪个航班;出发机场和到达机场明确了航班的行程起止点;飞行日期告诉我们航班啥时候出发;最大载重决定了航班最多能承载多重的货物,而当前载重则显示目前已经装了多少货物。它不仅提供了查看航班基本信息的方法,还能实现往飞机上装货的操作,并且能判断飞机还能不能继续装货。这些功能组合在一起,就把航班运输货物的相关操作都涵盖了。 Goods 类:主要是关于货物的信息集合。货物有自己的编号,方便区分不同货物;名字让人知道这是啥货物;类型则标明了货物是普通的、危险的还是加急的等。货物的长宽高和重量决定了它的实际大小和重量情况,而计费重量则是用来计算运费的关键数据。这个类不仅能算出计费重量,还能根据货物类型和重量确定运费的费率。比如说,不同类型的货物,在不同重量区间,费率是不一样的,这些规则都在这个类里实现。

Order 类:它把订单相关的所有信息都整合起来了。订单号是订单的专属标识,日期记录了下单的时间。发货人和收货人这两个客户信息明确了订单的流转对象。货物列表里装着订单包含的所有货物,航班信息确定了货物的运输方式,支付方式则决定了怎么付钱。这个类还能算出订单货物的总重量,以及根据各种规则算出订单总共要支付的费用,并且能把订单的各项信息清晰地展示出来。

Main 类:它是整个程序的起点,就像一场演出的开场锣。在这里,通过Scanner这个工具,从键盘接收我们输入的各种信息,包括客户、货物、航班、订单等方面的内容。然后依据这些输入,创建出对应的对象。接着,它会仔细检查订单货物的总重量和航班最大载重的关系。要是没超重,就把订单的详细信息和货物明细展示出来;要是超重了,就会明确提示航班装不下这些货物。

知识运用盘点

面向对象编程:在整个代码里,我们把客户、航班、货物、订单这些现实中的东西,都变成了程序里的对象。每个对象都有自己独特的属性和可以执行的操作,也就是方法。这就是面向对象编程的体现,它让代码的结构变得特别清晰,就像把不同的东西都分类放进不同的抽屉,以后查找和修改都很方便。而且这种方式还能让代码的维护和扩展变得更轻松,因为每个对象都相对独立,修改一个对象的某些细节,不太会影响到其他对象。

数据输入与处理:我们借助Scanner从键盘获取数据,就好像是打开了一扇接收外界信息的窗户。然后把读进来的文本或者数字,按照程序的需要进行类型转换,比如把文本形式的数字变成真正能参与计算的数值类型。这些处理后的数据,被用来创建各种对象,并且参与到后续的计算和操作中。这个过程就像是把原材料加工成能用的零件,是程序正常运行的重要基础。

集合的运用:在Order类里,我们用List这种集合来管理货物列表。List就像一个灵活的收纳袋,能轻松地添加新货物、移除不需要的货物,还能一个一个地查看里面的货物。在计算订单总重量或者展示货物明细的时候,通过在这个 “收纳袋” 里遍历货物,就能方便地对每个货物进行操作,大大提高了代码的效率和便捷性。

条件判断与逻辑计算:在很多地方,我们都用到了条件判断语句,像if - else和switch 。比如在计算货物费率的时候,根据货物类型和重量的不同情况,用switch语句确定相应的费率;在判断航班载重能否承受订单货物重量时,用if - else语句进行逻辑判断。这些条件判断和逻辑计算,准确地实现了业务规则,让程序能根据不同的情况做出正确的反应。

存在问题

输入验证的漏洞 问题呈现:在从键盘接收数据的时候,我们太粗心啦,没有对输入的数据进行严格检查。比如说,输入货物的长宽高或者重量时,万一输入了负数,这在现实中根本不合理,可程序却没有察觉,还会继续处理,这就可能导致后面的计算全错。再比如输入客户类型或者支付方式这些文本信息时,要是输错了格式,程序也没办法发现,很容易引发混乱。

解决之策:以后再接收数据,紧接着就得检查。对于数值,得看看是不是大于等于 0 ,要是小于 0 ,就得提示用户重新输入正确的数值。对于文本,得提前设定好正确的格式,用正则表达式或者简单的条件判断,看看输入的文本是不是符合要求。要是不符合,就得友好地提醒用户,让他们重新输入合适的内容。

异常处理的短板 问题分析:在代码里,有不少地方可能会出现错误,可我们却没有做好应对措施。就拿类型转换来说,用Integer.parseInt或者Double.parseDouble把文本转成数字时,如果用户输入的文本根本不是数字的样子,就会抛出异常,可我们没有处理这个异常,程序就会直接崩溃。还有在其他一些操作中,像读取文件(虽然这次作业没涉及,但类似情况存在),如果文件不存在或者读取失败,也会出问题,可我们都没有考虑到这些情况。

代码可维护性与扩展性的困境 问题根源:现在的代码结构,虽然能实现基本功能,但从长远来看,问题不少。各个类之间的关系有点混乱,职责划分不够清楚。要是以后想增加新的货物类型,或者新的支付方式,就得在好多地方修改代码,而且改一处可能还会影响到其他地方,牵一发而动全身。这就说明代码的耦合度太高了,没有采用更灵活的设计模式,很难适应未来业务变化的需求。

优化路径:我们可以学习和运用设计模式来改善这种情况。比如说,对于不同货物类型的计费规则,用策略模式把每种规则封装成一个独立的小模块,这样以后增加新的货物类型,只需要创建一个新的策略模块,不用大动干戈地修改原来的代码。对于创建对象,用工厂模式把创建的逻辑单独抽出来,这样创建对象的过程就会更清晰,也方便以后修改和扩展。另外,把代码分成不同的层次,比如数据层、业务逻辑层、界面层等,让不同层次的代码各司其职,减少它们之间的相互影响。

代码注释的匮乏 问题表现:写代码的时候,光顾着实现功能了,没怎么写注释。像在Goods类里计算计费重量和费率的地方,这可是很关键的算法,却没有注释说明为啥这么算。还有Order类里计算总费用的逻辑,也没有注释解释清楚。这样一来,不仅别人看代码的时候一头雾水,就连自己过段时间再看,都得费好大劲回忆当初是咋想的。

弥补措施:以后写代码,一定要养成写注释的好习惯。在关键代码的上面或者旁边,都得加上注释。注释要写清楚这段代码是干啥的,用了啥方法实现,参数都是啥意思。比如在计算计费重量的方法上面,写清楚是根据货物的体积和实际重量,按照一定的规则算出计费重量,这样以后不管谁看代码,都能很快明白代码的意图和逻辑。

心理历程

初始的迷茫与不安 刚接到这个代码作业,看到这么多陌生的类和复杂的要求,心里一下子就慌了。这么多东西,感觉自己啥都不懂,完全不知道从哪儿开始。心里直打鼓,怀疑自己是不是根本搞不定这个作业。可又不能就这么放弃,还是硬着头皮,先从整体上看看每个类大概是干啥的,试图找到一点头绪,虽然心里还是没底,但至少迈出了第一步。 编码过程的波折与坚持 开始写代码后,遇到的问题一个接一个。就拿输入验证来说,要考虑的情况太多了,一开始根本想不到那么多,试了好多办法,有时候还是解决不了,特别沮丧。出错处理也是,各种异常情况让人头疼不已,查资料、问别人,不断地尝试新的解决方案,期间有好几次都想放弃了,觉得太难了。可又不甘心就这么半途而废,还是咬着牙坚持下来。后来发现代码的结构不太好,又开始琢磨怎么优化,一点点地调整代码,这个过程虽然痛苦,但也学到了不少东西。 完成后的失落与反思 好不容易把代码的主要功能实现了,可仔细检查的时候,发现好多细节没处理好,注释也没怎么写,代码以后要是改起来或者加新功能,肯定很麻烦。心里特别失落,觉得自己还是太粗心、太着急了,只想着赶紧把功能弄出来,没考虑到代码的质量。通过这次经历,深刻反思了自己在编程方面的不足,意识到自己还有太多需要学习和提高的地方,以后不能再这么急功近利了。

感悟

严谨是编程的基石 这次写代码,让我深深明白编程必须严谨。输入的数据要是不检查,出错了不处理,程序就跟纸糊的一样,一戳就破。以后写代码,每一个细节都得重视,从输入数据的那一刻起,就得想着怎么保证它是正确的,遇到错误得有应对的办法,只有这样,程序才能稳定可靠,不然出了问题,再回头找原因,可就麻烦大了。 设计模式是编程利器 在优化代码结构的时候,接触到设计模式,才发现它的作用太大了。用了设计模式,代码就像被整理过的房间,井井有条,改起来方便,加新功能也容易。以前不知道这些,代码写得乱七八糟,改一点就到处出问题。以后得多学习设计模式,把这些好用的工具用起来,让自己的代码更规范、更强大。 持续学习是成长的阶梯 这次作业把我不会的地方全暴露出来了,编程知识不够扎实,技巧也不熟练。编程这行发展太快了,新东西不断冒出来,要是不持续学习,很快就跟不上趟了。以后得保持学习的热情,多看书、多实践,不断给自己充电,这样才能在编程的路上越走越顺,解决越来越复杂的问题。 代码可读性关乎协作与发展 代码注释少,自己看都费劲,要是团队一起做项目,别人根本没法理解代码。代码写得清楚明白,不仅方便自己以后维护,也能让团队成员快速上手,提高整个团队的工作效率。以后写代码,一定得把注释写好,把代码结构理清楚,这是对自己负责,也是对团队负责。 总结 通过这次代码作业,收获满满,也认清了自己的不足。在技术上,对编程的各个方面有了更深入的实践和理解,知道了自己在输入验证、异常处理、代码设计等地方还有很大的提升空间。在心态上,从一开始的迷茫害怕,到后来的坚持努力,锻炼了自己面对困难的勇气和毅力。 以后再写代码,我会把输入验证和异常处理做得更完善,用设计模式优化代码结构,认真写好注释,提高代码的质量。同时,我会保持学习的状态,不断吸收新的编程知识和理念,提升自己的编程水平。我也明白,编程不是一个人的战斗,要注重代码的可读性,方便团队协作,和大家一起把项目做得更好。

posted @ 2025-05-24 09:47  华lll  阅读(30)  评论(0)    收藏  举报