上周我们的product刚刚release了一个新的version.看了change log.大概有一半都是砍feature,砍configuration option.
我们一直都是用XP开发,但是回过头来,我们的configuration的确太麻烦。我的新版本的installation guide从原来的10 page缩减成1 page。虽然颇有成就感,但是不时地要反省一下 一开始我们为什么要那么做。
归其原因不外乎
1。现在砍feature是因为customer的无知(我们不是真的customer, 是proxy customer 这个东西本事就是个自欺欺人的名词 更多的可看我的另一篇讨论 自欺欺人的proxy customer
)
2。现在砍configuration是因为developer误解了什么是The Simplest Thing That Could Possibly Work
.
那我们现在就来说说2吧,当初有这样一个requirement
Story 1: I want a module that can read all the property files in a particular location (file system). And return a Map<String, Properties>. The Key will be the file name, and the value will the properties in the file.
developer拿到之后,simple design吗,那我就设计一个 PropertyLoader 吧。于是就有了下面这个class
public Class PropertyLoader{
String[] files;
public Map<String, Properties> loadProperties(){
//....
// for each files, read the properties files content and put them to the map
// return ..
}
// setting injection the location of files
public void setPropertyFileLocations(String[] files){
...
}
}
这段代码够简单的了,也很明了,PropertyLoader 有一个setter 可以inject所需要load的configuration file. 如果我们用spring 这可以extract到一个configuration file里面,最后的结果是我们有一个configuration property
filesToBeLoad=c:/config/config1.properties, c:/config/config2.properties,c:/config/config3.properties
在intial 测试中都没有什么问题,我们顶多也就是有3-4个file要去load。 developer觉得简单,customer也满意。结果一旦deploy, 问题来了,1. 经常有人拼错文件名, 2. 大小写敏感(windows working, linux not working)。 而且随着业务量的增加,要load的file超过了10个。
当这个class最初设计的时候,我提出过auto load, 也就是说你给我一个directory, 我去读file system。 但是写code得人认为他们应该simple design, 所以就没有这么做。
经过这个小故事,我们应当反省一下什么是简单,简单(
The Simplest Thing That Could Possibly Work
)决不仅仅是你的code要简单,而是从整体
上而言,包括配置,UI, 使用 都要简单。 为了追求code简单而去牺牲配置的简单是不可取的。我虽然少写了10行code, 而配置文件多了容易出错的1行, 都是要不得的,去remove那多余的一行configuration的cost 要比你当初多稍微的“复杂化”以下你的code的cost多很多。
分享到:
相关推荐
电子课件-《自我管理》(第五单元第一课保持自我反省)-8.pptx
教育不仅仅是知识的传授,更是品德的培养和社会责任感的培育。通过这一事件,学生能够理解到自己行为的后果,并在今后的学习生活中更加明确自己应承担的责任。 综上所述,这篇反省书不仅是学生对自己行为的深刻反省...
在撰写这份关于成绩退步的反省检讨书时,我深刻地意识到了作为一名学生,...我相信,只要我能够严格按照计划执行,并持续地自我反省和纠正错误,我一定能够在未来的考试中取得优异的成绩,不辜负所有关心我的人的期望。
在个人成长的道路上,自我反省是一个不可或缺的过程。反省能够让我们深入了解自己的内心世界,审视自己的行为、思想与情感。通过这一过程,我们可以识别出自身的不足,从而达到提升自我、不断进步的目的。本文精选了...
比如,在朋友间的小误会面前,反省让我们看到的不只是冲突,还有隐藏在误会之下的深厚友情;在师长的教诲中,反省让我们铭记的是那份用心良苦的期望;在父母的关爱里,反省让我们懂得珍惜那份无私的付出。这些体验和...
在Windows XP操作系统中,微软提供了一个内置的软件卸载工具,名为"添加或删除程序"。这个功能在处理一些顽固的或者无法通过常规方法卸载的第三方软件时显得尤为重要。下面将详细介绍这个工具以及如何使用它来解决...
- **自我反省**:深刻认识到自身存在的问题,不仅仅是表面上的错误,还要挖掘背后的思想根源。 - **责任担当**:勇于承认错误,并愿意为此承担责任。 #### 2. 问题描述 - **具体化**:准确描述问题,避免含糊不清...
在教育的殿堂里,反省如同一束温暖的光芒,照亮了我们成长的道路。我曾有幸在中考的语文试卷上,以一篇满分作文记录了自己在反省中成长的点滴,那篇文章不仅是我写作能力的一次集中展现,更是我对自己生活经历的一次...
在自我批评与反省的过程中,我们应当意识到,这不仅仅是个人的内在需要,更是一个持续进步的过程。我们还应当欢迎外界的监督和建议,因为这可以提供新的视角和经验,帮助我们更客观地看待自己,更快地成长。坚持自我...
自我反省.exe
为什么越打折,顾客越少、越还价-该反省了!.doc
【中考语文满分作文“反省”帖子ABC】是一个讨论反省这一主题的资料,通过不同历史故事和现实案例,展示了反省在个人成长和社会生活中的重要性。文章以一位初三毕业生周周的求助贴开场,引出“反省”的话题,随后...
工作反省.doc
富兰克林是美国历史上的重要人物,他不仅作为政治家、科学家、发明家和外交家闻名于世,更以其对自我反省的深刻洞察力和实践精神,成为众多追求个人成长和成功者的学习榜样。本文以富兰克林的反省为焦点,探讨他如何...
随着年龄的增长,他们开始意识到,曾经深厚的友谊往往是在简单而纯粹的环境中建立起来的。而现在,由于忙碌的生活和社交方式的变化,他们发现和老朋友保持联系变得越来越困难。这种变化让80后在怀念过去的同时,也在...
在当今社会,自我反省已经成为个人成长和进步不可或缺的一部分,尤其对于大学生而言,自我反省检讨书不仅仅是一份书面材料,更是一面镜子,帮助他们审视自我,发现不足,从而实现自身能力的提升和素质的完善。...
在这个背景下,美国哲学家、教育家约翰·杜威(John Dewey)的反省思维理论对于指导现代教育实践提供了重要的启示。 杜威的教育哲学的核心之一是强调反省思维在教育中的重要性。他认为反省思维是一种有目的的、有序...
在不断变化的IT行业中,我们需要不断地反省自己,以便适应新技术、新理念的涌现。正确认识自我,不仅包括理解自己的技术强项,也包括识别自身的不足,这样才能有针对性地提升个人技能,更好地应对工作中的挑战。 ...
他的一生,是自我反省和道德自律的生动写照,第五伦的故事不仅在古代被传为佳话,在现代社会同样具有深远的教育意义。 第五伦的故事,是初中语文文摘中的宝贵资料,尤其在历史和道德教育方面。他的形象生动地说明了...