标签:
原书链接: http://www.amazon.com/Adaptive-Code-via-principles-Developer-ebook/dp/B00OCLLYTY/ref=dp_kinw_strp_1
这本书的标题极其失败:它不是讲C#而是讲敏捷的。不知道是因为Agile这次词用的太多了还是怎么样,弄了个Adaptive在标题里,副标题里倒是有Agile,可惜太不显眼了。如果让我来翻译的话我觉得标题可以是:代码的敏捷之道(基于C#语言进行描述)。可能长了点,但毕竟能让人一眼就知道这本书到底想要讲什么。
PostSharp等AOP库可靠attribute实现transaction, log等逻辑分离
Null object pattern可以减少单元测试的数量
Impromptu可以实现类似dynamic的类型转换ActLike<T>方法,使用了反射,自动实现了object adapter模式
单元测试的AAA模式也叫Given When Then模式。
单元测试部分一开始讲的太细,太初级,减分。
如果一个测试知道测试对象的实现细节而不是预期行为,那么这个测试就是over-specified
对单元测试这章表示失望
如果可以找到多个理由去改变一个类那通常意味着这个类有多个resopnsibility,这是不符合single responsibility原则的
adapter模式和strategy可以很好地实现single responsibility principle
open/close principle有两个定义,1988年Meyer的,是最常被引用的。
Software entities should be open for extention, but closed for modification.
Robot C. Martin有一个扩展的定义
”Open for extension.” This means that the behavior of the module can be extended. As the requirements of the application change, we are able to extend the module with new behaviors that satisfy those changes. In other words, we are able to change what the module does.
“Closed for modification.” Extending the behavior of a module does not result in changes to the source or binary code of the module. The binary executable version of the module, whether in a linkable library, a DLL, or a Java .jar, remains untouched.
—Robert C. Martin, Agile Software Development: Principles, Patterns, and Practices
(Prentice Hall, 2003)
不要使用decimal表示货币,考虑使用Money类型
标签:
原文地址:http://www.cnblogs.com/gyqz/p/4928604.html