程序设计自问表
本文基于作者多年软件设计和研发经验以及十年 IT 行业从业经验,为广大程序猿,IT 行业从业者,通过提出一系列软件设计启发式问题来助力真正编码前或代码迭代过程中,设计出更好,更健壮,更易于维护的程序。
客户的需求
1 是功能需求还是性能需求?
2 设计程序如何应对需求的变化?
3 由需求到开发任务 WBS 是否做得好?
程序的功能
1 复杂业务流程是否考虑到?
2 边界用例是否考虑到?
3 程序功能扩展性是否高?
程序的设计原则和模式
1 是否很好运用面向对象 n 大设计原则?诸如:ISP
2 能否用到面向对象 24 种设计模式?诸如:工厂,原型
3 领域设计原则有没有运用?诸如 CQRS
程序的分离
1 程序前端,后端如何分离?
2 程序数据和业务如何分离?
3 程序模块间如何划分边界?
程序的平衡
1 程序功能和性能如何平衡?
2 程序硬件资源和性能如何平衡?
3 程序可读性和编写效率如何平衡?
程序的模块
1 如何设计程序架构,分层,划分微服务?
2 对于面向对象程序,如何设计包和类?对于面向过程程序,如何设计过程函数?
3 有没有考虑到程序模块耦合度和复杂度?
程序的并发
1 并发程序多线程是否线程安全?
2 有没有考虑到阿姆达尔定律?
3 并发过程中的异常处理有没有?
程序的开发框架
1 使用自研框架 or 第三方框架?
2 选择框架要考虑哪些因素?诸如:功能完备性,社区支持度,采购成本
3 是否考虑到开发人员学习曲线?
程序的数据
1 数据库设计是否遵循设计步骤?诸如:E-R 图,数据模型
2 有没必要使用文档数据库,时序数据库等非关系型数据库?
3 又没必要使用大数据技术?诸如:Hadoop
程序的缓存
1 如何设计内存,缓存,数据硬盘存储三级存储级别?
2 如何保持缓存和内存数据一致性?
3 如何处理缓存技术问题?诸如:雪崩,击穿,穿透
谨以此文,抛砖引玉供广大程序猿,软件实践者参考,愿能设计出更好软件。
版权声明: 本文为 InfoQ 作者【极客罗杰】的原创文章。
原文链接:【http://xie.infoq.cn/article/999e8fd476665d420f36998ae】。未经作者许可,禁止转载。
评论