关于过度设计的思考(上)
2010-05-30 15:18
295 查看
设计是一个取舍的过程,无论是过度设计还是设计不足的问题,都是取舍的结果:
1. 如果不预先设计,随着时间越久,更改成本越大
2. 如果预先设计,会增加当前程序的复杂度
这种取舍没有放之四海皆准的标准,需要根据不同项目不同人员做选择。在我开发经验当中,总结几条参考标准:
1. 可隔离的实现不做优化设计,当性能需要时再进行优化,需要单元测试支持。
2. 如何为扩展性预留设计?
这是个很纠结的问题,这里面其实有两个概念:扩展和设计。设计是为了扩展,但是设计不能完全解决扩展问题,如果非要用设计解决所有的扩展问题,那基本上就会造成过度设计。其实很多大型项目,到了一定阶段,就是基本上重写架构了。这时候,相比可扩展的复杂设计,倒不如简单的设计,但是因为设计简单,所以代码更易懂,更容易被重写。之前看到过一句话:有一种设计,很复杂,不会有明显的问题;有一种设计,很简单,明显不会有问题。我们应该选择后者。
1. 如果不预先设计,随着时间越久,更改成本越大
2. 如果预先设计,会增加当前程序的复杂度
这种取舍没有放之四海皆准的标准,需要根据不同项目不同人员做选择。在我开发经验当中,总结几条参考标准:
1. 可隔离的实现不做优化设计,当性能需要时再进行优化,需要单元测试支持。
2. 如何为扩展性预留设计?
这是个很纠结的问题,这里面其实有两个概念:扩展和设计。设计是为了扩展,但是设计不能完全解决扩展问题,如果非要用设计解决所有的扩展问题,那基本上就会造成过度设计。其实很多大型项目,到了一定阶段,就是基本上重写架构了。这时候,相比可扩展的复杂设计,倒不如简单的设计,但是因为设计简单,所以代码更易懂,更容易被重写。之前看到过一句话:有一种设计,很复杂,不会有明显的问题;有一种设计,很简单,明显不会有问题。我们应该选择后者。
相关文章推荐
- 关于良好设计和过度设计的思考
- 关于过度设计的思考(zz)
- 由一个简单的客户端间TCP/UDP通信程序引发的关于设计模式的思考
- 关于C++回调函数设计的思考
- 关于基于DDD+Event Sourcing设计的模型如何处理模型重构的问题的思考
- 关于设计文档与代码关系的一点思考
- 关于布局设计器的思考
- 关于组件化设计升级的一些思考
- 关于定时器的设计学习记录(学习他人资料)和思考---定时任务 超时控制 频率限制
- 前后端交互-一些关于接口设计的思考
- 关于数据库设计的思考(一)
- 关于网站缓存设计的几点思考
- 关于图片验证码设计的思考
- 关于数据库设计中主键问题的思考
- 关于系统异常设计的再思考
- 关于思考设计一个一百亿的计算器
- J2EE中关于权限设计的思考
- 关于命名规范、维度明细层及集市汇总层设计的思考
- 关于课程设计、毕业设计的一些总结与思考
- 关于设计的思考-观看ted台北设计师演讲之后的感想