摘要:
产品的简单性,包括功能上的简单和非功能上的简单。 功能上的简单,指产品使用简单,上手容易,一看即会操作,功能无歧义。 非功能上的简单,多指设计上的简单,易懂易维护。 这两方面的简单性很难兼顾,功能上的简单,可能掩盖着复杂的设计。比如ASP.NET的WebForm,使开发网站项目变的跟WinForm一样简单,但是WebForm的设计是很复杂。相比ASP.NET MVC,虽然使用繁琐,但是设计清... 阅读全文
随笔分类 - 设计/架构
关于过度设计的思考(上)
2010-05-30 15:18 by xiaosonl, 655 阅读, 收藏,
摘要:
设计是一个取舍的过程,无论是过度设计还是设计不足的问题,都是取舍的结果: 1. 如果不预先设计,随着时间越久,更改成本越大 2. 如果预先设计,会增加当前程序的复杂度 这种取舍没有放之四海皆准的标准,需要根据不同项目不同人员做选择。在我开发经验当中,总结几条参考标准: 1. 可隔离的实现不做优化设计,当性能需要时再进行优化,需要单元测试支持。 2. 如何为扩展性预留设计? 这是个很纠结... 阅读全文
TDD与重构设计
2009-07-11 15:03 by xiaosonl, 577 阅读, 收藏,
摘要:
先来看一下TDD的三个经典步骤: 编写一个失败的测试. 编写最简单的实现, 让测试通过. 重构实现. 可以看到, 这里面实际上就是把过程分成了两步: 确定功能需求, 和重构设计. 把这两个分开, 是为了把分析功能需求和设计分开来, 同时只处理其中的一个. 我们经常开发软件中会遇到重写旧系统的情况, 而新系统的设计架构总是比旧的要优秀, 其中很大一个原因是在于我们已经基本上确定了整个系统的需求, 可... 阅读全文
再谈分层--好吧,我承认这个话题有点俗
2008-06-15 01:22 by xiaosonl, 2859 阅读, 收藏,
摘要:
一.层是指什么?为什么要分层? 对于层的概念,我的理解是包括"抽象层"和"实现层", 即是OO五大原则之依赖倒置原则(DIP), 让你的应用依赖于抽象而不是具体实现. 最常见的做法是加入数据访问的抽象层, 以此来解除对数据库类型的依赖. 二.要分哪些层? 需要解藕哪些层, 就分出哪些层. 三.一般都需要解藕哪些层? 1.数据访问层, 解除对数据库类型的依赖. 2.实体层,这主要是因为在ORM的存在... 阅读全文
FastDev介绍系列之[数据规则验证](上)
2008-05-04 00:04 by xiaosonl, 2343 阅读, 收藏,
摘要:
我们在写程序当中, 经常需要检验数据是否符合规则, 比如不能为空, 必需为Email或手机格式等.于是, 在我们的代码中, 就会出现很多重复的诸如此类的校验代码.然后我就想到, 用Attribute的方式, 为需要校验的对象属性加上规则, 再用统一的方法去获取并校验数据是否符合规则.Attribute的定义如下:Code highlighting produced by Actipro CodeH... 阅读全文
浙公网安备 33010602011771号