博客园 - Nick Wang (懒人王)uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=973312011-04-24T03:12:13ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/feed.cnblogs.comhttps://www.cnblogs.com/wangyh/archive/2011/02/27/tdd_discuss.htmlTDD美不美都没关系 - Nick Wang (懒人王)这些天关于TDD的讨论很是激烈,从CoolShell上的TDD并不是看上去那么美,到InfoQ的TDD有多美,再到博客园的TDD到底美还是不美,基本上分成两派,一派说她美,一派说她不那么美。不过今天我想说的不是她美不美,而是这几天我自己反思后的一些想法。这篇CoolShell上的原文我本是没看过的,InfoQ上的这篇也没留意,完全是无意中看到Todd Wei的这篇以后才有回复的想法的,因此基本上我的回复都是基于Todd Wei的这篇文进行的讨论。 首先我回复的是一个关于测试需要修改的问题:我们的工作到底是什么?我们的工作不是写代码。我们的工作是解决问题,是通过编写软件来解决问题。就好像你准备买2011-02-27T14:10:00Z2011-02-27T14:10:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】这些天关于TDD的讨论很是激烈,从CoolShell上的TDD并不是看上去那么美,到InfoQ的TDD有多美,再到博客园的TDD到底美还是不美,基本上分成两派,一派说她美,一派说她不那么美。不过今天我想说的不是她美不美,而是这几天我自己反思后的一些想法。这篇CoolShell上的原文我本是没看过的,InfoQ上的这篇也没留意,完全是无意中看到Todd Wei的这篇以后才有回复的想法的,因此基本上我的回复都是基于Todd Wei的这篇文进行的讨论。 首先我回复的是一个关于测试需要修改的问题:我们的工作到底是什么?我们的工作不是写代码。我们的工作是解决问题,是通过编写软件来解决问题。就好像你准备买 <a href="https://www.cnblogs.com/wangyh/archive/2011/02/27/tdd_discuss.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2010/11/03/Ubiquitous_Language.htmlDDD的目的 - Nick Wang (懒人王)最近看了一点Domain Driven Design这本书,虽然里面对于如何使用Entity、Value Object、Repository、Factory、Aggregated、Service等模式做了大量讲解,但是不要忘了,最终的目的是ubiquitous language。目前大多数的商业软件或者是网站,核心复杂度并不在技术方面。特别是在Web 2.0、RIA、HTML5盛行的今天,可以说W...2010-11-03T02:49:00Z2010-11-03T02:49:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】最近看了一点Domain Driven Design这本书,虽然里面对于如何使用Entity、Value Object、Repository、Factory、Aggregated、Service等模式做了大量讲解,但是不要忘了,最终的目的是ubiquitous language。目前大多数的商业软件或者是网站,核心复杂度并不在技术方面。特别是在Web 2.0、RIA、HTML5盛行的今天,可以说W... <a href="https://www.cnblogs.com/wangyh/archive/2010/11/03/Ubiquitous_Language.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2010/03/06/which-patterns-are-worth-to-learn.html哪些设计模式最值得学习 - Nick Wang (懒人王)最近又在首页看到几篇设计模式相关的学习随笔。回想起来,这几年在园子里发布的有关设计模式的随笔都有一个共同的特点。那就是Factory和Singleton居多,如果是系列的,也往往是从这两个模式开始的。由于能够坚持把《设计模式》中所有模式都写完的非常少,所以基本上也很少见到有关其它模式的随笔。这种情况也很好理解,因为《设计模式》这本书就是按照这个顺序来的。最先讲述的就是Abstract Factor...2010-03-06T09:39:00Z2010-03-06T09:39:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】最近又在首页看到几篇设计模式相关的学习随笔。回想起来,这几年在园子里发布的有关设计模式的随笔都有一个共同的特点。那就是Factory和Singleton居多,如果是系列的,也往往是从这两个模式开始的。由于能够坚持把《设计模式》中所有模式都写完的非常少,所以基本上也很少见到有关其它模式的随笔。这种情况也很好理解,因为《设计模式》这本书就是按照这个顺序来的。最先讲述的就是Abstract Factor... <a href="https://www.cnblogs.com/wangyh/archive/2010/03/06/which-patterns-are-worth-to-learn.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2010/03/05/stupid-things.html看起来stupid的事,未必就真的stupid - Nick Wang (懒人王)最近在看Refactor your wetware这本书,里面提到一种收集灵感的方法:每天早上醒来,第一件事就是拿起笔,在纸上写字,脑袋里面出什么就写什么,不要刻意的去思考,就是把脑中浮现的东西写出来,满满写上10页,并且一定要坚持。据说由于大脑还处在不太清醒的状态,可以抑制经常使用的左脑,从而更多的倾听右脑的声音。这个方法看起来真的很stupid,但是TDD看起来也很stupid,Pair Pr...2010-03-04T17:55:00Z2010-03-04T17:55:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】最近在看Refactor your wetware这本书,里面提到一种收集灵感的方法:每天早上醒来,第一件事就是拿起笔,在纸上写字,脑袋里面出什么就写什么,不要刻意的去思考,就是把脑中浮现的东西写出来,满满写上10页,并且一定要坚持。据说由于大脑还处在不太清醒的状态,可以抑制经常使用的左脑,从而更多的倾听右脑的声音。这个方法看起来真的很stupid,但是TDD看起来也很stupid,Pair Pr... <a href="https://www.cnblogs.com/wangyh/archive/2010/03/05/stupid-things.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2010/03/05/initial-bdd.html对Cucumber的一些想法 - Nick Wang (懒人王)今天看了一下Cucumber和Cuke4Nuke。前者是ruby社区流行的BDD框架,它使用一种叫做Gherkin的语言来描述story和scenario,然后使用ruby来实现这些scenario。而Cuke4Nuke则可以让你用.NET上的语言(比如C#)来编写scenario的实现部分。相比于在IronRuby下直接跑cucumber,你可以用熟悉的语言(C#)来写测试,也省去了在IronR...2010-03-04T17:30:00Z2010-03-04T17:30:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】今天看了一下Cucumber和Cuke4Nuke。前者是ruby社区流行的BDD框架,它使用一种叫做Gherkin的语言来描述story和scenario,然后使用ruby来实现这些scenario。而Cuke4Nuke则可以让你用.NET上的语言(比如C#)来编写scenario的实现部分。相比于在IronRuby下直接跑cucumber,你可以用熟悉的语言(C#)来写测试,也省去了在IronR... <a href="https://www.cnblogs.com/wangyh/archive/2010/03/05/initial-bdd.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2010/01/31/agile-art-of-slow.html敏捷是慢的艺术 - Nick Wang (懒人王)是的,你没有听错,我说的确实是“慢”,但如果敏捷关注的是慢,我为什么还要用敏捷呢? 要解答这个问题,首先需要回答,为什么你需要“快”。客户需要软件,是因为要获取某些价值或者利益,而这些价值当然是越早获得越好,特别是在有竞争对手的情况下,“慢”就意味着价值的流失,甚至无法得到价值。正是因为这个原因,通常我们就会追求“...2010-01-30T22:26:00Z2010-01-30T22:26:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】是的,你没有听错,我说的确实是“慢”,但如果敏捷关注的是慢,我为什么还要用敏捷呢? 要解答这个问题,首先需要回答,为什么你需要“快”。客户需要软件,是因为要获取某些价值或者利益,而这些价值当然是越早获得越好,特别是在有竞争对手的情况下,“慢”就意味着价值的流失,甚至无法得到价值。正是因为这个原因,通常我们就会追求“... <a href="https://www.cnblogs.com/wangyh/archive/2010/01/31/agile-art-of-slow.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/09/23/TDD-by-example-7.htmlTDD by example (7) -- 组合 - Nick Wang (懒人王)前面已经完成了各个模块(类)的开发,是时候将之组合起来,形成可执行的程序了。首先需要一个GameEngine来驱动整个游戏的流程。[代码]GameEngine的主要作用是协调输入输出,调用Game的逻辑,驱动整个游戏运行.主程序:[代码]在SetupDependencies中,将接口与实现注册到Container当中,这样在Resolve的时候,Container就会自动寻找依赖,创建出正确的对象...2009-09-23T14:58:00Z2009-09-23T14:58:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】前面已经完成了各个模块(类)的开发,是时候将之组合起来,形成可执行的程序了。首先需要一个GameEngine来驱动整个游戏的流程。[代码]GameEngine的主要作用是协调输入输出,调用Game的逻辑,驱动整个游戏运行.主程序:[代码]在SetupDependencies中,将接口与实现注册到Container当中,这样在Resolve的时候,Container就会自动寻找依赖,创建出正确的对象... <a href="https://www.cnblogs.com/wangyh/archive/2009/09/23/TDD-by-example-7.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/09/22/TDD-By-Example-6.htmlTDD by example (6) -- 无招 - Nick Wang (懒人王)继续我们的TDD,还是先看to-do list 随机生成答案 检查输入是否合法判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜实现IRandomIntGenerator 实现IGameHistory 显示猜测纪录检查输入是否合法还是测试先行[代码]还是先写功能代码让编译通过,然后运行测试,红了,接着把功能代码写完让测试变绿[代码]这里我只是...2009-09-22T15:04:00Z2009-09-22T15:04:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】继续我们的TDD,还是先看to-do list 随机生成答案 检查输入是否合法判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜实现IRandomIntGenerator 实现IGameHistory 显示猜测纪录检查输入是否合法还是测试先行[代码]还是先写功能代码让编译通过,然后运行测试,红了,接着把功能代码写完让测试变绿[代码]这里我只是... <a href="https://www.cnblogs.com/wangyh/archive/2009/09/22/TDD-By-Example-6.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/09/17/naming-and-abstraction.html命名与抽象 - Nick Wang (懒人王)好的名字总是能为代码的可读性做出重大贡献,而这种贡献是通过对事物进行抽象实现的。想想一下我们平常说话时所用的语言,比如说“我家的狗跑的很快”,“家”、“狗”和“跑”都是抽象,它们分别代表了不同的含义,如果不适用这几个抽象的词汇,而是直接说它后面所代表的含义,恐怕几十句话都说不完。不信的话,你可以试试定义...2009-09-17T03:35:00Z2009-09-17T03:35:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】好的名字总是能为代码的可读性做出重大贡献,而这种贡献是通过对事物进行抽象实现的。想想一下我们平常说话时所用的语言,比如说“我家的狗跑的很快”,“家”、“狗”和“跑”都是抽象,它们分别代表了不同的含义,如果不适用这几个抽象的词汇,而是直接说它后面所代表的含义,恐怕几十句话都说不完。不信的话,你可以试试定义... <a href="https://www.cnblogs.com/wangyh/archive/2009/09/17/naming-and-abstraction.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/09/15/clean-code.html代码习惯 - Nick Wang (懒人王)前天在AgileChina2009上听了Fred George的演讲,他说他以前拿自己的代码给KentBeck看,结果Kent说这代码很垃圾,你去看看我写的Smalltalk best practice patterns吧。然后FredGeorge就看了这本书并且完全按照书上的要求去做,5年后当他再给Kent看自己的代码时,Kent说很漂亮的代码。考虑到Fred比Kent要老,可以看出Fred是非...2009-09-15T07:14:00Z2009-09-15T07:14:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】前天在AgileChina2009上听了Fred George的演讲,他说他以前拿自己的代码给KentBeck看,结果Kent说这代码很垃圾,你去看看我写的Smalltalk best practice patterns吧。然后FredGeorge就看了这本书并且完全按照书上的要求去做,5年后当他再给Kent看自己的代码时,Kent说很漂亮的代码。考虑到Fred比Kent要老,可以看出Fred是非... <a href="https://www.cnblogs.com/wangyh/archive/2009/09/15/clean-code.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/09/04/Beautyful-code.html代码之美 - Nick Wang (懒人王)每天坐城铁上下班,无聊的时候就会发呆,有时也会观察周围的人。观察他们的相貌、衣着、动作、谈吐,想象自己就是福尔摩斯,去推测他们的是做什么工作的,现在的心情如何,是否高兴,是否忧伤。有一天,我问了自己一个问题,人是如何定义美和丑的?人的面部是由许多部分组成的,如果你把你认为最美的各个部分拼起来的话,得到的却可能是一张并不美的脸。而那些公认的俊男靓女们,也都能找出某个部分的缺点。这说明面部的美丑并不仅...2009-09-04T08:03:00Z2009-09-04T08:03:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】每天坐城铁上下班,无聊的时候就会发呆,有时也会观察周围的人。观察他们的相貌、衣着、动作、谈吐,想象自己就是福尔摩斯,去推测他们的是做什么工作的,现在的心情如何,是否高兴,是否忧伤。有一天,我问了自己一个问题,人是如何定义美和丑的?人的面部是由许多部分组成的,如果你把你认为最美的各个部分拼起来的话,得到的却可能是一张并不美的脸。而那些公认的俊男靓女们,也都能找出某个部分的缺点。这说明面部的美丑并不仅... <a href="https://www.cnblogs.com/wangyh/archive/2009/09/04/Beautyful-code.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/08/14/ie6-no-more.html向IE6说不 - Nick Wang (懒人王)最近抵制IE6的运动似乎多了起来,老赵也在自己的博客呼吁抵制IE6,然而和国外各大流行网站的积极响应不同的是,国内一片风平浪静,而且还有很多人反对废弃IE6(见老赵博客响应回帖)。作为一个2001年的浏览器,在已经有了两位更好的大哥(IE7/8)之后,为什么还迟迟不肯推出历史舞台,为什么还有众多开发人员与公司认为不能放弃对IE6的支持呢?为什么要抵制IE6IE6在当年是非常成功的,市场占有率一度达...2009-08-13T19:57:00Z2009-08-13T19:57:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】最近抵制IE6的运动似乎多了起来,老赵也在自己的博客呼吁抵制IE6,然而和国外各大流行网站的积极响应不同的是,国内一片风平浪静,而且还有很多人反对废弃IE6(见老赵博客响应回帖)。作为一个2001年的浏览器,在已经有了两位更好的大哥(IE7/8)之后,为什么还迟迟不肯推出历史舞台,为什么还有众多开发人员与公司认为不能放弃对IE6的支持呢?为什么要抵制IE6IE6在当年是非常成功的,市场占有率一度达... <a href="https://www.cnblogs.com/wangyh/archive/2009/08/14/ie6-no-more.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/19/design-pattern-in-kidding.html设计模式可以戏说么? - Nick Wang (懒人王)最近设计模式的文章又多了起来,戏说之风也渐渐显现,当然这也不是第一次有某项技术被戏说,或者被放到了故事之中,甚至还有一本专门戏说设计模式的书出版。然而设计模式真的可以被戏说么?首先来探索一下为什么会有戏说这种方式。设计模式刚出来的时候,被无数大牛所吹捧,凡是玩OO的一定要学,于是一时间设计模式风靡大江南北,凡是跟设计模式沾边的书一律大卖。甭管是懂不懂OO的,有经验没经验的,真会的假会的,张口闭口设...2009-07-19T09:17:00Z2009-07-19T09:17:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】最近设计模式的文章又多了起来,戏说之风也渐渐显现,当然这也不是第一次有某项技术被戏说,或者被放到了故事之中,甚至还有一本专门戏说设计模式的书出版。然而设计模式真的可以被戏说么?首先来探索一下为什么会有戏说这种方式。设计模式刚出来的时候,被无数大牛所吹捧,凡是玩OO的一定要学,于是一时间设计模式风靡大江南北,凡是跟设计模式沾边的书一律大卖。甭管是懂不懂OO的,有经验没经验的,真会的假会的,张口闭口设... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/19/design-pattern-in-kidding.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/13/TDD-by-example-5.htmlTDD by example (5) -- 后招 - Nick Wang (懒人王)还是to-do list开头 随机生成答案 检查输入是否合法 判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 实现IRandomIntGenerator如果4个数字全中,则判胜首先还是以测试开始,与GameOver类似[代码]然后在IGameObserver接口中添加GameClear方法,在Game类中添加GameClear事件[代...2009-07-13T14:50:00Z2009-07-13T14:50:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】还是to-do list开头 随机生成答案 检查输入是否合法 判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 实现IRandomIntGenerator如果4个数字全中,则判胜首先还是以测试开始,与GameOver类似[代码]然后在IGameObserver接口中添加GameClear方法,在Game类中添加GameClear事件[代... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/13/TDD-by-example-5.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/13/TDD-by-example-4.htmlTDD by example (4) -- 变招 - Nick Wang (懒人王)先看to-do list 随机生成答案 检查输入是否合法 判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 实现IRandomIntGenerator判断猜测次数,如果满6次但是未猜对则判负我们先理一下思路,如何记录和判断猜测次数和判负。第一种方式是在调用Game类的地方记录和判断,这个类扮演协调者的角色,很可能就是main或类似的东...2009-07-13T02:00:00Z2009-07-13T02:00:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】先看to-do list 随机生成答案 检查输入是否合法 判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 实现IRandomIntGenerator判断猜测次数,如果满6次但是未猜对则判负我们先理一下思路,如何记录和判断猜测次数和判负。第一种方式是在调用Game类的地方记录和判断,这个类扮演协调者的角色,很可能就是main或类似的东... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/13/TDD-by-example-4.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/09/TDD-by-example-3.htmlTDD by example (3) -- 虚招 - Nick Wang (懒人王)上一篇我们已经完成了一个功能,接下来实现其他功能,首先看一下to-do list:随机生成答案 检查输入是否合法判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负如果4个数字全中,则判胜我们挑一个随即生成答案吧,这个功能看起来简单,但是真要TDD也不容易。随机生成答案写测试先,这个测试应该测什么呢?测每次生成的答案都是随机的么?不是,.NET已经有内置的Random类可...2009-07-09T13:24:00Z2009-07-09T13:24:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】上一篇我们已经完成了一个功能,接下来实现其他功能,首先看一下to-do list:随机生成答案 检查输入是否合法判断猜测结果 记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负如果4个数字全中,则判胜我们挑一个随即生成答案吧,这个功能看起来简单,但是真要TDD也不容易。随机生成答案写测试先,这个测试应该测什么呢?测每次生成的答案都是随机的么?不是,.NET已经有内置的Random类可... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/09/TDD-by-example-3.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/08/TDD-by-example-2.htmlTDD by example (2) -- 接战 - Nick Wang (懒人王)分析 在开始写代码前,首先分析一下这个问题,做一个粗略的规划。我们可以写一个to-do list: 随机生成答案检查输入是否合法 判断猜测结果记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 架构 这个程序比较简单,也不需要在架构上做太多考虑,只需要注意将输入输出与系统的核心逻辑分开就行了。开发环境 .NET 3.5 + VS2008 + NUnit 2....2009-07-08T14:08:00Z2009-07-08T14:08:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】分析 在开始写代码前,首先分析一下这个问题,做一个粗略的规划。我们可以写一个to-do list: 随机生成答案检查输入是否合法 判断猜测结果记录历史猜测数据并显示 判断猜测次数,如果满6次但是未猜对则判负 如果4个数字全中,则判胜 架构 这个程序比较简单,也不需要在架构上做太多考虑,只需要注意将输入输出与系统的核心逻辑分开就行了。开发环境 .NET 3.5 + VS2008 + NUnit 2.... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/08/TDD-by-example-2.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/07/07/TDD-by-example-1.htmlTDD by example (1) -- 挑战 - Nick Wang (懒人王)前言在园子里看到很多关于TDD、Mock、IoC的文,但是很少有将之组合到一起成为完整的例子的。在这一系列的文章中,我会将TDD、Refactor、Mock、IoC放到一个程序中,一步一步的开发,形成一个完整的示例。我假设你已经对TDD、Refactor、Mock和IoC有一些的认识,因此并不会解释这些概念,也不会包含如何使用这些技术的基本内容。本篇是系列的开篇,主要介绍一下此系列的内容和要解决的...2009-07-07T13:58:00Z2009-07-07T13:58:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】前言在园子里看到很多关于TDD、Mock、IoC的文,但是很少有将之组合到一起成为完整的例子的。在这一系列的文章中,我会将TDD、Refactor、Mock、IoC放到一个程序中,一步一步的开发,形成一个完整的示例。我假设你已经对TDD、Refactor、Mock和IoC有一些的认识,因此并不会解释这些概念,也不会包含如何使用这些技术的基本内容。本篇是系列的开篇,主要介绍一下此系列的内容和要解决的... <a href="https://www.cnblogs.com/wangyh/archive/2009/07/07/TDD-by-example-1.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/06/21/Practice-IoC.html依赖注入实践篇 - Nick Wang (懒人王)目录1. IoC使用简介与原理 1.1 依赖关系 1.2 面向接口编程 1.3 IoC使用与实现原理 2. 模式与经验 2.1 code configuration vs. xml configuration 2.2 IoC容器依赖 1. IoC使用简介与原理 1.1 依赖关系在面向对象编程中,类与类之间总是要有一些依赖关系,有些依赖强一些,有些依赖弱一些,常见的依赖关系有:o 继承依赖 - 子类...2009-06-21T04:37:00Z2009-06-21T04:37:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】目录1. IoC使用简介与原理 1.1 依赖关系 1.2 面向接口编程 1.3 IoC使用与实现原理 2. 模式与经验 2.1 code configuration vs. xml configuration 2.2 IoC容器依赖 1. IoC使用简介与原理 1.1 依赖关系在面向对象编程中,类与类之间总是要有一些依赖关系,有些依赖强一些,有些依赖弱一些,常见的依赖关系有:o 继承依赖 - 子类... <a href="https://www.cnblogs.com/wangyh/archive/2009/06/21/Practice-IoC.html" target="_blank">阅读全文</a>https://www.cnblogs.com/wangyh/archive/2009/06/04/radish-field-my-oo-solution.html萝卜问题之我的OO解法 - Nick Wang (懒人王)萝卜问题讨论的很多了,我就不再重复题目和要求了。我的OO解法对性能没有什么考虑,也没有在算法上有什么改进,主要目的有两个:1.用OO的方式表达,2.尽量使代码清晰易懂。当然了,世上不存在绝对好的代码,任何代码都有进一步改进的余地,所以如果觉得哪里可以进一步的改进,欢迎赐教。Cell类,维护一个Cell本身的信息,包括他所在的行列坐标,格子里的萝卜数,以及计算它的特殊值。[代码]Field类,维护F...2009-06-04T03:56:00Z2009-06-04T03:56:00ZNick Wang (懒人王)https://www.cnblogs.com/wangyh/【摘要】萝卜问题讨论的很多了,我就不再重复题目和要求了。我的OO解法对性能没有什么考虑,也没有在算法上有什么改进,主要目的有两个:1.用OO的方式表达,2.尽量使代码清晰易懂。当然了,世上不存在绝对好的代码,任何代码都有进一步改进的余地,所以如果觉得哪里可以进一步的改进,欢迎赐教。Cell类,维护一个Cell本身的信息,包括他所在的行列坐标,格子里的萝卜数,以及计算它的特殊值。[代码]Field类,维护F... <a href="https://www.cnblogs.com/wangyh/archive/2009/06/04/radish-field-my-oo-solution.html" target="_blank">阅读全文</a>