102301330李坤伟总结

李坤伟(102301330)- 客户端开发组

一、学期回顾

回顾你对于软件工程课程的想象
在学期初,我认为软件工程主要是学习如何规范地开发软件,可能会比较注重流程和方法论。我期待通过这门课程能够掌握一些工程化的开发方法,提升自己的代码组织能力。

实际参与项目后,我发现软件工程的实践比我想象的要复杂得多。特别是在开发战术板的播放控制和图层管理功能时,我深刻体会到,软件开发不仅仅是写代码,更重要的是要管理复杂度——如何设计清晰的状态流转、如何处理异步时序、如何保证数据一致性,这些都是工程化的重要体现。

回顾你在这门课程中的投入与产出
我主要负责战术板的播放/回放功能、图层管理系统、撤销/重做功能的开发。我大概写了1300行左右的核心状态管理代码。

软工实践各次作业花费的时间:

  • 第一次团队作业:5小时
  • 第二次团队作业:8小时
  • 第一次团队项目作业:14小时
  • 第二次团队项目作业:18小时
  • 第三次团队项目作业:24小时
  • 第四次团队项目作业:23小时

在软件工程课程上花费的时间:

  • 累计时间:92小时
  • 实际周均时间:9.2小时
  • 预计周均时间:7小时

令你印象最深刻的是哪一次作业或哪一场答辩?
最让我印象深刻的是解决图层顺序保存问题的过程。那是在Beta测试阶段,有用户反馈说他们保存的战术板,重新打开后图标的堆叠顺序全乱了——后画的图标跑到先画的图标下面去了。

我们团队排查了整整两天,最后发现问题出在资源异步加载上。因为图标图片是异步加载的,加载完成的顺序不确定,导致渲染到画布上的顺序也就随机了。

我们最终的解决方案是给每个对象增加一个zIndex字段,记录它们的层级顺序。在加载完成后,先按zIndex排序,再依次渲染到画布上。这个问题让我深刻理解到,前端的渲染时序必须严格可控,任何不确定性都会影响用户体验。

二、总结收获

展开说说你的软工实践故事
我负责的功能模块可以说是战术板的“大脑”,包括了播放控制、图层管理、操作历史等多个核心功能。

时间轴播放器的开发是一个挑战。我需要将一系列关键帧转换成平滑的动画,同时支持播放、暂停、跳转、倍速等多种控制。通过使用requestAnimationFrame和线性插值算法,我实现了流畅的动画效果。

图层管理系统也经历了几次迭代。最初只是简单的显示/隐藏控制,后来发展为支持多个图层的独立操作——标记层、轨迹层、注释层可以分别锁定、合并、调整透明度。这让我对Canvas的分层渲染技术有了更深的理解。

撤销/重做功能是基于命令模式实现的。我把每个用户操作都封装成命令对象,这样就可以方便地管理操作历史。这个功能的实现让我体会到了设计模式在实践中的应用价值。

最让我有成就感的是看到用户使用播放功能来演示完整的战术过程。当静态的战术图变成动态的演示时,仿佛赋予了战术分析以生命,这种感觉特别好。

介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助?

  • 状态机设计:我学会了使用有限状态机来管理播放器的各种状态,避免了状态混乱和逻辑错误。
  • 命令模式应用:通过实践掌握了命令模式,实现了稳定可靠的撤销/重做功能。
  • Canvas分层渲染:掌握了多个Canvas协同工作的技术,提升了渲染性能和可控性。
  • IndexedDB:学会了使用IndexedDB来本地保存大型战术数据,提高了数据加载速度。

这些技术不仅帮助我完成了功能开发,更重要的是让我建立了更系统的前端开发思维。我现在会更加注重状态管理、数据流设计和性能优化。

技术之外,这门课程还给你带来了哪些方面的提升?

  • 系统性思维:从实现单个功能到设计整体架构,我学会了如何系统地思考问题。
  • 调试分析能力:掌握了浏览器Performance和Memory工具的使用,能够分析和解决性能问题。
  • 文档习惯:为了便于团队理解复杂的逻辑,我养成了及时编写技术文档的习惯。
  • 质量意识:我更加注重代码的质量和稳定性,不仅仅是功能的实现。

如果还有什么想记录的或者想说的,就写在这儿吧!
回顾这个学期的学习,我觉得最大的成长是对前端工程复杂度的认识。以前我觉得前端主要就是写界面,现在我知道前端要考虑的状态管理、性能优化、数据一致性等问题,复杂度不亚于后端。

最让我开心的是看到自己开发的功能被用户使用,看到他们用播放功能来演示复杂的战术过程。那种创造的工具被人使用的感觉,给了我很大的成就感。

有时候我也会想,如果时间更充裕,我可能会实现更丰富的时间曲线编辑功能,或者优化播放性能。但考虑到项目整体进度和优先级,我们做出了合适的选择。

通过这次实践,我不仅提升了技术水平,更重要的是学会了如何在复杂的功能模块中保持清晰的架构设计。这些经验对我未来的技术发展会有很大帮助。

三、致谢
感谢团队成员在技术难题上的协作,特别是在解决图层顺序问题时大家的集体智慧。感谢PM的理解和支持,让我能够专注于技术实现。

特别感谢TA在状态机设计上的指导,让我对状态管理的理解更加深入。这段经历让我从一个功能实现者,逐渐成长为一个注重架构和稳定性的工程师。


posted @ 2025-12-29 19:15  LLLiii-  阅读(0)  评论(0)    收藏  举报