日期:2014-05-18  浏览次数:20799 次

这也是C#代码吗 --- 代码阅读性进阶:中文为王

没有太多的罗嗦,代码本身已经足够。如果,要添几个标签的话就是: 中文化,流畅性接口(Fluent Interface),API.

只有几点补充说明:
1。 这都是真实可运行的代码,请看测试状态: 点击Login as guest
2。 测试使用Machine Specification, 重点是Establish部分。
3。仅仅使用于集成测试(用户故事);不建议业务领域和单元测试使用。
4。这里只列出最终使用代码(测试说明一切);避免细节/实现的干扰。实现请看: Examples.cs "一个“语法的实现 ”要“语法实现

 

文章发布后,很多的评论,特作出以下解释:

  • 这一段代码的技术重点,首先是行为驱动开发(BDD), 偏重于需求描述(测试用例),而轻编程能力。
  • 第二个技术点,流畅型接口, 对内是功能封装,对外是使用接口(API). 用Facade模式来看待,会更好理解。如果在功能实现内部使用Facade当然会头痛。
  • 最后,才是使用中文。即使,不用中文,前两点也会很有用。
  • 我是实践派,不是学院派。这是我实际项目的真实代码,不是为了装酷。

得心应手武器库:

  • MSpec

 本文所涉及使用的工具, 见前文:我的.Net武器库 ------ 新.Net架构必备工具列表

 使用的视屏演示:

 

 1 using System.Linq;
 2 using Machine.Specifications;
 3 using Skight.Arch.Domain;
 4 using Skight.Arch.Domain.Core.Containers;
 5 using Skight.Arch.Domain.Extensions;
 6 using Skight.Arch.UserStories.Helpers;
 7 using Skight.ES.Register.Presentation;
 8 using Skight.ES.Register.Presentation.Modal;
 9 using Skight.ES.Register.Presentation.Web.Application;
10 using Skight.ES.Register.Presentation.Web.ExamDistrictAdmin;
11 using Skight.ES.Register.Services;
12 using Skight.ES.Register.UserStories.Helpers;
13 
14 namespace Skight.ES.Register.UserStories.作为.考区组考人.我想查看考试从而可以了解考试信息
15 {
16     [Subject("考试"), Tags("集成测试", "用户故事")]
17     public class 当浏览某考试界面 : CommandTestBase
18     {       
19         private Establish that =
20             () =>
21