• 面向客户编程 - 解决生存问题,原则上保持软件可用,运行稳定性
    • 面向程序员编程 - 解决技术问题,原则上保持接口易用,业务可扩展,性能可优化,代码可读
    • 面向老板编程 - 解决升职问题,原则上保持简单粗暴,快速的发布,可不计后果,无穷债务
    • 面对对象编程 - 解决事物具象与抽象的问题
    • 面向接口编程 - 解决事物定义与行为的问题
    • 面向切面编程 - 解决业务离散与聚合的问题
    • 多线程的编程 - 解决做什么与何时做的问题,对象是过程(任务)的抽象,线程是调度(时间)的抽象。同时也解决资源的共享互斥,线程的并发调度的问题。
    • 设计模式编程 - 解决对象是如何创建的,对象的结构是怎样的,对象是如何交互的问题。
    • 通用解决思路 - 空间换时间,时间换空间,复杂问题简单化,大型问题分解化
    • 软件硬件相通 - 把程序设计的像计算机一样(输入、输出、运算、控制、内存、外存)
    • 软件设计过程 - 整体到局部,局部到整体,相互迭代;设计模式对应常态设计,技术选择对应框架设计,业务需求对应功能设计;
    • 没有适用于任何软件系统的唯一方法,也没有所谓最佳实践,只有更好的实践,适用于当前环境,人员结构,技术水平的开发模式;做到降低开发成本,提高工作效率,模块易于扩展,性能可以调整,代码可以复用。