大道至简观后感
最开始在听到这个作业时,我是有点不解的,暗想我们不是理科吗,这《大道至简》听上去就是一本文学类的,为什么要看,还要写什么观后感,难道实在告诉我们怎么写代码吗。在翻开《大道至简》的时候,我以为这本书只会讲一些什么名人事迹,但在认真读完才发现,它讲的不是代码技巧,而是做软件开发该有的思维。书里“程序=算法+结构”这句话,也让我好好反思了自己学习C语言、C++写程序时存在的诸多问题。
平时完成课程编程作业,我一直有个很不好的习惯。每次拿到题目,根本不会静下心梳理需求,直接打开编辑器上手敲代码。上次做学生信息管理小程序就是这样,所有功能全部堆在main主函数里面,增删查改的代码揉成一大块。想到什么功能就直接往上加,出现bug之后临时修补,变量名随便乱写。当时我心里只有一个想法:只要程序最后能正常运行,任务就算完成,前期花时间设计结构纯粹是多此一举。
看完这本书我才明白,这种做法隐患很大。书中提到很多程序员都容易陷入盲目编码的误区,只顾着把功能实现,忽略软件工程最基础的设计思想。我这种拿到需求直接写代码的方式,就是典型的“蛮力编码”。没有提前规划模块划分,代码结构混乱,各个功能互相纠缠。一开始小程序看不出问题,一旦后续想要调整功能,就要在密密麻麻的代码里来回查找,稍微改动一处,就可能引发一堆新错误。书里愚公移山和李冰治水的对比让我印象很深,只顾埋头苦干,不去思考合理的方式,只会不断制造新麻烦。仅仅追求代码跑通,只能应付简单课堂作业,长期下来很难养成规范的开发习惯,也会给之后学习Java埋下隐患。
结合书里的观点,我也给自己定下几条规则,避免之后再犯同样的错误。
首先,强制自己改变开发顺序。以后写C/C++项目,不再一上来就敲代码。先用草稿梳理清楚整体需求,划分不同功能模块,想好函数、结构体的设计,搭建好大致框架之后,再开始编码。
其次,写代码时刻记住简洁优先。不要为了炫技写复杂难懂的代码,规范命名,及时拆分过长的函数,尽量做到一个函数只负责一件事。
最后,不要把问题不断往后拖。写完一部分代码就简单自测,及时优化臃肿的逻辑,不要堆积到最后统一修改。
这本书名字叫《大道至简》,读完深有体会,软件工程本身没有想象中那么晦涩,很多麻烦都是我们急于求成造成的。作为一名计算机专业学生,目前我只学习了C语言和C++,后续还要接触Java。我不能只满足于写出能运行的代码。比起熟练掌握各种语法,建立良好的工程思维更加重要。写程序本质是解决问题,清晰的思路远比堆砌代码重要。往后练习编程的时候,我会沉下心,戒掉急于动手的毛病,回归问题本身,尽量写出整洁、方便后续修改维护的代码。