《代码大全2》观后感(三):变量命名——藏在细节里的“代码语言”
《代码大全2》用整整一章讲“变量命名”,起初我觉得小题大做——不就是起个名字吗?能区分变量就行。但读完整章才发现,好的命名不是“随便起”,而是让代码成为“可阅读的语言”,甚至能减少一半的调试时间。
书中有个观点让我印象深刻:“命名要回答‘是什么’,而不是‘怎么用’”。比如“userAge”比“a”清晰,“orderTotalAmount”比“sum”准确——前者直接告诉读者变量的含义,后者却需要结合上下文猜测。我曾维护过一份旧代码,里面有个变量叫“temp”,跟着逻辑走了半天,才发现它其实是“用户当前选中的地址ID”。如果当初命名为“selectedAddressId”,我根本不用花时间猜,直接就能明白它的作用。后来我写代码时,会刻意避免“temp”“data”“value”这类模糊的名字,哪怕多写几个字符,也要让变量“自解释”。
书中还提醒要避免“误导性命名”,这也是我过去常犯的错。比如用“list”命名一个数组(其实数组和列表的结构不同),用“count”命名一个布尔值(count是“数量”,布尔值应该是“isXXX”)。有一次我写“是否已登录”的判断,用了“loginCount”当变量名,同事看代码时以为是“登录次数”,结果逻辑理解错了,导致bug。后来我按照书中的建议,把布尔变量统一用“is”“has”开头,比如“isLoggedIn”“hasPermission”,从此再也没出现过类似的误解。
原来,变量命名不是“小事”,而是代码可读性的基础。一个好的名字,能让代码自己“讲故事”,减少团队沟通成本,也让未来的自己能快速看懂过去写的逻辑。《代码大全2》教会我的,正是这种“在细节里追求严谨”的编程态度。