打开 PR 的那一刻,就感觉「有些不对劲」。
还没细读代码,仅凭整体结构就隐隐觉得不对劲。说不清道不明,无法用逻辑解释——或许有人不愿承认这种感觉的存在。
但我可以断言:这种嗅觉是真实存在的,而且很有用。
它的本质是「无意识的模式匹配」
日复一日地写代码、读代码、思考代码。这些积累会在你心中形成一套「基准」。
当遇到偏离基准的东西,大脑会自动做出反应。那些曾经「踩过的坑」,也在不知不觉中沉淀下来。
这不是刻意比较的结果,所以我们称之为「嗅觉」。
触发警觉的信号
命名的模糊。 名字和实际行为不符。validateEmail 不只是做验证,还发了邮件。
逻辑的错位。 为什么这段代码会出现在这里?Controller 里写着复杂的业务逻辑,View 里直接操作数据库。
外部通信的隐患。 数据库、API、文件 I/O。有副作用的操作最容易出问题。错误处理不够健壮,N+1 查询的苗头。
这些都是在深入阅读代码之前就会让人「咦?」的地方。
闻到异味,不代表真有问题
嗅觉是预警,不是判决。
查过之后发现没问题——这就够了。让你停下来仔细看一眼,本身就有价值。而这样的经验,会让你的嗅觉更加敏锐。
如何训练
写好代码。读好代码。然后,思考。
光是写和读,只是在干活。问一句「为什么要这样设计」,才能真正刻进脑子里。
什么是「好」,每个人的标准不同。追求自己认可的设计,那就是你的基准。
不过要注意,长期沉浸在遗留代码里,嗅觉是练不出来的。人会习惯臭味的。
拥有一个值得信赖的鼻子
相信你的嗅觉,但要验证。
习惯了臭味,鼻子就会变钝。持续接触好的设计,嗅觉才会变得敏锐。
让你的鼻子,成为值得信赖的那一个。