中:2004年
隐喻质疑
正如我工作的普通读者所知道的那样,我非常怀疑使用其他专业的隐喻来推崇软件开发。特别是,我相信工程隐喻已经完成了我们的职业损失 - 因为它鼓励了概念分离设计施工bet188足球。
当我在我们的伦敦办公室闲逛时,这个问题出现在精益制造的背景下,精益制造是敏捷界经常使用的一个比喻——尤其是敏捷界poppendieck。如果我不喜欢土木工程的隐喻推理,我可以从精益制造中更喜欢吗?
更多版本控制
作为一个一直在使用版本控制的人,我认为它可以发展到计算机使用的更多领域。除了软件开发人员,很少有电脑用户使用版本控制。然而,正如软件开发人员所知道的,版本控制是协作工作的一种很好的机制,它允许多人在一个软件系统上协同工作。版本控制被更广泛地使用的好处是什么?
多米尼克
我们最近从我们的年度潜水休假。每当我们这样做时,我们面临困境 - 我们去吗?萨巴还是我们要尝试一些新的东西?我们的答案是去萨巴和其他新的地方,这样就有了一个更长的假期,弥补了从寒冷的东北来的长途旅行。我们的新住处是多米尼克。
OOPSLA 2004.
十年来,我一直在参加Oopsla。它成为我赶上很多朋友的地方,找出他们最近做的事情,并试图了解OO社区正在发生的地方。
在清晰度之前
明确的代码很好,但你应该牺牲明确的可测试性吗?
本地d t o
如果你一直在留在我的家伙ThoughtBloggers你会知道它似乎我的一只禽子已经吹了一个融合,澳大利亚的阳光明显蚕丝这些瑞典模特。
乔恩的烦恼数据传输对象,但dto并不是坏事,就像任何模式一样,它们在特定上下文中都很有用。模式总是由两部分组成:如何使用和何时使用。您不仅需要知道如何实现它们,还需要知道什么时候使用它们,什么时候不使用它们。
静态替代
正如我倾听我们的开发团队谈论他们的工作,一个共同的主题是他们对估计患者的东西不喜欢。通常,我们看到具有静态初始化器的静态变量中的公共服务或组件。静态的大问题之一(大多数语言)是您不能使用多态性来用另一个实现一个实现。这让我们很多,因为我们是测试的伟大粉丝 - 并测试嗯,能够用a取代服务很重要服务存根。
Debian Java.
在Debian上安装大多数东西是可怕的:apt-get安装包名称
。遗憾的是,Java是一个例外,因为它不在基本的debian系统中。最近,我在我的Debian Sid桌面上下载并安装了java 1.5(或者5,或者现在人们叫它什么来着)。简而言之,程序是。
固定范围海市蜃楼
许多公司喜欢撰写合同的想法,以解决范围和价格,因为他们认为它会降低风险。海市蜃楼表示,他们的财务义务是在交易价格上固定的。如果他们没有得到满意的软件,那么它不会花费它们。
lambda.
由于对动态语言的兴趣越来越感兴趣,更多的人正在运行到一个名为Lambdas的编程概念(也称为闭包,匿名函数或块)。来自C / C ++ / Java / C#语言背景的人没有Lambdas,结果不确定它们是什么。这是一个简短的解释,那些做了一种以与他们没有找到这种有趣的语言的体面数量的人。
标准的故事点
我最近听过了几个关于使用极端编程的规划方法的多个团队的标准故事点机制的问题。希望有几个团队都使用同等的故事点,所以一个团队的三层努力与另一个团队相同。
我认为试图想出这些东西,往好里说价值有限,往坏里说很危险。
Magellan Meridian GPS.
几个圣诞节前辛迪给了我一个Magellan Meridian Gold.GPS设备。因为我比一般的熊更擅长导航,所以我并不认为它是我真正需要的东西,而是可以拿来玩的东西。从那以后,我发现它更像是一个有趣的玩具,而不是我真正经常使用的东西。
是优化重构188足球比分直播
如果你为了提高程序的性能而做了一些改变,这算是重构吗?188足球比分直播
快速失败
如果软件进入南方,吉姆在本专栏中解释了为什么它应该尽可能快地折叠。
重构的定义188足球比分直播
在我的188足球比分直播重构的书,我给出了重构的几个定义。188足球比分直播
是宣言订购重构188足球比分直播
是否是改进jav188足球比分直播a程序中的声明顺序的重构,例如在Java程序中的方法和字段?
JUNIT新实例
我经常收到一个围绕其中一个设计选择的问题bet188足球junit.测试框架 - 为每个测试方法运行创建新对象的决定。足以保证快速的Bliki进入。(但是我觉得几乎被迫指出我的关于JURIT的写作并不意味着我不认为其他形式的测试是重要的。有很多有用的测试活动,虽然JUnit及其表兄弟对许多人来说是有价值的其中它不是一切的解决方案。对于更多博客测试,我建议您查看博客布雷特Pettichord那布莱恩马里克,和詹姆斯巴赫。您也不应该假设我关于XUnit测试的写作意味着重构,用例或牙线的不分重。)188足球比分直播
精致的细节
Cindy非常意识到木匠业的良好工艺。她会注意到我忘记的各种细节。她特别欣赏那些看起来不太多的东西,但实际上是令人震惊的。
礼貌的实施
当您编写一个类时,您主要是努力确保该类的特性对该类有意义。但是,在某些情况下,添加一个特性来允许类遵循它本来应该遵循的更丰富的接口是有意义的。
测试资源池
我正在挖掘一些旧笔记,遇到了一个简单但有用的小费,富含克拉扎提给了我。
Belkin Linux Kvm
(鼠标,Belkin KVM Switch和Linux的问题)
开放的知识产权
有很多原因,为什么在思想中努力工作,这很多是因为大多数人都与我分享了广泛的原则。多年来造成一些辩论的人是我们对自己的知识产权的态度 - 实质上我们把它放弃了。
断言免费测试
这是一个朋友的朋友的故事。我相信这一定是真的,至少在某个地方。
安装Debian
最近几个月,我走上了一个主要的安装狂欢debian.Linux。在过去的几个月里,我的设置中看到了很多新环境。我已经收购了一个新的桌面机器,我用MacOS X安装了Windows XP,一个PowerBook膝上型计算机,以及带Windows XP的新工作笔记本电脑。所有这些都涉及各种工作,即使是我的工作笔记本电脑,也涉及一个已在其上配置Windows XP的Chankworkss的笔记本电脑,所需的工作要安装我在工作中使用的各种应用程序。
最重要的设计指南?bet188足球
每个人都有自己的重要设计指南。bet188足球Scott专注于界面以及如何设计界面,使其易于正确使用,而不易不正确使用。bet188足球
资产捕获
资产捕获是开发A的战略StranglerFigApplication。您可以将许多应用程序视为管理一组键的资产。薪资系统照顾员工,交易系统照顾交易,租赁系统照顾租约。要逐渐切断到新系统,可以通过识别您从新系统开始的资产的子集开始。通常最好的资产是简单的资产(因为它们很快就会进入)或那些需要与旧系统处理特别困难的人。
陌生人无图
我和辛迪去澳大利亚的时候,我们在昆士兰海岸的热带雨林里呆了一段时间。这个地区的自然奇观之一是巨大的陌生人图。它们在树的上部分支中种子,逐渐向树上工作,直到它们根在土壤中。多年来,他们成长为美妙而美丽的形状,同时扼杀并杀死他们主持人的树。
被估计
如果您正在使用XP样式规划,您需要从开发人员获得快速共识估算。抛出估计令让您快速判断开发人员对估计数相同的视图时(因此您可以注意到并继续前进)或者是否存在分歧(当您需要谈论时用户故事更详细地。
UML速写工具
我画了很多UML图,但我不使用用例工具。原因是我对Umlassketch.,不是在所有的存储库中。到目前为止,我的常规选择一直是探索。虽然Visio附带UML模板,但我不使用内置的模板 - 我更喜欢那些Pavel Hruby.。
沉没的成本驱动架构
我觉得这是一个可悲的共同建筑风格。您的公司购买了一些非常昂贵的基础架构软件。你被告知你必须在一个项目上使用它,即使它不适合该项目并导致额外的努力。支付所有这笔钱后,你不希望它去浪费吗?
Diff调试
最近,我在为我的一个编写项目编写示例代码时,遇到了一个失败的测试。“哎哟”,我想,“那些考试上周都通过了——发生了什么事?”我并没有试图在我面前的代码中找到bug,而是使用了我认为我想称之为diff调试的方法。
敏捷切换
我看到关于敏捷项目的最常见问题之一是他们如何处理到另一个团队的切换。如果您有一个开发团队,将留下支持的支持团队,他们如何应对敏捷项目倾向于产生比计划驱动的过程更少的文件?
集成数据库
集成数据库是一个数据库,它用作多个应用程序的数据存储,从而将数据集成在这些应用程序上(与AN相比)ApplicationDatabase)。
数据库样式
当我谈到数据库以及它们如何与应用程序相关时,我发现区分两种类型的数据库很有用:ApplicationDatabase和IntegrationDatabase.。两者之间的差异位于数据库是否被控制和封装在单个内applicationboundary.。
问题时间面板
我参加了许多会议的小组讨论,并自己组织了几次。当我组织一个节目时,我喜欢使用一种基于英国电视时事小组“提问时间”的特殊形式。我做过几次,比传统的面板更喜欢它。
昨天天气
这是昨天完成的原则。在迭代项目中,它表示您应该计划尽可能多地进行这种迭代。该术语来自极端的编程社区。
诉诸权威
我经常会遇到这样的人,他不仅不同意我说过的某些话,而且还对我说过的话感到震惊。“当像你这样的导师说了什么,很多人会盲目地按照你说的去做”。
范围
将一个范围的值(例如Oct 22-25)作为一个对象处理。
数量
处理尺寸的数字,如:12英尺和9.99美元
MDA:复仇建模者或UML乌托邦?
在Oopsla 2003 Dave Thomas(Oti的创始人)上有一个深思熟虑而强大的模型驱动架构。在本栏中,他解释了为什么他认为普遍的模型驱动方法可能会失败,并指出UML和域特定语言仍然具有值。
设计死bet188足球了吗?
对于许多人来说简单地与极端编程接触,似乎XP呼吁软件设计的死亡。bet188足球不仅仅是很多设计活动被嘲笑为“较大bet188足球的前端设计”,但这种设计技术作为UML,灵活的框架,甚至模式都被忽略或彻底忽略了。实际上XP涉及大量的设计,但它与建立的软件进程不同。bet188足球XP与允许进化成为可行的设计策略的实践,使进化设计的概念恢复活力。bet188足球它还提供了新的挑战和技能,因为设计师需要学习如何做到简单的设计,如何使用重构来保持设计清洁,bet188足球以及如何在进化风格中使用模式。188足球比分直播
敏捷认证
是否应该有敏捷方法的认证计划?
日本
现在我已经结束了我的旅行,所以为了回报我从电子邮件中得到的所有建议,这里是我对我们的日本三周旅行的一些反思。
对所有人来说是敏捷的
平均开发人员可以使用敏捷方法吗?
代码示例
我写的是关于设计的文章,我的bet188足球观点是,即使在讨论一些抽象的设计模式时,提供源代码示例也是有用的。当然,这可能会导致人们认为代码示例就是模式,但我认为代码提供的精确性超过了这种风险。有几次我对某个想法不太确定,但是代码示例可以帮助我澄清它。所以在我的设计写作中,我总是试图提供代码bet188足球示例。
软件开发态度
软件开发中的许多辩论都是由扬声器有没有的影响DirectingAttitude或者elabledattate。这些不同的态度影响着对语言、设计、工具、过程等的选择。bet188足球
模块组件
模块化编程不仅仅是对界面的编程,它也是关于组装模块,而无需了解他们正在与之交谈的混凝土模块。
数据模型
我最早的读书之一是Tsichritzis和Lochovsky关于数据模型的书。这本书讨论了思考数据的不同模型,特别是当时讨论最多的三种模型:关系Datamodel.那hierarchicdatamodel.和NetworkDataModel。
公共CSharp字段
当我第一次遇到C#时,我喜欢从一开始就喜欢属性的概念。C ++ / Java的GetX和SetX约定总是对我来说似乎相当愚蠢,写入更自然obj.x =其他
。提供带有Get和Set方法的属性将公共惯例转变为语言的自然支持的特征。
装饰命令
这是一种非常常见的模式,也很简单,它真的只是应用于命令的装饰器模式。我已经看到它使用了很多commandorientedInterface.您还会听到它被称为拦截器和面向方面编程的一种形式。
极低缺陷项目
当人们谈论极限编程,他们通常关注于它的适应性规划风格,或者它的进化方法设计。bet188足球一个小但增长的趋势尤其引起我的兴趣,那就是有非常低的缺陷率的XP项目的数量虽小但却在增长,我指的是每月少于一个生产错误。
控制容器反转和依赖注入模式
在Java社区中,出现了大量轻量级容器,它们帮助将来自不同项目的组件组装成内聚的应用程序。这些容器的底层是它们如何执行连接的公共模式,它们在非常通用的名称“控制反转”下引用这个概念。在本文中,我将以更具体的名称“依赖项注入”深入探讨此模式是如何工作的,并将其与服务定位器替代方法进行对比。在配置和使用之间进行选择比将配置和使用分离的原则更重要。
建立语言
Bruce Ockel最近贴文ant和make激发了我分享一些关于构建语言的想法。ant和make都指定构建如何发生,它们都是描述构建的语言。这两种方法都得到了广泛的应用并取得了成功。然而,这两种方法都遇到了限制,对于较大的系统,经常会发现人们从其他程序生成ant/make文件。
数据库和构建时间
这是我最近发现的一个有趣的对比。两个类似大小(~100 KLOC)的企业应用项目,类似的环境(Java和。net)。一个可以在一小时内完成完整的构建和测试,另一个则需要2-3分钟。
188足球比分直播重构恶毒人士
一旦只有少数人知道,“重构”现在通常遍布计算机行业。188足球比分直播我喜欢认为我是部分负责这一点,并希望它改进了一些程序员生活和一些商业的底线。(重要点,我不是父亲还是重构的发明者 - 只是一个文件。)188足球比分直播
对象和迭代
从面向对象的发展开始,OO设计已与迭代和增量开发有关。bet188足球但尽可能多,两者之间没有固有的链接。你可以在瀑布中做oo,你可以没有物体做iid。那么为什么两个如此紧密联系?
连续设计bet188足球
重构的普及,junit等工具,诸如极端编程(XP)188足球比分直播的工具,使新的设计风格成为视图。bet188足球连续设计是使用重构来不bet188足球断改进程序的设计的过程。188足球比分直播在这一栏中,吉姆讨论了他的经验,特别是在似乎棘手的设计问题等方面讨论了国际化和交易。bet188足球