再谈职业素养

接着上一篇谈职业素养。

年后离职,最近这几天已经不接新的需求了,主要是修补一下以前遗留的问题,梳理之前的逻辑和代码。发现几个月前设计的结构有一部分已经不再适用现在的需求了,但有一部分的设计还是堪称精妙,这一部分只需要在内部做最小量的调整就能满足需求的变化,这也许是我 2019 年做得最厉害的一件事情之一了。再看这些代码,有几点感悟。

  1. 不要预设以后的需求。后期的需求会变化,但具体变成怎么样子,我们不应该提前假设。我们在设计的时候,需要为以后考虑,不是考虑以后会变成什么样子,而是考虑如何让代码容易改变。
  2. 不要过度封装,在需要的时候进行合适的包装,不要为了封装而封装。
  3. 不要过早优化,不要过早考虑性能问题。一个项目刚启动的时候,往往不会有太多的数据量,我们应该更多地考虑正确性与可扩展性。
  4. 线上要多记日志,日志等级一定要合理。项目刚启动的时候,不要只记录错误日志,而导致线上故障排查困难。
  5. 要时刻保持小规模重构的习惯。因为在写代码的时候往往没有时间考虑周全,写出丑陋、冗余的代码,回头看的时候,需要及早重构,防止代码腐化。
  6. 要写文档和注释,因为有些地方的代码是写的时候想出来的 Trick,不通过注释,根本无法理解,或者理解起来非常费劲。如果这些地方无法重构,一定要写注释或文档说明。
  7. 注释一定要及时更新,不要出现注释和代码逻辑不一致的情况。
  8. 不用的代码及时清理,不要出现冗余的模块。模块拆分要合理,代码逻辑才更清晰。

这些是上一篇里「业务能力过关」落到代码上的样子:对事不对人,也对现在的自己不对以前那个急着预判未来的自己。