代码即文档

昨天参加一个外企架构师面试,面试官在美国,在整个面试过程中有几个问题印象比较深刻

怎么保证代码质量

我的回答:

  1. 清晰的注释,保证每一小段代码都能通过注释迅速了解实现内容和方法
  2. 活用设计模式,将代码用更优雅的方式呈现出来,例如大量if-else用策略模式优化
  3. 遵循设计原则,降低代码侵入,依赖反转降低耦合,
  4. codereview
    追问:大量的注释会不会导致在代码修改的时候需要修改两次:注释和代码
    听到这个问题我是挺惊讶的,架构师面试很少遇到面试官会这么一针见血的提出这种似乎很接地气的问题,其实开发中确实有这样的体会,注释写的越清晰也修改工作量也更大。在我日常工作中一般是做增量更新,对已有的实现如果不是BUG,都不会轻易修改,新增接口会以版本形式做赠两个更新。
    追问:有没有考虑过把代码写的像注释
    我没有回答上来,确实没有思考过这样的问题。现在回想起来,其实这个问题一直就在身边,还有现成的解决方案:springboot
    springboot的配置就是让代码即文档的一种诠释:当我们需要引入一些功能的时候,只要引入相应的包,然后在yml中做简单的配置,就可以获得这些新功能。
    又例如SPI,将代码实例对象从代码中抽取出来,在配置文件中指定实例对象。
    无论是yml、SPI,当我们都是在面向配置编程,配置文件的属性命名往往就诠释了实现逻辑和作用

总结:代码即文档,唯一能体现实现细节的只有代码,通过接口编程+面向配置编程,配合良好的方法命名、配置属性命名,让功能作用和实现细节在命名和配置上暴露出来,会比大量使用注释来的更好。或许还有一个主要问题在于,我都是用中文写注释,而面试官母语是英语,所以在命名上的理解更深刻吧

你可能感兴趣的:(代码即文档)