心得
这门课程从刚开始的熟悉环境,注意代码风格规范,到基本的模块化设计,然后引出可重用模块的接口设计,callback函数,子系统的可重用设计,中间还插入讲解了线程安全,最后老师又升华了软件工程代码设计的思想。坚持完这八周的课程,收获颇丰,孟老师风趣幽默,上课的过程中放松愉快,有趣的举例使得知识理解起来更容易。可以说再次被宁哥拯救,非常的感谢老师!!!
个人觉得软件工程和盖楼是有相同之处的,都是工程。如果只是写一个小的玩具程序,或者是非常小的软件,也许不需要什么工程思想,甚至可以不遵守代码风格规范。但是正如老师讲到的,一般来说人的注意力在两千行代码以内,当代码的量上去之后,怎样去组织这样一个庞大的代码,就是个技术问题了,这个时候软件工程就起到了作用。只有按照软件工程的方式去管理组织大量的代码,才有可能使得项目容易维护,扩展,使得可以有更多的人协作(每个人开发一个或几个模块)。这就好比盖一个摩天大楼和盖一个平方相比,越是复杂的东西考虑的就越多,软件工程就是前人留下来管理大量代码的经验,遵守这个经验可以让我们少走弯路,就像老师引用资治通鉴里的话一样,等到不可控的时候就已经晚了。
老师用一个C语言menu项目,逐步的使其更加完善,在这个过程中让我们体会到了模块化,接口的设计,使得一个软件变得更漂亮,更可重用,更易扩展。在这过程中还领略到了链表的威力,callback的精彩,最后的实验七让我知道了带参数的命令原来是这样开发出来的。
实验报告作业目录列表
实验一:写一个hello world小程序
实验二:命令行菜单小程序V1.0,具体要求参见视频
实验三:内部模块化的命令行菜单小程序V2.0
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
实验七:将menu设计为可重用的子系统
收获和遗憾
收获非常大啊,不管是从整个的软件工程思想,内聚耦合,还是说callback,getopt等知识。能坚持完八个星期的课程,没有遗憾。有个愿景:如果将来有机会,写一个c语言的开源软件,就以老师的代码为基础。
最后还是要说
感谢孟宁老师,很帅!