`
chelsea
  • 浏览: 111564 次
  • 来自: ...
社区版块
存档分类
最新评论
文章列表
  无论有没有软件支持, 无论软件是好是坏, 世界各地每个领域每天都发生着数以亿计可以理解的业务 领域驱动设计是一种设计方法, 试图解决的问题是软件的难以理解, 难以演化. 采用的方法是围绕业务概念来构建模型. 不过 ...
商场影院博物馆等公共场所的女卫生间前总是要排队, 相信陪LP逛街看电影的同学一定深有体会. 一直很奇怪那些新兴场馆的设计者就不觉得这是个问题吗? 为什么男女卫生间的比例缺省就该是1:1呢? 一直觉得这个问题解决方案很 ...
网上有很多关于简单设计的争论. 观察了一下发现大家其实在说两个问题:一个是作为结果的简单设计,一个是作为过程的简单设计. 说一下我的理解. 做为结果的简单设计是这么一种设计,它能被几乎所有人理解, 但只有极少数人能做出. 或者反过来说也可以. 简单设计是一种只有极少数人能做出的设计,但设计一旦做出后,<wbr></wbr>能被所有人理解. 宏观物理世界这么复杂,但牛顿用三个定律就描述清楚. 质能方程E=MC2是另外一个例子. 如果这个定义是成立的, 那么可以有一个推论: 如果team得到了一个大多数人都理解的“简单”设计, 它是经验较少的人和经验较多的都会做出的, ...
  See also: <<Enterprise REST = Customize, Invent and Standardize Media Types>>   MVC和REST是两种不同的世界观. 前者更多的是对行为的建模,后者则更强调数据(状态及状态的变迁). 前者给出的是内部实现方面的指导, 把程序结构分离为Model, View及Controller. 后者提供的则是从外部观察系统的视角: 一组被超媒体诱导的系统变迁.   MVC和REST从两种不同的维度来描述世界, 而不是同一纬度上两种相反的观点, 因此基于现存的大量MVC框架来开发符合R ...
  关于REST, 经常容易引起困惑的一个问题是:在 Machine-to-machine 的 REST 应用中, 客户端怎么可能在没有任何预先知识的情况下就能跟随服务器端返回的超文本来自适应的将应用程序逻辑进行下去? 答案是不可能 . Client端必 ...
    问题: 如何减少跟某个客户了解和确认并实现了的需求却被他的同事推翻需重新设计和实现   具体的原因有很多,其中一点是一开始没找对人.   一个项目,客户那边的stakeholder通常不止一个人,这些人有自己负责的领域 ...
  没有什么事情是理所当然的. 我反而有点希望最终的结果是大家同意在smoke测试失败的时候可以继续提交. 为什么会反复出现一件看起来不应该发生的事却一再发生, 直到Team中的某个人忍无可忍跳出来干预呢? 一个原因在于你 ...
网上已经有很多详细解释性能测试, 容量测试, 负载测试, 压力测试各自的概念, 之间的联系以及区别, 还有骡子背东西等生动的例子...这里按自己的理解re-statement一下 其实所有的一切都只是几个因素的相互作用, 互为函数: 并发量/数据量 机器配置 单个请求处理速度 稳定运行时间 A: 给定并发量/数据量,机器配置, 和必须的稳定运行时间,求单个请求处理速度(Example:所有请求都能在2秒内完成)B: 给定并发量/数据量,必须的稳定运行时间,必须的单个请求处理速度,求最低机器配置(Example:需要4CPU, 16G Memory才能支撑前面的那些需求)C ...

IoC 问题域

    博客分类:
IoC避不开的一个问题是如何处理应用程序的模块化, 因为IoC通常针对单个对象提供了良好的支持, 比如依赖管理,生命周期管理,部署时配置甚至运行时配置, 但往往一组内聚的互相协作的对象才构成应用程序基本的构建块. 这组内 ...

Log 问题域

    博客分类:
  如何不带来额外的效率损失 如何在程序运行出错时记录尽可能多的信息 如何方便查找特定条件的错误 如何横切的添加通用信息   如何不带来额外的效率损失 在之前接触的一个大型产品中见过散布着如下代码: if (Log.L ...

Validation 问题域

    博客分类:
谁来做Validation 何时做Validation 如何表达错误 如何传递错误 如何关联错误到发生错误的对象, 尤其是对象图中非Root对象 这里的Validation指的是对进入到系统中的业务数据的校验(不包括Web应用中页面数据在浏览器端的验证) 谁来做Validation 数据的有效性不是自身所能决定的, 而是使用它的场景(Context)决定的, 因此, 每个Context应该有自己的Validation逻辑. 一个例子, 个人信息残缺, 比如婚姻状况没填, 但联系地址电子邮件等信息完备, 那么这个个人信息到底是合法还是非法? 如果你的应用是个税务相关的应 ...

代码的物理组织

    博客分类:
同一个Feature的代码要放在一起(IDE里单独的一个工程, 或者工程里单独的一个文件夹), 这些代码要么全有要么全无的, 它们合作完成一个Feature, 如果用户不再需要这个Feature了, 可以把它们整个的痛快的删掉, 不会留下谁也用不到的代码成为系统的垃圾. 如果想看一个Feature是如何实现的, 那所有相关代码都在一起, 不需要在庞大的代码库中跳来跳去. 那么理想的情况就是: 你看看源代码树里所有工程文件的名字, 或者文件夹的名字, 就知道系统提供了哪些功能, 它可以跟你的需求描述对应起来, 无论用User Story还是Use Case, 都可以用它们的名字作为工程名或者文件 ...
在.Net/C#项目中采用project(*.csproj)来组织代码比用同一个project不同的文件夹来组织有几个好处: 从客户代码的角度, 我依赖你很少一点东西, 可以就只依赖这点东西(做成单独的project), 不需要依赖其它无关的代码 从访问控制, Visibility 的角度, C#的internal关键字是针对物理模块的, 即dll的, 而不是名称空间或文件夹 从避免双向依赖的角度, Visual Studio会阻止两个project之间的双向依赖, 却不会阻止同一个project内不同文件夹或名称空间之间的依赖 从部署的角度, 部署的单位是dll, 如果有分开部署, ...
1. 经典的Visitor模式(循环依赖)       public interface Document     {         void Accept(DocumentVisitor visitor);     }       public class WordDocument : Document     {         public void Accept(DocumentVisitor visitor)         {             visitor.Visit(this);         }     }       publi ...

ORM问题域

    博客分类:
  假设我们必须处理对象的存储, 加载, 和查询. 性能和引用完整性的约束, 给接口的实现带来了以下问题: 加载根对象时如何避免加载大半个数据库 存储时如何更新整个对象图 存储时如何高效的更新整个对象图 何 ...
Global site tag (gtag.js) - Google Analytics