《大道至简》读后感
一、初识编程时的繁琐操作
刚学C和C++时,我总喜欢把简单问题想的很复杂。比如老师让写个程序编程,我非要加一堆没用的功能:
(1)用while语句实现循环,觉得这样更能体现出自己的水平,但其实用一个简单的for循环就能搞定。
(2)给函数添加多个参数,其中有几个根本用不上。
(3)在代码里塞满“//......”注释,实际上再也没看过,而且有很多无用的废话。
课下作业时更夸张,为了展示函数的学习成果,把一个简单的算法硬是拆成好几个函数,最后连自己都搞不清逻辑。
《大道至简》里说:"复杂不是本事,能把复杂变简单才是。",我们这种写法就像给自行车装发动机,虽然看起来厉害,但实际上根本没什么用。
二、书中点醒我的三个"坑"
-
过度设计“坑”
书上说:"不要还没学会走就想飞。",在网课学习时有个老师说有个BMI项目,其实用1个结构体+2个函数就能搞定,非要搞什么"三层架构",结果调试时到处找bug。回想起自己大一的学习经历,我有很多次作业都是就行了过度设计。 -
注释泛滥“坑”
作者说:"好代码自己会说话。",但我以前连“i++”都要注释"//i加1,循环一次",就像给遥控器贴标签"按此键开机"。书上说这种注释只会干扰阅读,增加无用信息。在大一期末考试的时候,我就是为了完成要求而加很多无用的注释。 -
纸上谈兵“坑”
大一做课下作业时,我花了很多时间去思索步骤和用什么去完成,直到最后两天才开始正式写代码。书里说得对:"造船要先下水,不是先画完美图纸。" ,要先进行尝试,不能总是纸上谈兵。
三、我的"简单化"改造计划
-
写代码时进行迭代式开发
《大道至简》中介绍过一种名叫“迭代式开发”的方法。
(1)第一版:只用数组存数据,所有功能写main()里
(2)第二版:拆出其中各种各样的函数体
(3)第三版:最后考虑用文件进行存储
现在我会先用最笨的方法实现其功能,就像计算一元二次方程时用万能公式一样,再慢慢的去考虑简单方法。 写代码总要以实现其功能为目的,其次才是细化精致。 -
注释“二不一只”原则
(1)不解释基础语言。(如:不写“//for循环开始”)
(2)不重复代码内容。(如:不写“//x=1 把1赋值给x”)
(3)只写为什么这么做。(比:“//用冒泡排序因为数据量小”) -
进行"灵魂三问”
每次代码编程完时问自己三个问题:
- 这个功能能不能更直白、更直接的?
- 这段代码删掉一些部分还能完成代码功能吗?
- 几个星期后我再回顾时能看得懂吗?
四、结语:简单
(1)作为计算机编程新手,我曾以为“复杂=高级”,而《大道至简》却告诉我“能把复杂问题简单化,才是真正的能力。”,现在的我会把这本书中的精髓深深的烙印在自己的脑海里——简单是终极的复杂。
(2)正如书中所言:“优秀的程序员用最少的代码解决问题,而伟大的程序员删除不必要的代码。”未来的学习中,我将以“简化”为目标,持续追问自己“灵魂三问”。唯有如此,才能避免重蹈过去的陷阱,真正的走向工程实践的成熟。
(3)在未来的某天,当我能轻松说出“这个需求不需要设计模式,一个函数就够了”时,才算真正读懂了这本书。
浙公网安备 33010602011771号