自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 设计架构——领域驱动设计(DDD)

文章目录领域驱动设计(Domain-Drive Design)的真正附加价值怎么使用DDD使用DDD——分析部分使用DDD——策略部分是否选择DDD要考虑的元素领域驱动设计(Domain-Drive Design)的真正附加价值DDD的目的——应对软件核心复杂性。DDD的核心——消化特定业务领域的知识并创建忠实反映它的软件模型是什么让DDD如此强大却又如此容易出错?——是上下文。业务领域...

2018-10-24 23:17:23 329

原创 编写优质软件——代码可扩展性的几种实施方式

文章目录代码可扩展性的几种实施方式基于接口的设计插件架构状态机代码可扩展性的几种实施方式《ThePragmaticProgrammer》(Addison-Wesley,1999)一书的作者DaveThomas和AndyHunt曾经说过,所有编程工作都是维护的一种形式。一个类在首次键入几分钟后就会进入无限的维护循环。大多数时候,维护要求把现有代码库重构成模式或者更简洁的设计。然而,维护的能力具备...

2018-10-22 15:26:37 2533

原创 编写优质软件——测试实战

文章目录软件测试的常见实践测试驱动开发(TDD)—先写测试后写测试代码覆盖率应该测试哪部分代码——设计领域层的优先自动化单元测试的构建——使用Pex插件(白盒)软件测试的常见实践虽然每个人都同意测试对于软件项目来说很重要,但就每个人自己处理测试的方式而言仍有一些极具争议的问题。这些开放性的问题牵涉到测试的角色,什么时候写,测试的数量和位置等。测试驱动开发(TDD)—先写测试测试驱动开发(T...

2018-10-22 14:43:29 217

原创 单元测试工具——如何使用SpecFlow

SpecFlow安装SpecFlow菜单栏——工具——扩展和更新Nuget开始使用新建项目新建feature文件生成定义单击 Generate Step Definitions,出现下图生成AddTestSteps。生成的代码文件。using System;using TechTalk.SpecFlow;namespace SpecFlowTest{ ...

2018-10-18 21:57:37 1195 1

原创 编写优质软件——什么是可测试性

文章目录什么是可测试性可测试性的原则可测试性为什么值得拥有可测试性的ROI什么是可测试性可测试性的原则测试软件理论上很简单:只要强迫程序在正确数据、错误数据、没有数据或不完整数据的情况下工作,验证结果是否满足预期。你如何强迫程序使用你的输入数据?你如何衡量结果的正确性?如果失败了,你如何跟踪失败的模块?这些问题都是“为可测试性而设计”(DfT)范式的基础。DfT定义了3个属性,任何软件单元...

2018-10-18 11:44:12 2567

原创 软件设计原则——软件契约

文章目录软件契约前置条件后置条件不变条件.NET Code Contracts的魔法软件契约契约式设计把软件组件之间的交互描述成契约,权利与义务得到明确表达和强制实施。契约式设计还没得到任何主流编程语言的原生支持。但是,有些框架可以让你在常用的语言里使用它,如Java、Perl、Ruby、JavaScript,当然还有Microso什.NETFramework的语言。在.NET里,你通过....

2018-10-18 10:03:58 613 1

原创 软件设计原则——如果一那么一抛出 模式

如果一那么一抛出 模式if-else-throw 模式: 每个条件语句检查一个用来验证输入值的不同条件。如果条件没有通过验证,代码就会抛出异常。使用这个模式对于构造函数来说特别重要,因为它保证对象的状态是有效的。你不需要在私有方法里使用这个模式,因为这些方法只能从类自身调用,通常也是同一个作者调用。public class Match{ public Macth(string id,st...

2018-10-17 21:56:36 171

原创 软件设计原则——编码向量

文章目录编码向量KISS-Keep It Simple,StupidYAGNI——You Ain't Gonna Need ItDRY——Don't Repeat Yourself说,别问——Tell,Don’t Ask编码向量软件上,“向量”指代同时表达大小和方向的原则。在这种情况下,我们认为方向比大小优先。对于这里提到的原则,我们应该关注它们指出的方向而不是引入代码库的具体模式。这些原则用...

2018-10-17 21:12:36 478

原创 软件设计原则——处理依赖的模式

文章目录处理依赖的模式服务器定位模式适用场景缺点依赖注入模式处理依赖的模式服务器定位模式void Copy(){ Byte byte; var reader = ServiceLocator.GetService<IReader>(); var writer = ServiceLocator.GetService<IWriter>(); ...

2018-10-15 16:40:09 260

原创 软件设计原则——SOLID原则

文章目录SOLID原则单一责任原则开放/封闭原则里民代换原则常见代码问题错误示例代码辅助工具接口分离原则依赖反转原则SOLID原则单一责任原则(SRP)开放/封闭原则(OCP)里氏代换原则(LSP)接口分离原则(ISP)依赖反转原则(DIP)对象建模并不容易,而且也不是精确科学。原则的存在大多数情况下告诉你做事的方式.一一给予指导,可能为你指明正确的方向。建模的整个要点是找到正确...

2018-10-15 16:00:21 1856

原创 软件设计原则——多用组合少用继承

文章目录组合和继承白盒继承的缺点黑盒对象组合示例RegisteredUser和User的关系对象组合的好处组合和继承实现重用的两个途径:白盒和黑盒重用。白盒基于类的继承,但要承受继承的缺点。黑盒基于对象组合。白盒public class RegisteredUser : User{ ...}继承的缺点派生类继承了父类的上下文,获得父对象状态的某种可见性。随着不同版本派生类的出现...

2018-10-15 11:16:46 1132

原创 软件设计原则——为什么要面向接口编程

文章目录为什么要面向接口编程如果有以下状况解决为什么要面向接口编程如果有以下状况public class SomeComponent{ public void DoWork(){ Logger logger = new Logger(); var data = GetData(); logger.Log(data); }}SomeComponent类与Logger...

2018-10-14 18:15:10 958

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除