期间:2006
角色界面
通过查看供应商和消费者之间的特定交互来定义角色接口。供应商组件通常会实现多个角色接口,每个角色接口对应于这些交互模式。这与HeaderInterface,供应商将只有一个接口。
大屏幕
如何提高软件开发人员的生产力?
Web2.0
在过去的几年里,有很多关于Web 2.0的讨论,包括它的概念和它的价值新词的使用.我在这方面的参与是有限的,我读过和听过蒂姆·奥莱利关于这个话题的文章,还参加过他组织的研讨会。然而,有很多困惑,所以我想是时候做一个徒劳的尝试来减少这种困惑了。(因为大部分是我在解释蒂姆,所以如果我们有什么意见相左,你应该相信他。)
语义扩散
我有创造的习惯新词的使用这是我在软件开发中看到的东西。华体会登录网址这在这个领域的作者中是一个常见的习惯,因为软件开发仍然缺乏很多有用的术语。华体会登录网址建立行话的一个问题是,在语义扩散的过程中,术语很容易失去它们的意义——在我们的行话中使用另一个潜在的附加元素。
新词的使用
新词:
1:新词、新用法或新表达。
2:一个精神病患者创造的毫无意义的词。
如果你读了我的很多文章,你会很快注意到我是一个强迫性的新词创造者。我总是在寻找新的单词和短语,事实上这个bliki就是围绕这个习惯设计的。
功能奉献
敏捷方法的一个常见的,也许是占主导地位的实践是为正在构建的软件开发一系列特性(通常称为故事)。这些特性可以通过索引卡、工作队列、燃尽表、积压表或任何您所选择的工具来跟踪。
内部Dsl的风格
内部DSL(通常称为嵌入式DSL)是一个DomainSpecificLanguage它是用现有的宿主语言编写的。这是许多编程语言社区(特别是Lisp社区)的一种常见思维方式。它现在获得了很多关注,因为在快速发展的Ruby社区中,dsl是一种常见的思维方式。
对象的母亲
对象母类是一种在测试中用于帮助创建用于测试的示例对象的类。
改进的峡谷
如果你在乎你所做的事,你在乎的是如何做得更好。这包括反思你是如何做事的,并尝试新的技术,看看它们是否能让你变得更好。即使别人推荐新的技巧,你知道它们是否对你有效的唯一方法就是自己去尝试,看看它们是否能提高你的表现。
设计的继承
在面向对象的圈子里,持续时间最长的争论之一是OpenInheritance和设计的继承。设计继承的原则可能是最好的总结乔什•布洛赫:“为继承设计和文件,否则禁止它”。使用这种方法,您需要小心地决定哪些方法可以继承和密封其他的是为了防止它们被覆盖。
敏捷实施
根据敏捷联盟的现任董事会,敏捷方法已经“跨越鸿沟”我认为这意味着它们正变得越来越普遍。虽然这有它的优点,但它也带来了问题。当一种方法或设计方法变得流行时,我们看到很多人在使用或教授它,他们关注的是时尚而不是真正的细节。这可能会导致以敏捷的名义所做的事情与运动创始人的原则截然相反。
投票机
我以前说过(在本页的早期版本中)我无法理解一个没有清晰可审核的书面记录的投票机怎么会被认为可以进行投票。对这一观点的进一步支持是最近的研究这表明颠覆普通投票机是多么容易。(通过Glenn Vanderburg)
普遍的版本控制
最近,苹果公司宣布时间机器这是一种能够回到过去,查看文件的所有更改,包括查找被删除的文件的功能。对于我们这些狂热的极客来说,这并不是什么新功能。和其他人一样,我将整个工作目录置于版本控制之下,最初是CVS颠覆这样,我就有能力轻松查看我所从事的所有工作的所有更改。这是一个非常有用的功能,我以前就想过如果拥有它会是什么样子MoreVersionControl,也许《时间机器》就是朝这个方向迈出的一步。
无准备的演讲
不久前Jon Udell描述了两种公开演讲模式:
- 照本宣章:你把你要说的话几乎完全写出来,然后阅读或背诵。
- 幻灯片驱动:你制作详细的幻灯片,并用它们来驱动你所说的内容。
这些天我的大多数公开演讲都使用第三种模式——即席演讲。在这种风格中,我一开始只对我的演讲做一个大致的提纲,然后再把其余的内容写好。
编写软件模式
我花了很多精力在写作模式上。不时有人问我为什么这样做,什么是好的模式。这是一篇简短的文章,介绍了我如何看待模式,以及我对那些自己对编写模式感兴趣的人的建议。
Dsl边界
当话题DomainSpecificLanguage最常见的问题之一就是到底什么是DSL,什么不是DSL。问题是DSL没有精确的定义,而且DSL和其他东西之间有很大的灰色地带。
客户亲和力
当人们审视顶级企业软件开发人员的构成时,谈话往往会转向框架和语言的知识,或者可能是理解复杂算法和数据结构的能力。对我来说,程序员或开发团队最重要的特征之一是我称之为“客户亲和力”的东西。这是开发人员对软件所解决的业务问题以及生活在商业世界中的人们的兴趣和密切程度。
GUI架华体会体育网页版入口构
对GUI架构如何发展的历史概述,特别关注模型-视图-控制器在过去几年里是如何被不同的团体所看待的。从历史的角度来看,与我的演讲模式有关。
使用离岸开发的敏捷软件过程
在过去的四年里,Thoughtworks在印度班加罗尔运营了一个实验室,以支持我们在北美和欧洲的软件开发项目。华体会登录网址传统的离岸开发方法是基于计划驱动的方法,但我们非常坚定地站在敏捷阵营。在这里,我将讨论我们在进行离岸敏捷开发中获得的经验和教训。到目前为止,我们已经发现我们可以做到这一点,尽管其好处仍有待商榷。(虽然这篇文章上次更新是在2006年,但我在2011年访问了我们的海上工作,发现经验教训仍然相关,因此这篇文章不需要进一步的重大修改。)
组织表示逻辑
用户界面模式的叙述概述。讨论如何以及为什么将域逻辑与表示分离,以及如何分离和同步数据层。
撰写敏捷宣言
2001年2月,17位软件专家在Snowbird UT聚会,讨论过去被称为轻量级方法的不断发展的领域。我们决定用敏捷这个术语来描述这种新的敏捷方法.我们还写了敏捷软件开发宣言华体会登录网址,阐述这些敏捷过程的价值和原则。我是这些自封为梦想家的人之一,从那以后,我遇到了许多关于这个团体的起源和敏捷联盟随后的成立的问题。这是我对那些事件的回忆。
Buildix
我已经说过很多次了持续集成.要使这样的环境工作,您需要一个持续集成服务器和一个源代码控制系统。为了使项目顺利运行,您还可以使用问题跟踪器来跟踪bug之类的东西,还可以使用wiki来帮助捕获各种项目知识。
RailsConf 2006的主题
和我的大多数主题一样,这是一个无准备的演讲.这次会议的主题是rails如何影响软件开发。华体会登录网址
维基百科的死亡
尼古拉斯·卡尔最近在博客圈发表的一篇文章引发了一场争议。维基百科的死亡(是的,我知道我的反应很慢,但我在路上没有时间写)。他最初的帖子让我觉得很奇怪,他说维基百科正在消亡,因为0.01%的文章受到了相当温和的保护。这就像当一个小镇雇佣了一名警察时,就说民主已经结束了。
Ruby Ploticus
在我最近的一篇文章中EvaluatingRuby我提到一个同事用一些花哨的数字图表制作了一个网页应用程序。有人发邮件问他是怎么做到的。我在最初的bliki条目中添加了简短的答案,ploticus,但这导致了一个问题:他是如何将ruby与ploticus结合在一起的?
消费者驱动契约:一种服务演化模式
本文讨论了在演化服务提供者和使用者社区时所面临的一些挑战。它描述了服务提供者更改部分契约(特别是文档模式)时产生的一些耦合问题,并确定了两种很好理解的策略——添加模式扩展点和对接收到的消息执行“刚刚好”的验证——以缓解这类问题。这两种策略都有助于保护消费者不受提供者契约变更的影响,但它们都没有让提供者了解使用它的方式以及它在发展过程中必须维护的义务。利用这些缓解策略中的一种基于断言的语言——“刚刚好”验证策略——然后,本文描述了“消费者驱动契约”模式,该模式使提供者深入了解其消费者义务,并将重点放在围绕消费者所需的关键业务功能的交付的服务演进上。
手风琴
在过去的几年里我们最喜欢的玩具之一是手风琴.这是一个非常简单的设备——大约一个路由器的大小,有用于电源、以太网、放大器和无线局域网的天线端口。它的工作是从服务器获取mp3文件流,并通过放大器播放它们。
转向代码所有权
在我最近的CodeOwnership在这篇文章中,我描述了我思考代码所有权问题的方式。我的许多软件开发朋友都华体会登录网址是极端的程序员,倾向于集体代码所有权。然而,这些做法并不是绝对的,应该根据当地的考虑加以调整。我的一个同事给我发送了一个带有以下故事的注释,我认为它很好地说明了什么时候您必须改变您的实践,即使您是XP的狂热爱好者。(在谈论自己的团队时,他更喜欢匿名。)
淹没了
关注新闻的人可能已经注意到,新英格兰地区遭遇了一场春季大风暴,引发了大量洪水。我住在梅尔罗斯,那里正处于雨中,我们这个周末下了近10英寸的雨。人们说,自从1938年的飓风以来,再也没有像这样的飓风了,尽管与世界上其他一些地方在过去几年遭受的灾害相比,这只是一件小事。
代码所有权
我遇到过各种各样的代码所有权方案。我把它们分为三大类:
评估红宝石
如果你正在阅读这篇文章,我想你已经意识到一个事实:关于Ruby编程语言,特别是用于开发web应用程序的Rails框架,已经有了大量的关注。有人认为这是编程的未来,也有人认为这是一种危险的转移。
持续集成
持续集成是一种软件开发实践,其中团队成员经常集成他们的工华体会登录网址作,通常每个人至少每天集成—导致每天进行多次集成。每个集成都通过自动构建(包括测试)进行验证,以尽可能快地检测集成错误。许多团队发现这种方法大大减少了集成问题,并允许团队更快地开发内聚软件。本文是持续集成的快速概述,总结了该技术及其当前的使用。
Thoughtworks英国
在过去一个月左右的时间里,我一直在我们的英国办公室里闲逛,与各种各样的英国思想工作者交流。我本来打算去拜访一些客户的项目,但仅仅是和办公室里和周围的人聊聊就已经让我非常忙了(这也抹去了所有写书的进度,但那可以等我回家后再说)。
Getter去污剂
当他们看到一个getter方法时,你可以从他们的左手嘴角的抽搐中看出这一点,他们会迅速地拉他们的战斧,并在另一个getter被无情地从一个类中挖出来时发出满意的叫声,而这个类会立即在充满感激的getter Eradicator的脚前狂喜。
代码味道
代码气味是一种表面的指示,通常对应于系统中更深层次的问题。这个词是肯特·贝克在帮我做我的华体会app下载二维码书。
构造函数初始化
构造函数初始化是在对象的创建方法中传入对象所需的所有协作者的一种方法。这是一种替代方案SetterInitialization.
基座恐惧症
作为一名作家,我的成功带来的副作用之一是,我成了一个小极客名人。它非常小,通常只在极客会议上起作用(尽管在旧金山的一家餐馆里有几次有人向我走来)。在这件事发生之前,我真的没有想太多,除了对名声的轻微渴望。现在事情发生了,我更清楚了——总之,我讨厌它。
关注事件
将企业应用程序视为对外部事件做出反应的系统,这是一种最长的运行方式。这是一种思维方式,在80年代后半叶的结构化设计社区中形成。你现在听说它是在“事件驱动架构”的旗帜下。华体会体育网页版入口在2000年代中期,我开始为这类系统收集一些模式,但从那以后就没能把它们变成更实质性的东西。尽管它们粗糙且现成,但我确实认为它们提供了一些关于事件协作本质的有用想法,介绍了术语“事件来源”,使用并行模型表示世界的假设状态,以及如何使用协议分派器组织域逻辑。
关注事件
一种模式叙述,它研究如何将事件用作系统如何操作和与对等体协作的焦点。概述如何表示事件、如何使用事件在系统之间集成以及如何在系统体系结构中使用事件源。华体会体育网页版入口
会计模式
对会计有用的模式叙述。包含帐户、分录和交易的基本表示,以及进行会计调整的模式概述。
可以观察到的状态
当人们说一个方法不改变对象的可观察状态时,这是什么意思?
测试不变
契约式设计(DbC)和测试驱动开发(TDD)的提倡者之间一直存在着一种长期的、低调的争论。我现在不打算深入讨论这个问题,但我会提出一个想法,把这两者结合起来,这是我在和他们交谈时想到的丹尼尔·杰克逊.
隐式接口实现
Java和c#共享相同的纯接口类型模型。声明一个纯接口的方法是接口可邮寄的
,然后就可以用它来声明实现类Customer实现Mailable
(在Java)。一个类可以实现任意数量的纯接口。这个模型忽略的一件事是隐式的接口,只要您有一个类。