十一月份《代码大全》观后感二
在学校的作业环境中,我们往往是“乐观主义者”。我们假设用户的输入总是合理的,假设文件总是存在且可读,假设网络永远畅通。这种乐观主义在现实世界中是致命的。《代码大全2》中的“防御式编程”思想,像一盆冷水,把我浇醒,让我从一个天真的学生,向一个严谨的工程师转变。
防御式编程的核心思想是:“任何可能出错的地方,终将会出错。” 它要求我们以“不信任”为前提来编写代码。
断言是我学到的最有力的工具之一。它不再是简单的printf,而是在代码中埋下的“哨兵”。assert(index >= 0 && index < arraySize); 这样一行代码,明确地宣告了程序在这一点上必须满足的条件。它在开发阶段就能抓住绝大多数愚蠢的错误,而不是让错误潜伏到交付之后。
书中详细区分了错误、异常和边界情况。我不再简单地用if-else敷衍了事,而是开始系统地思考:什么是应该被断言掉的程序bug?什么是应该被抛出并处理的异常?什么是正常的边界情况需要返回一个状态码?这种分类处理的思想,让我的程序健壮性大大增强。我开始习惯于在写任何函数、任何模块时,首先思考它的“脆弱点”在哪里。读取数据?检查空指针。进行计算?防范除以零。处理输入?验证每一个参数。这种思维就像为代码编织了一张“安全网”,确保即使某个环节出现问题,程序也不会轰然崩溃,而是能体面地降级或报告错误。
这门课教会我,一个优秀的程序员不是一个祈祷万事顺利的乐观主义者,而是一个预见所有失败可能并为之做好准备的现实主义者。编写健壮的代码,是对用户、对团队、也是对自己劳动成果的最大尊重。

浙公网安备 33010602011771号