设计
文章平均质量分 64
mfowler
这个作者很懒,什么都没留下…
展开
-
连贯接口
原文:FluentInterface 设计 2005年12月20日 Bliki 索引译注:可结合“领域专用语言(DSL)”和“界定DSL”读本文。更新:Piers Cawley做了精彩的后续讨论。几个月前,我和Eric Evans参加了一个研讨会,他发言的主题是一种特殊风格的接口,我们决定把它命名为“连贯接口”。连贯接口的风格并不常见,但我们觉得应翻译 2006-08-28 00:25:00 · 12449 阅读 · 4 评论 -
Command与Query分离
原文:CommandQuerySeparation 设计 Bliki 索引“Command与Query分离”这条术语首现于Bertrand Meyer的著作《面向对象软件构造(Object Oriented Software Construction)》,这本书是OO思想普及发展初期几本影响力最大的OO著作之一(说的是这本书的第一版,第二版也很好,不过你得先炼几翻译 2006-08-26 00:30:00 · 14666 阅读 · 2 评论 -
Evans氏分类法
原文:EvansClassification 设计 Bliki 索引下边是Eric Evans在他的杰作《领域驱动设计(Domain Driven Design)》中开创的一套针对Domain Objects的分类法,在你的工作中很可能会遇到这些不同分类的Domain Objects。 Entity: 在不同时刻不同表现形式下具有唯一身份标翻译 2006-08-23 12:41:00 · 15232 阅读 · 1 评论 -
懒初始化 与 可见状态
懒初始化原文:LazyInitialization 设计 Bliki 索引一个变量(在OO语境中常为class的一个字段)第一次存取时才被初始化,这项技术叫做懒初始化,其常规形式如下(C#):public FooClass Foo { get { if (_foo = null) _foo = calculateFoo(); return _foo翻译 2006-08-24 12:12:00 · 9949 阅读 · 1 评论 -
后现代主义编程
原文:PostModernProgramming 设计 Bliki 索引一种由James Noble和Robert Biddle两人提出的编程思想。其精髓如下(仅代表个人观点):长久以来,软件开发的现代派观点认为,优秀的软件系统以统一而简单的方式由统一的组件构成(Smalltalk和Lisp就是这种思想的好例子);而后现代主义观认为,软件是由各种各样风格迥异的东翻译 2006-08-11 17:30:00 · 9130 阅读 · 2 评论 -
领域专用语言(DSL)
原文:DomainSpecificLanguage 设计 2004年2月13日 Bliki 索引所谓领域专用语言(domain specific language / DSL),其基本思想是“求专不求全”,不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言。几乎自计算机发明伊始,人们就开始谈论DSL使用DSL了。Un翻译 2006-08-16 12:50:00 · 64195 阅读 · 3 评论 -
应用式数据库 VS 集成式数据库
应用式数据库原文:ApplicationDatabase 设计 Bliki 索引 我用“应用式数据库”这个术语来描述一个由单一应用系统控制和访问的数据库,与之对应的概念是“集成式数据库”。因为只有一个应用访问这个数据库,所以可以量体裁衣,数据库设计越能方便地满足应用的需求也就越“合身”,这使得表结构非常具体化,通常比集成式数据库的设计更简单,更容易理解。为了与其翻译 2006-08-09 03:45:00 · 10202 阅读 · 2 评论 -
报表数据库
原文:ReportingDatabase 设计 2004年4月2日 Bliki 索引如果我采用了领域模型(Domain Model),如何支持特定的SQL查询呢?领域模型的要点之一就是在应用数据身上添加重要的操作方法。如果你想为数据生成报表,领域模型可提供大力支持。但是,现存的许多报表工具不支持领域模型,它们都是直接用SQL与数据库交互的。该怎样处翻译 2006-08-07 22:15:00 · 6841 阅读 · 2 评论 -
软件开发态度
原文:SoftwareDevelopmentAttitude 设计 2004年3月8日 Bliki 索引更新:请参阅Steve Freeman的后续讨论。许多关于软件开发的论战都是以参战者是持督导态度还是持授权态度为背景根基展开的。这两种不同的态度至关重要,影响到对语言、设计、工具、过程等诸多方面的选择。下边就是几个说明这种二元对立的例子:翻译 2006-07-29 09:54:00 · 7235 阅读 · 3 评论 -
内存测试数据库
原文:InMemoryTestDatabase 设计 2005年11月22日 更新见文末。 运行时完全在内存里无需访问硬盘的数据库叫做“内存数据库”。内存数据库常作为嵌入式数据库:当一个进程启动时被创建,嵌入到这个进程中运行,当进程终止时被销毁。 尽管大家一般都认为数据库应该是个以硬盘为中心的庞大部件,实际上还存在一个狭小而热闹的内存数据库世界。有些应用系翻译 2006-07-23 17:53:00 · 5279 阅读 · 2 评论 -
发布接口
原文:PublishedInterface 设计 2003年12月26日我是在《重构》里第一次使用“发布接口(Published Interface)”这个术语的,如果一个class接口在定义它的代码库(code base)以外也被用到了,那它就成了一个发布接口。它比Java的public公开的意味更足,也远甚于C#的非内部public(non- internal public翻译 2006-07-25 11:31:00 · 3242 阅读 · 1 评论 -
最小接口
原文:MinimalInterface 设计 Bliki 索引所谓最小接口,其设计风格与人本接口形成鲜明对照,它背后的主旨是设计一套API不仅能满足用户完成所有操作的需求,还要把这种能力积聚到一个最精简的方法集合上。(两者的区别请参考人本接口里的例子。)拿人本接口里的例子“Ruby-Array VS Java-List”来说,既然List已经有了取索引位置处元素翻译 2006-10-19 08:03:00 · 18836 阅读 · 9 评论 -
人本接口
原文:HumaneInterface 设计 2005年12月5日 Bliki 索引(更新频繁,见文尾增添的链接。)在Ruby用户群中混迹了一段时日,我经常见到“人本接口”这个术语。“人本接口”体现了Ruby大虾们设计class接口时的态度,此外,我觉得它还与另一个学派(最小接口)在设计API的思路上形成了有趣的对照。人本接口的本质思想是找出人们想要翻译 2006-10-19 07:57:00 · 16483 阅读 · 5 评论 -
语义diff
原文:SemanticDiff 设计 Bliki 索引多数版本管理系统的实现仰仗着能比较出文件不同版本的变化,通常称作diff,源自Unix比较版本变化的命令。针对文本和二进制文件都有优秀的diff (以及merge)算法了,但这些diff工具的弊病是它们都非常愚钝,只会傻乎乎地对比两个版本,简单地告诉你怎么从一个版本变成另一个。如果diff有了语义,它翻译 2006-09-11 10:22:00 · 8796 阅读 · 1 评论 -
界定DSL
原文:DslBoundary 设计 2006年8月1日 Bliki 索引当说起"领域专用语言(Domain Specific Language / DSL)"这个话题时,一个常见的难题是"到底什么是DSL什么不是DSL",难就难在根本没有一个精确的定义,是与不是之间存在很大的灰色地带。在我看来,界定一种语言是不是DSL关键是看它在范围和能力这两方面翻译 2006-08-21 11:47:00 · 11074 阅读 · 1 评论