一些软件工程开发思想

  1. “关键的需求”决定整个架构
  2. 奥卡姆剃刀定律:如无必要,勿增实体
  3. 软件工程三要素:方法,工具,过程;可以对应东方哲学的“术”,“器”,“道”
  4. 分析问题三原则:定性,定量,定期
  5. 对象组合优于对象继承
  6. 最小作用量原理与哲学:最低能量状态,是最稳定的状态;做最经济的选择
  7. 真理的单点性原理,SPOT: Single Point Of Truth《UNIX编程艺术》,即一个对象的定义只存在一个唯一,准确,权威的解释。
  8. 对于体系结构,任何问题都可以通过增加一个间接的中间层来解决,除非问题本身是中间层太多了
  9. CPU访问存储器遵循局部性原理,具有空间局部性和时间局部性的特点
  10. 经验不可序列化,编码的优先原则:正确,结构清晰,良好的性能;工程问题是表达的艺术,只有关键几个地方是优化问题(计算高效)
  11. 功能实现倾向于:自动化,工具化,配置化
  12. 软件的质量不是测试出来的,而是设计和维护出来的
  13. 架构模式的最高目标是使代码可测试
  14. 工程版本,随时可运行,随时可测试
  15. 帕金森定律可以被克服,通过系统性的需求分析与迭代性的排期规划
  16. 没有银弹,游戏项目不追求泛通用架构,每一个项目都是唯一且独特的,只满足当前项目最小需求,无限压缩开发维护成本,降低技术债
  17. 游戏项目工程其实一个非常线性的体验
  18. 协作时做一个好的传球手
  19. 平衡是现实,理想是追求
  20. 管理的本质是风险管控,工程的本质是控制复杂度
  21. 深度很容易扩展广度,而广度不确定能给深度提供多少的养分,这个广度要看相关性
  22. 系统总是趋向于混乱与无序,对抗熵增原理,需要不断做功。问渠哪得清如许,为有源头活水来,表达了同样的哲学思想
  23. 战术的努力不能弥补战略的错误
  24. 推理的起点:所有的推理都有一个推理的起点,找到这个起点至关重要
  25. 演化,时间改变了事物本身;“人不能两次走进同一条河流”,是古希腊唯物主义哲学家赫拉克利特的一句名言
    • 推论一:问题会随时间点而变化,有时,看似无解或者难度极大的问题,可能随着时间推进,变得容易处理。所以,有时不做决定,也是一种决定
    • 推论二:同一段代码, 再次阅读的时候,可以等价于“另一段代码”
  26. 软件开发是一种脑力劳动,一种知识密集型的工作,就像艺术作品一样,创作过程和成品没有标准答案