各个方面互相权衡。

易于开发

  1. 开发工具是否完善;
  2. 生态圈是否繁荣;
  3. 社区是否活跃。

    易于扩展

  4. 增加新功能是否容易;

  5. 增加新功能是否会显著增加系统复杂度。

    易于维护

  6. 代码是否易于理解;

  7. 文档是否健全。

    易于测试

  8. 功能分层清晰;

  9. 副作用少;
  10. 尽量使用纯函数。

    易于构建

  11. 使用通用技术和架构;

  12. 选用主流构建工具。