• 互联网架构并非靠设计出来的,而是经过实战不断演练而成,因此经验尤为重要。
  • 代码量是无法真正权衡水平的,在做需求时多去思考更合理的解决方案、写代码时尽量避免重复劳动,才是我们要追求的。
  • 实际软件工程项目中,模块切分的太大则会产生模块化不足的现象,模块切分的太小则会陷入过度模块化陷阱。
  • 模块化不足会让你的项目失去灵活性,并且与业务高度耦合,相同的代码不得不写多次才能实现同样的功能;
    • 而过度模块化则会让程序员记忆成本增加,并可能出现只有在特定情形下多个模块组合才能达成某个目的的“魔法组合方式”,不利于维护。
  • 随着业务的变化、系统设计也要持续演进升级。
    • 没有一开始就完美的架构, 好的架构设计一定是演化来的,不是一开始就设计出来的。
  • 写代码的时候 代码要有课扩展 ( 面向抽象接口编程),维护,重用

    1. 假设这几行代码可以完成一个功能,提炼到一个方法里面去
    2. 假设这个方法在某个业务逻辑层可以共用,往上抽取
    3. 假设这个方法在多个模块之间要共用,就把它提炼到一个工具类里面去
    4. 假设这个方法在多个系统里面可以共用,那把这个方法发布成一个webservice 服务(系统级别的重用)
  • 架构的本质是降本增效,是对业务场景抽象后得出的支撑框架,架构为业务而生,被业务场景抛弃

  • 每一次的架构设计都是企业和团队技术研发力、业务复杂度、规模大小、时间成本、运维能力等各方面折中的结果