经过一学期对于高级软件工程课程的学习,在代码编辑器、项目合作工具GitHub(Gitee)的使用上,我变得更加得心应手了,对于软件的一些设计、结构和机制也有了更加深入的理解,这些收获当然也不只是源自于老师的课上教授,也与自己在实验过程中通过实践得到的具体认识息息相关,本次课程一共有五次实验,一下就是我对于几次实验的认识与收获。
实验一:Visual Studio Code的使用
说到VS,本科的时候就总能听到一些人安利他的强大,但是实际接触到的实在太少,大一学习C语言使用Code Blocks,之后转Java就改用IDEA,唯一接触到Visual Studio也就是在大三下学习图形开发的时候使用过一小段时间,因为开发的也就是个玩具项目,并没有发掘到VS厉害的地方,直到课上才开始了解到其丰富的插件生态,对于不同语言的广泛支持(C++、C#、Python、PHP、JavaScript、Node.js),此外,VS对于文件资源管理、跨文件搜索、源代码管理和程序调试的支持也让人印象深刻,各式各样的快捷操作在一定程度上也使其更加高效,虽然有点记不住。
实验二:五大场景玩转Git
做到这个实验的时候正好是我们小组工程实践进度开始大踏步推进的时候(可能跟其他小组比我们开始的比较晚,寒假主要用着准备实习去了),小组采用的分工是前端一人,后端两人,在定好了公共模块的一些基础数据传输格式、各模块功能、调用关系之后,团队因为没有过git的使用经验,后端的开发模式我们想起了本科在软件工程课上老师曾经花大篇幅讲起的结对编程模式(一人编程、一人参谋,一定时间轮换),在开始时这种编程模式展现出了显著的优点:所有的模棱两可的位置都能及时地得到商量与确认,两个人的思维相互辅助着推动着项目从0迈向1,以一个让人比较满意的速度,但等到项目慢慢推进,后面的service开发变成了重复、单调的工作,其低效的弊病就展现的淋漓尽致,直到实验的开始给了我新的启发:完全可以托管项目到git上,实验中团队项目的分叉合并操作不是正好我们需要的么?通过创建新的分之,在不同分支上修改,最后合并冲突到master分支并推送到远程master上去分叉合并,正好就对两个人提交的代码进行了管理、合并。
实验三:用VS Code画UML用例图
讲个笑话,本科的时候刚学系统建模,UML图作业我是用画图板画的,用圆圈和直线画小人的经历我现在还历历在目(主要是老师用的那个画图软件看起来就像上个世纪的软件,难看的让人实在不想用),后来知道了专门的绘图网站ProcessOn,而一个draw.io插件就可以让编码与画图的功能集成在一个软件当中,着实方便了开发中的设计阶段的需求,其图形模版的丰富度也着实让人眼前一亮。
实验四:正则表达式的应用
这次实验让我学会了在编码时用更加巧妙的方式对字符串进行处理(验证、查找、替换)。
实验五:验证软件中的一些机制
多态、回调、闭包、异步、匿名,这次实验主要集中在对于这些设计上面思想的了解、实现,跟23种设计模式一样,属于重复再多遍都不为过的东西。去年修的软件体系结构里的内容加这些,在我看来,是属于一种形而上学的东西,了解了概念,知道了实现案例距离掌握二字,实在是有太大的间隔,之前看设计模式的时候,对一句话印象特别深,“代码的功力深了,不经意间,每一行都是在写设计模式”,在代码量的绝对差距下,想达到这种地步,还有太多的码要敲,前路漫漫呐。
个人的感想基本都穿插在了对于实验的总结里,总的来说,还是有很多值得咀嚼的东西,特别是一些设计思想上的东西,希望自己能在未来的实践中慢慢吸收运用好