读《程序员修炼之道》:写成绩管理系统作业,我终于改掉了“堆代码”的毛病
之前独自写“成绩管理系统”作业时,总喜欢把所有逻辑往一个文件里堆——录入成绩、计算平均分、排名、打印报表,全塞在main函数里,变量名用“score1”“sum2”,注释只写“//计算分数”。当时觉得“反正就自己看,能跑通就行”,直到要加“不及格成绩标红”的功能,才发现根本无从下手:代码混在一起,想找到“成绩输出”的位置要翻半天,改一行就影响其他逻辑,最后只能一点点拆解,比重新写还费劲。
翻《程序员修炼之道》看到“模块化”相关的内容时,突然明白问题所在:我把代码当成了“一堆指令”,而不是“可拆分的功能块”。后来再写类似作业,我会先把系统拆成几个独立功能:专门写一个函数负责“成绩录入”(只做数据收集),一个函数算“平均分”(只处理计算),一个函数管“结果展示”(只负责输出格式)。比如录入成绩时,把输入的分数存进统一的数组,后面不管是算排名还是标红,都从这个数组里拿数据。
上次完善成绩管理系统,要加“按科目筛选成绩”的功能,因为之前拆好了模块,只需要在“数据获取”环节加个判断条件,其他计算和展示逻辑完全不用动,半小时就搞定了。原来写代码不是“越多越快”,把功能拆清楚、让每个部分只干一件事,反而能少走很多回头路——这大概就是书里说的“让代码各司其职”吧。