《C# 敏捷开发实践》
========== ========== ==========
[作者] (英) Gary McLean Hall
[译者] (中) 许顺强
[出版] 人民邮电出版社
[版次] 2016年07月 第1版
[印次] 2016年07月 第1次 印刷
[定价] 69.00元
========== ========== ==========
【第一部分】
(P001)
编写代码是软件开发的核心工作,而编写好用的代码有很多不同的方式。及时抛开平台、语言和框架的影响,对于一个开发人员,最简单的一个功能的实现也会有多种选择。
编写的代码也应该具备一定的自适应变更的能力。
【第01章】
(P030)
自律是一种始终能够拒绝眼前诱惑而选择长期利益的能力 —— Mike Alexander ,健身专家
(P035)
通常认为单元测试覆盖率至少要达到百分之八十。
【第02章】
(P042)
对 .NET Framework 程序集的引用总是会导致加载这些程序集。即使你并没有真正使用某个 .NET Framework 程序集,它依然会在应用程序启动的时候被加载到内存中。
(P065)
ASP.NET API 用来创建基于 .NET Framework 的 REST 服务。
(P071)
分层 (layering) 是一种架构模式,它鼓励开发人员将软件组件看作是水平功能层,而一个完整的应用程序可以划分为多个水平功能层。分层形成的组件一个叠加在另外一个上面,它们的依赖关系方向必须朝下。也就是说,程序最底层的组件没有依赖,每个层只能依赖它的直接下层。通常情况下,应用程序的顶层都是用户界面,服务程序的顶层都是客户端用来与服务端交互的 API 。
(P072)
问题越复杂,越可能引入更多分层的架构。
总是追求很完美的方案是没有意义的,因为客户心中的完美与开发团队想象的完美有可能不一样。
多层架构要比简单的两层划分方案耗费更多的开发时间,也无法及时获取重要的用户反馈。
物理层的数目就是单个应用程序拆分部署的宿主机器数目。
同一台机器上的跨进程交互的时间代价已经比较高了,而跨越网络边界交互的时间代价比前者还要高出很多。
多物理层的部署方式依然有一个明显的优势,那就是它赋予应用程序更好的扩展能力。
(P073)
用户界面层不应该直接引用数据访问层具体实现所在的程序集。这两个层次的接口和实现程序集也应该是严格分开的。
(P074)
数据访问层的所有接口都应该隐藏所有与技术相关的事情,也不应该引入任何对第三方的依赖,这样才可以保证客户端完全不受具体实现选择的影响。
设计良好的数据应用程能够在多个应用程序中重用。
(P077)
面向切面编程是代码中跨层次的纵切关注点 (也称为切面) 的运用。
【第03章】
(P080)
接口是 Microsoft .NET Framework 开发中一个非常强大的构件。尽管关键字 interface 很简单,但是它代表了一个非常强大的范式。如果正确应用,接口定义的扩展点会让你的代码具有非常好的适应变更的人能力。
(P107)
返回非接口类数据的方法都不是流方法,非流方法会导致客户端代码中方法链方式的调用中断。
【第二部分】
(P145)
S - 单一职责原则;
O - 开放与封闭原则;
L - Liskov 替换原则;
I - 接口分离原则;
D - 依赖注入原则;
【第05章】
(P172)
基于 .NET Framework 平台开发应用的最大优势就是它能很好地支持快速应用开发 (Rapid Application Development , RAD) 。
通常情况下, C# 被认为有助于提高开发效率,但开发出的应用程序运行速度相对却比较慢。
【第06章】
(P186)
切记,任何没有标记 sealed 关键字的类都提供了继承能力。类并不是必须要有虚方法或者抽象方法才能够派生子类。
【第08章】
(P243)
接口分离会生成很小的接口。接口规模越小,就变得越通用。
【第12章】
(P324)
水平扩展是指应用程序应该能够通过额外的服务机器以支持更多用户的并发访问。
垂直扩展是指应用程序在通过增强单个机器的能力以支持更多用户的并发访问。