01 2011 档案

摘要:针对某功能进行TDD的步骤如下:1、编写测试用例,此时因为被测试的类还没有实现,所以肯定编译不通过2、写最少的代码保证测试用例通过编译3、运行测试用例,此时可能测试失败4、写最少的代码保证测试成功5、填充测试用例,使测试用例变得丰富,针对边界值等进行充分测试6、重构测试类,写最少的代码保证针对该功能的各种测试都通过,并且消除代码冗余 阅读全文

posted @ 2011-01-30 15:29 绿里奇迹 阅读(274) 评论(0) 推荐(0) 编辑 |

摘要:Martin Fowler在文章中详细讲解了Mock的应用理念http://martinfowler.com/articles/mocksArentStubs.htmlMockTest是区别于传统测试方法之处在于传统测试风格是状态验证测试,而Mock是行为验证测试Martin Fowler比较了Mock与其他Test Double的不同之处哑对象(Dummy Object):从来不会被使用,一般是用来填充参数列表。伪造对象(Fake Object):拥有方法的实现,通常为了避免直接操作生产环境而使用一些捷径,比如内存数据库测试DAO。桩对象(Stub Object): 提供和真实对象一样的接口 阅读全文

posted @ 2011-01-30 15:20 绿里奇迹 阅读(798) 评论(1) 推荐(1) 编辑 |

摘要:http://martinfowler.com/articles/designDead.html#DoYouWannaBeAnArchitectWhenYouGrowUp在马大叔的文章中讨论了计划式设计和进化式设计的不同在Planned Design中,人们通常会做一个Front-Big-Design,其优势就是可以讲设计职责和开发职责区分开,设计的人负责设计,开发的人负责开发。但是在现代软件工程领域Planned Design有诸多的缺点:第一,过度依赖于设计者的技能,如果设计者能力不足或者设计不周全而使得实现者产生疑问时,沟通较复杂,过程较长。第二,这种模式使得设计者完全脱离编码,而技术在 阅读全文

posted @ 2011-01-27 17:23 绿里奇迹 阅读(271) 评论(0) 推荐(0) 编辑 |

摘要:Alistair Cockburn 十分强调Information Radiator的作用 http://alistair.cockburn.us/Information+radiatorInformation Radiator(信息发射器)区别于传统的沟通方式是其是“推式沟通”不是“拉式沟通”你不需要打断别人的思路而获取信息,一切都在白板上写着呢Information Radiator在敏捷实践中还有一个很重要的作用就是可以让其他团队的成员看到你们团队的信息,以用来改善他们团队的建设,这在传统沟通途径上很难,试想想你在焦头烂额解决一个问题时候,一个你们项目不相干的人突然跑来问你你们项目的情况 阅读全文

posted @ 2011-01-27 15:41 绿里奇迹 阅读(433) 评论(0) 推荐(0) 编辑 |

摘要:MartinFowler用最通俗的语言阐述了软件架构的本质“软件架构就是那些一旦确定了,就很难更改的东西,所以确定之前一定要谨慎再谨慎”。如何才能合理的设计软件架构呢?林巴斯,克莱门斯等在书中定义了架构设计的方法学,我总结如下:第一步:收集需求,万事起于需求,没有需求什么也定不了。第二步:从需求中识别架构驱动因素。比如“我需要一个注册登录页面”这样的需求不会驱动架构的设计,而“我们有500万用户”会驱动架构设计。第三步:根据架构驱动因素制定出“架构风格”,也是最困难的一步。架构风格优先于架构,是架构的指导方针。按照罗伊博士的话说架构风格就是作用于架构之前的一组约束。这时候肯定会出现很多相冲突的 阅读全文

posted @ 2011-01-27 14:54 绿里奇迹 阅读(545) 评论(0) 推荐(1) 编辑 |

摘要:前不久的pair着实被鄙视了一把,之前homework所有精力全用在了设计和代码上面(虽然仍然存在很多问题)而从没有建立在pair的假设下完成项目,所以写的比较慢,等到了pair现场,发现pair的同伴不可能像你一样低效的等着所以被告知不注意细节,对工具不熟(确实没关注过Eclipse的快捷方式),在此记录一下:搜索工作空间中的声明Ctrl+G在窗口中 搜索工作空间中的引用Ctrl+Shift+G在窗口中 搜索打开“搜索”对话框Ctrl+H在窗口中 搜索显示“文件中的出现位置”快速菜单Ctrl+Shift+U在窗口中 文件“新建”菜单Alt+Shift+N在窗口中 文件保存Ctrl+ 阅读全文

posted @ 2011-01-26 15:20 绿里奇迹 阅读(1447) 评论(0) 推荐(0) 编辑 |

摘要:在Robert Martin的SOLID原则中,LSP是实现OCP的重要原则之一。LSP规定:任何使用到子类的地方替换成父类都能正常运行,也就是说子类里面不能有,公有的且父类里面没有定义的方法。但是考虑到现实情况,很多时候LSP无法得到保证举个例子,在Java里,可以将接口分为两类,一类是行为接口。一类是标识型接口行为接口比如people接口定义了人类不同行为,所有的人种都要实现这样的行为,行为接口属于对客观事物的一种抽象,这种情况下LSP是实现OCP的关键步骤但是标识型接口不需要LSP的限制,比如Comparable,总不能要求实现Comparable的类只有compareTo一个公有方法吧 阅读全文

posted @ 2011-01-14 17:17 绿里奇迹 阅读(359) 评论(2) 推荐(0) 编辑 |

Copyright © 2024 绿里奇迹
Powered by .NET 8.0 on Kubernetes