自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Martin Fowler's Bliki 中文版

记录Martin Fowler关于软件开发想法片断的blog与wiki的交叉体

  • 博客(41)
  • 收藏
  • 关注

翻译 最小接口

原文:MinimalInterface    设计            Bliki 索引所谓最小接口,其设计风格与人本接口形成鲜明对照,它背后的主旨是设计一套API不仅能满足用户完成所有操作的需求,还要把这种能力积聚到一个最精简的方法集合上。(两者的区别请参考人本接口里的例子。)拿人本接口里的例子“Ruby-Array VS Java-List”来说,既然List已经有了取索引位置处元素

2006-10-19 08:03:00 18691 9

翻译 人本接口

原文:HumaneInterface    设计        2005年12月5日            Bliki 索引(更新频繁,见文尾增添的链接。)在Ruby用户群中混迹了一段时日,我经常见到“人本接口”这个术语。“人本接口”体现了Ruby大虾们设计class接口时的态度,此外,我觉得它还与另一个学派(最小接口)在设计API的思路上形成了有趣的对照。人本接口的本质思想是找出人们想要

2006-10-19 07:57:00 16366 5

翻译 RubyPloticus

原文:RubyPloticus    ruby        2006年6月19日            Bliki 索引译注:代码和生成的图片示例可从这里下载。在最近的帖子“评估Ruby”中,我提到一位同事曾在一个Web应用中加入了一些漂亮的数据图表,有人email问我是怎样实现的,我在原来那篇帖子上添了句简短的回答:用Ploticus。这就带来另一个问题——他是怎样把Ruby和Plot

2006-09-20 18:12:00 11030 2

翻译 让版本管理遍地开花

原文:PervasiveVersioning    工具        2006年8月21日            Bliki 索引最近Apple发布了Time Machine,能让时光倒流来查看你的文件的所有修改,包括找回已删除的文件。对我们这些狂热的极客(geek)来说,这并不是什么新玩意。和别人一样,我把整个工作目录都放到版本工具的管理下,开始用的是CVS,现在用Subversion

2006-09-14 12:33:00 14349 1

翻译 多台桌面电脑

原文:MultipleDesktops    写作            Bliki 索引一两年前,我工作生涯的一个重要方面发生了变化,那之前我一直只在一台电脑上工作(更确切地说是只用一块硬盘),所有工作文件都保存在我的笔记本硬盘里。如果我要用另外一台桌面电脑,就通过文件共享操纵那些文件。自从去年我买了PowerBook事情就变了,现在我经常转战于三台机器:Mac PowerBook、Wi

2006-09-12 20:22:00 14903 1

翻译 更广泛的版本管理

原文:MoreVersionControl    写作        2004年12月6日            Bliki 索引译注:“Version Control”一般称为“版本控制”或“版本管理”,这里统一称“版本管理”。作为版本管理工具的重度用户,我觉得它们在计算机中可以用得更广泛。目前的计算机用户中,除了软件开发者别人很少会用版本管理,但做软件的都知道它对协同工作的意义实在太重

2006-09-11 10:33:00 12431 1

翻译 语义diff

原文:SemanticDiff        设计            Bliki 索引多数版本管理系统的实现仰仗着能比较出文件不同版本的变化,通常称作diff,源自Unix比较版本变化的命令。针对文本和二进制文件都有优秀的diff (以及merge)算法了,但这些diff工具的弊病是它们都非常愚钝,只会傻乎乎地对比两个版本,简单地告诉你怎么从一个版本变成另一个。如果diff有了语义,它

2006-09-11 10:22:00 8738 1

翻译 即席演讲

原文:ExtemporarySpeaking    写作        2006年8月18日            Bliki 索引不久前Jon Udell把公开演讲根据其特点划分为两类: 按稿讲:先把要讲的几乎一字不漏地写出来,之后或者照着念或者把写出的东西背过。 按幻灯片讲:先做出详尽的幻灯片,跟着幻灯片讲。我多数的公开演讲是另外一类——即席演讲

2006-09-07 09:38:00 10202 1

翻译 翻译

原文:Translations    写作        2006年8月1日            Bliki 索引不仅有人愿意把自己宝贵的工作时间浪费在阅读这个博客上,而且还有人愿意翻译它。我很欢迎一份中文翻译版加入,现在正在由马皓明做这件事。我被告知自己拥有广大的中国读者,我很欢迎他们来这里看我这些不甚成熟的想法。在页面边侧,可以找到多种语言翻译版本的永久链接。译者的话借这篇帖子说一下

2006-09-04 06:52:00 9706 8

翻译 评估Ruby

原文:EvaluatingRuby    ruby        2006年5月10日            Bliki 索引既然你读到这篇文字,我猜你已经知道人们对Ruby这门编程语言吵得不可开交了,尤其是对Rails这个Web应用开发框架更是吵得一塌糊涂。有人说它是编程的未来,前途光明;有人说它是旁门左道,危险暗淡。我是在几年前开始用Ruby的,当时用本主义引起了我的兴趣,Ruby很快

2006-09-02 16:11:00 17003 18

翻译 以例为规

原文:SpecificationByExample(译注1)    敏捷        2006年6月16日            Bliki 索引译注1:以例为规,“例”即测试涉及到的例子,这里主要是指验收测试(Acceptance Testing);“规”即软件规格说明书,以下简称“规格”;“以例为规”即以测试涵盖的例子作为规格,后文也作“范例规格”。Cedric Beust最近的一篇

2006-08-30 14:23:00 9704 4

翻译 连贯接口

原文:FluentInterface    设计        2005年12月20日            Bliki 索引译注:可结合“领域专用语言(DSL)”和“界定DSL”读本文。更新:Piers Cawley做了精彩的后续讨论。几个月前,我和Eric Evans参加了一个研讨会,他发言的主题是一种特殊风格的接口,我们决定把它命名为“连贯接口”。连贯接口的风格并不常见,但我们觉得应

2006-08-28 00:25:00 12402 4

翻译 Command与Query分离

原文:CommandQuerySeparation    设计            Bliki 索引“Command与Query分离”这条术语首现于Bertrand Meyer的著作《面向对象软件构造(Object Oriented Software Construction)》,这本书是OO思想普及发展初期几本影响力最大的OO著作之一(说的是这本书的第一版,第二版也很好,不过你得先炼几

2006-08-26 00:30:00 14478 2

翻译 懒初始化 与 可见状态

懒初始化原文:LazyInitialization    设计            Bliki 索引一个变量(在OO语境中常为class的一个字段)第一次存取时才被初始化,这项技术叫做懒初始化,其常规形式如下(C#):public FooClass Foo {  get {    if (_foo = null) _foo = calculateFoo();    return _foo

2006-08-24 12:12:00 9888 1

翻译 Evans氏分类法

原文:EvansClassification    设计            Bliki 索引下边是Eric Evans在他的杰作《领域驱动设计(Domain Driven Design)》中开创的一套针对Domain Objects的分类法,在你的工作中很可能会遇到这些不同分类的Domain Objects。     Entity: 在不同时刻不同表现形式下具有唯一身份标

2006-08-23 12:41:00 15159 1

翻译 界定DSL

原文:DslBoundary    设计        2006年8月1日                Bliki 索引当说起"领域专用语言(Domain Specific Language / DSL)"这个话题时,一个常见的难题是"到底什么是DSL什么不是DSL",难就难在根本没有一个精确的定义,是与不是之间存在很大的灰色地带。在我看来,界定一种语言是不是DSL关键是看它在范围和能力这两方面

2006-08-21 11:47:00 11013 1

翻译 领域专用语言(DSL)

原文:DomainSpecificLanguage    设计        2004年2月13日            Bliki 索引所谓领域专用语言(domain specific language / DSL),其基本思想是“求专不求全”,不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言。几乎自计算机发明伊始,人们就开始谈论DSL使用DSL了。Un

2006-08-16 12:50:00 64018 3

翻译 企业级Rails

原文:EnterpriseRails    Ruby        2006年7月11日            Bliki 索引摘要:“企业级Rails”这种说法大可视作自相矛盾,但说成“企业级Ruby”就是两回事了。核心Rails窄小集中,而Ruby世界(包括 Rails)宽广发散——持这种观点可以做到不偏废,其精髓就是小巧工具结合起来威力无穷。Rails已明确了自己的取向,留下的缺口将

2006-08-14 11:57:00 23877 8

翻译 后现代主义编程

原文:PostModernProgramming    设计            Bliki 索引一种由James Noble和Robert Biddle两人提出的编程思想。其精髓如下(仅代表个人观点):长久以来,软件开发的现代派观点认为,优秀的软件系统以统一而简单的方式由统一的组件构成(Smalltalk和Lisp就是这种思想的好例子);而后现代主义观认为,软件是由各种各样风格迥异的东

2006-08-11 17:30:00 9065 2

翻译 应用式数据库 VS 集成式数据库

应用式数据库原文:ApplicationDatabase    设计                Bliki 索引 我用“应用式数据库”这个术语来描述一个由单一应用系统控制和访问的数据库,与之对应的概念是“集成式数据库”。因为只有一个应用访问这个数据库,所以可以量体裁衣,数据库设计越能方便地满足应用的需求也就越“合身”,这使得表结构非常具体化,通常比集成式数据库的设计更简单,更容易理解。为了与其

2006-08-09 03:45:00 10130 2

翻译 报表数据库

原文:ReportingDatabase   设计      2004年4月2日            Bliki 索引如果我采用了领域模型(Domain Model),如何支持特定的SQL查询呢?领域模型的要点之一就是在应用数据身上添加重要的操作方法。如果你想为数据生成报表,领域模型可提供大力支持。但是,现存的许多报表工具不支持领域模型,它们都是直接用SQL与数据库交互的。该怎样处

2006-08-07 22:15:00 6743 2

翻译 客户亲和力

原文:CustomerAffinity    敏捷        2006年7月28日            Bliki 索引当人们一谈起“具备哪些技能方可成就一名顶级的企业软件开发者”,话题常会转入“要掌握框架和语言”,或者“要能理解复杂的算法和数据结构”。依我之见,不论是对一名程序员还是一个开发团队,最重要的品质却是另外一样东西——我称之为“客户亲和力”——就是看开发者有没有兴趣密切地

2006-08-04 12:23:00 4714 2

翻译 取悦你的客户

原文:PleasingTheCustomer(译注1)    敏捷        2003年8月15日            Bliki 索引开发者与系统最终受益客户面对面的交互非常重要,所有敏捷方法都强调这一点;而且还必须是频繁的交互,正如敏捷宣言里所讲“项目开展的整个过程中,业务人员和开发者必需每天都在一起工作”。极限编程通过临场客户实践来强调这一点。开发者与客户的交互之所以这么受大家

2006-08-03 22:22:00 4505 1

翻译 临场客户

原文:OnsiteCustomer        敏捷            Bliki 索引 临场客户是白皮书(译注1)里十二条XP实践里的一条,具体意思是:客户需要亲临开发者开放的工作空间现场,这样他们能随时回答问题,还可以随时与开发团队沟通。实际上临场客户是开发团队的一分子,军功章有开发者的一半,也有临场客户的一半。XP里的这种客户来自组织机构的业务方,而非开发方,他们是这个系统的最终受益者

2006-08-02 23:46:00 3150 1

翻译 调转代码所有权

原文:ShiftingToCodeOwnership        敏捷    2006年5月15日            Bliki 索引 在最近那篇代码所有权的帖子中,我描述了一下对代码所有权问题的思考。在软件开发行业里,我有不少朋友都是极限编程实践者,他们都对集体代码所有权偏爱有加,但推行代码集体所有并不是绝对的,往往需要根据对局部具体情况的考量做出调整。我的一位同事发给我下面这个实

2006-07-31 13:47:00 3296

翻译 软件开发态度

原文:SoftwareDevelopmentAttitude        设计    2004年3月8日            Bliki 索引更新:请参阅Steve Freeman的后续讨论。许多关于软件开发的论战都是以参战者是持督导态度还是持授权态度为背景根基展开的。这两种不同的态度至关重要,影响到对语言、设计、工具、过程等诸多方面的选择。下边就是几个说明这种二元对立的例子:

2006-07-29 09:54:00 7119 3

翻译 人本导向

原文:PeopleOriented        敏捷    2004年1月12日            Bliki 索引敏捷方法令许多人难以理解的精华思想之一即其人本导向(people orientation)。敏捷过程爱好者们有一个共识:过程对于项目能否取得成功只是次级重要的。“敏捷宣言”的头条即“个体及个体间的交互重于过程和工具”。Bill Caputo写了一篇好文(译注1)来说明这一观念上

2006-07-27 14:11:00 3902 1

原创 Bliki 索引

敏捷 (RSS)    Agile Buildix    Buildix  代码所有权    CodeOwnership 人本导向    PeopleOriented 调转代码所有权    ShiftingToCodeOwnership临场客户    OnsiteCustomer取悦你的客户    PleasingTheCustomer客户亲和力    CustomerAffinity以例为规 

2006-07-26 18:13:00 6392 1

翻译 代码所有权

原文:CodeOwnership        敏捷    2006年5月12日关于代码所有权,我见过很多种配置方案,我把它们归并成以下三大类:      强代码所有权——把整个代码库划分成多个模块(class、函数、文件),给每个模块指定一名开发者,只允许开发者改动属于自己的模块,如果你需要修改一下别人的模块,你得先告诉那个模块的所有者,让他们去做相应的修改。你可以给那个模块写个修

2006-07-25 11:40:00 5374 4

翻译 发布接口

原文:PublishedInterface        设计    2003年12月26日我是在《重构》里第一次使用“发布接口(Published Interface)”这个术语的,如果一个class接口在定义它的代码库(code base)以外也被用到了,那它就成了一个发布接口。它比Java的public公开的意味更足,也远甚于C#的非内部public(non- internal public

2006-07-25 11:31:00 3164 1

翻译 Buildix

原文:Buildix        敏捷    2006年7月7日持续集成的好处我已经反复说过多次了,要搭起这样一个环境需要一台持续集成服务器,还要有一个版本控制系统。要想让项目进展得有条不紊,那就配置一套问题跟踪系统来管理bug或类似的东西,最后再跑个Wiki来帮着收集和捕获项目相关的各种知识。这有啥难的?——你没准这么想。把上边列的一揽子东西都搭好攒成一个舒服的环境可真是件苦差事。以我们的经验

2006-07-24 10:10:00 3598 1

翻译 内存测试数据库

原文:InMemoryTestDatabase        设计    2005年11月22日 更新见文末。 运行时完全在内存里无需访问硬盘的数据库叫做“内存数据库”。内存数据库常作为嵌入式数据库:当一个进程启动时被创建,嵌入到这个进程中运行,当进程终止时被销毁。 尽管大家一般都认为数据库应该是个以硬盘为中心的庞大部件,实际上还存在一个狭小而热闹的内存数据库世界。有些应用系

2006-07-23 17:53:00 5223 2

原创 Martin Fowler上海交流实录:谈谈敏捷

李锟:我问Martin的第一个问题是:(speak in English)我是一个敏捷软件开发的爱好者,特别是极限编程。我也是一个交互设计和以使用为中心的设计的爱好者。我认为将两种方法论结合在一起可以产生高质量的软件,同时非常好的满足用户的需求。我曾经读过一篇Kent Beck和Alan Cooper在2002年1月的访谈,似乎两种方法论之间存在着一些冲突。我还阅读了Thomas Technolo

2006-06-23 08:46:00 4007 2

原创 Martin Fowler上海交流实录:关于“RUP是楷书,XP是草书”的对话

熊节:我这里有一个来自下面观众朋友的问题,而且这个问题很有趣,还跟林教授有关。据说林教授说过这么一句话:“UP是正楷,XP是草书,先用XP再用UP就会乱套。”我们先请林教授来解释一下。 林教授:我先用英文来翻译一下(speak in English)。欢迎您,你被我们称作教父。我们等你这次演讲足足等了一年。我们非常遗憾地错过你一年之久。 Martin:我保证,我那天非常希望能在酒店

2006-06-23 08:41:00 4581 6

原创 Martin上海演讲实录3:细数Ruby语言优缺点

细数Ruby语言优缺点解释以上这些究竟在做什么显得有些罗嗦了。但是我希望传递的是,使用ruby这个语言时候的体会。尽管你不能自己亲自尝试,但是你可以通过屏幕看到这一系列的过程。现在我想展示另外一个例子。我希望你们可以所看到的内容中,得到一些体会。如果你之前还没有尝试过任何一种脚本语言,那么我鼓励你去学习ruby. 我认为ruby是非常值得学习的。因为它是很容易学习和使用的,只需要花几分钟去

2006-06-19 15:43:00 11239 1

原创 Martin上海演讲实录2:现场演示Ruby编程

早已是大师的Martin,现场与观众一起体验了Ruby编程。现场演示Ruby编程我们现场有多少人使用过ruby进行开发?很惊讶,只是个别人。所以很多人还没有见过ruby,这就是我带笔记本来的原因了。我将演示一下我们究竟能用ruby做什么。这样的话,我们将会对这个语言有一个认识。我现在把话筒放在一边,放好我的笔记本电脑。Ruby是一种立即执行的脚本语言。接下来在编辑器环境中新建一个源

2006-06-19 15:40:00 5954 3

原创 Martin上海演讲实录1:Ruby是一个非常好的开发工具

       2006-6-6,上海交通大学,Martin Fowler先生神采奕奕,精神状态比在北京的敏捷技术大会要好了很多。下午2:00,他准时赶到“上海敏捷专家论坛”现场。讲台上的他,一边激情的做着演讲,一边现场演示着程序,一边响应着专家们的提问,还不时的还接受着粉丝们的签名合影请求。       Ruby是一个非常好的开发工具        我今天想跟大家讨论的主题是ruby.

2006-06-19 15:33:00 7710 5

原创 Martin Fowler 6月3日演讲:人是软件开发中最重要的因素

熊节:我记得大概是在2001年的时候,我们在《程序员》杂志上做了一次技术专题叫做重构。重构这个思想名词谁提出来,就是今天坐在这里的Martin Fowler先生。从01年到05年,我们在中国宣传敏捷的思想已经有好几年,现在我们终于有机会可以面对面的听到Martin Fowler原汁原味的讲"敏捷的思想",现在请掌声欢迎Martin Fowler先生Martin Fowler:谢谢!我喜欢在台上

2006-06-04 09:13:00 5903 11

原创 来自ThoughtWorks的敏捷团队角色定义

推荐的敏捷开发团队有下列角色定义:客户或客户代理,负责定义需求,及需求的优先级别,并验收完成的用户故事。 项目经理,负责将完整的系统交付给客户。业务分析师,(经常会同时担任客户代理的角色), 责任是保证需求和相应的验收标准被完全记录到用户故事中。开发人员,责任是交付代码,满足用户故事上定义的验收标准。测试人员,责任是保证验收测试可以执行,并通过。另外,测试人员也有责任保证系统的总体

2006-06-04 09:11:00 4604 2

原创 首届“敏捷中国”开发者大会 精彩问答

主持人:非常感谢Roy Sniugham给大家带来精彩的演讲和Martin Fowler的抱病坚持,也希望大家多体谅。下面将要宣布一个好消息,对于各位Martin Fowler的读者和敏捷的爱好者来说是一好消息。  大家看到这两网址是我们在CSDN上面为Martin Fowler先生开的两博客:第一个是敏捷技术专家群;下面那个网址是Martin  Fowler的中文博客网址,是昨天刚刚开通。这

2006-06-04 08:57:00 2806 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除