`
tempsitegoogle
  • 浏览: 885739 次
文章分类
社区版块
存档分类
最新评论

这也是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             {
22                 要.创建(示例.考区.省直);
23 
24                 要.创建(示例.考试定义.计算机)
25                     .添加科目(示例.科目.AutoCAD)
26                     .添加科目(示例.科目.Windows2000)
27                     .添加科目(示例.科目.WindowsExcel);
28 
29                 要.创建(示例.考试.省直2012年1月计算机考试)
30                     .设为电子化考试()
31                     .设置考试起始时间(Date.Of(2012,1,1),Date.Of(2012,2,1))
32                     .设置审核()
33                     .设置考场容量(50)
34                     .设置科目费用(Money.of(100))
35                     .添加科目(示例.科目.AutoCAD)
36                     .添加科目(示例.科目.Windows2000)
37                     .添加科目(示例.科目.WindowsExcel)
38                     .添加个人信息定义(示例.个人信息定义.姓名)
39                     .添加个人信息定义(示例.个人信息定义.性别)
40                     .添加个人信息定义(示例.个人信息定义.身份证)
41                     .添加考场(示例.考场信息定义.考场01)
42                     .添加考场(示例.考场信息定义.考场02)
43                     .添加考场(示例.考场信息定义.考场03); ;
44 
45                 var exam_service = Container.get<ExamService>();
46                 subject = new ExamDetailGet(exam_service);
47                 ui.load_context_data(Keys.Context.ExamDate.with_value(示例.考试.省直2012年1月计算机考试));
48             };
49 
50         private Because of =
51             () =>
52             {
53                 subject.process(ui);
54                 result = ui.get_model<ExamDetailDTO>(Views.DisplayExamDetail);
55             };
56 
57         private It 应该显示考试科目列表 =
58             () => result.Subjects.Select(s=>s.Code)
59                       .ShouldContainOnly(示例.科目.AutoCAD.Code, 示例.科目.Windows2000.Code, 示例.科目.WindowsExcel.Code);
60 
61         private It 应该显示考试开始日期 =
62             () => result.BeginDate.ShouldEqual(Date.Of(2012, 1, 1));
63         private It 应该显示考试结束日期 =
64             () => result.EndDate.ShouldEqual(Date.Of(2012, 2, 1));
65 
66         private It 应该显示是否电子化考试 =
67             () => result.IsElectronicExam.ShouldBeTrue();
68         private It 应该显示是考试考场容量 =
69             () => result.ExaminationRoomCapacity.ShouldEqual(50);
70 
71         private It 应该显示是否考试报名需要审核 =
72             () => result.NeedInspection.ShouldBeTrue();
73         private It 应该显示考试默认科目费用 =
74             () => result.DefaultCharge.ShouldEqual(Money.of(100));
75 
76         private It 应该显示报考人员信息项目 =
77             () => result.PersonalInfoDefs.ShouldContainOnly(示例.个人信息定义.姓名, 示例.个人信息定义.身份证, 示例.个人信息定义.性别);
78 
79         private It 应该显示考试相关考场信息 =
80             () => result.Scenes.ShouldContainOnly(示例.考场信息定义.考场01, 示例.考场信息定义.考场02, 示例.考场信息定义.考场03);
81 
82         private static ExamDetailGet subject;
83         private static ExamDetailDTO result;
84     }
85 }

分享到:
评论

相关推荐

    C#进阶学习-帮你打通各个薄弱环节

    这份"C#进阶学习"资料集合了多个关键领域,旨在帮助学习者全面提升自己的技能。 1. **面向对象编程**:C#是一种强类型、面向对象的语言,理解类、对象、继承、封装和多态是进阶学习的基础。深入学习接口、抽象类...

    C# 入门至进阶 C# 入门至进阶

    本教程将引导你从入门到进阶,全面掌握C#的核心概念和技术。 首先,让我们从C#的总体框架开始。在C#中,一个基本的程序通常从`using`语句开始,它导入需要的命名空间,如`System`,这样你就可以使用如`Console`这样...

    c#学习代码大全--内附实现方法及代码,手把手教你如何编程

    《C#学习代码大全》是一本面向初学者和进阶者的编程教程,它涵盖了C#语言的基础知识、核心概念以及实战技巧。通过本书,读者可以系统地了解C#编程,并逐步掌握实际开发中的各种技能。"Visual_C_时尚编程百例_...

    c#高级进阶资料

    本篇将深入探讨C#的高级进阶知识,包括泛型、反射、LINQ、设计模式以及多线程技术,并浅析如何进行百万级数据库优化。 **一、泛型** 泛型是C#中的一个重要特性,它允许我们在不指定具体数据类型的情况下定义方法、...

    C#进阶教程-微软出版

    《C#进阶教程——微软出版》是一本深入讲解C#编程语言的权威书籍,源自微软官方,由Visual C# 2005版本为基础进行阐述。这本书旨在帮助程序员从基础知识过渡到高级技术,全面掌握C#编程的核心概念和实用技巧。 首先...

    C#进阶手册

    《C#进阶手册》是一本专为C#开发者准备的深入学习资源,它涵盖了C#语言的高级特性和实际应用技巧。这份手册对于已经掌握C#基础的程序员来说,是提升技能、深入理解C#内在机制的重要参考资料。在本文中,我们将详细...

    C#面向对象练习进阶

    在编程世界中,C#是一种广泛使用的面向...总之,“C#面向对象练习进阶”是一套帮助开发者深化面向对象编程理解的资料,涵盖了C#中的关键OOP概念和实践技巧,通过学习和实践,你将能够编写出更加高效、可维护的C#代码。

    C#入门到精通全部源代码----2

    作为"C#入门到精通全部源代码----1"的延续,这个压缩包包含了一系列的源代码文件,旨在帮助初学者和进阶者深入理解和实践C#的核心概念和技术。以下是基于提供的文件名(21、18、16、22、19、20)所涵盖的C#关键知识...

    c#面向对象练习进阶

    在C#编程语言中,面向对象编程(Object-Oriented Programming, OOP)是一种核心的编程范式,它基于“对象”概念,使得代码结构更加清晰、可维护性更强。本资料“c#面向对象练习进阶”是作者花费半个月时间精心整理的...

    c# SECS SECS-II HSMS 源码及资料全集

    7. **学习资源**:对于希望进入半导体设备通讯领域的开发者来说,这个资料集可能是入门和进阶的重要教材,涵盖了理论知识和实践代码,有助于提升技能。 8. **调试与测试**:源码可能还包含了针对SECS和HSMS协议的...

    C#指南dotnet-csharp.pdf

    ### C#语言基础与进阶知识点详解 #### 一、C#语言概述 - **C#语言**: C#(发音为“C sharp...随着 C# 版本的不断更新,新特性也在不断推出,这使得 C# 成为了一个不断发展和进化的语言,为开发者带来了更多的可能性。

    C#简单小程序代码实现

    在C#编程语言中,开发简单小程序涉及到许多基础和进阶概念。本教程将通过五个模块,即Module 1至Module 5,逐步讲解如何利用C#实现诸如交通灯模拟等简单应用。以下是对每个模块内容的详细阐述: 1. **Module 1:C#...

    C#编程进阶(初级)

    在C#编程进阶(初级)的学习中,你将深入理解C#这门强大的面向对象编程语言的基础概念和核心特性。C#是由微软开发的一种广泛应用于Windows、Web和移动平台的编程语言,它以其易读性、高效性和丰富的库支持而受到...

    c#语言9-13代码

    这提高了代码的灵活性和效率,减少了类型转换的需求。 - 泛型类、接口和方法如List、Dictionary, TValue&gt;等是泛型的常见应用。 5. **委托与事件**: - 委托是类型安全的函数指针,可以用来传递方法作为参数或实现...

    C# .NET进阶实例

    《C# .NET进阶实例》是一本专为已经对C#编程有一定基础,并期望深入理解和应用.NET框架的开发者设计的教程。这本书旨在通过一系列的实际案例,帮助读者掌握C#和.NET Framework的高级特性和最佳实践,从而提升编程...

    C#进阶教程原版电子书 入门/提高都适合的好东东!

    这提高了代码的灵活性和重用性,同时减少了类型转换的需要。 2. **LINQ(Language Integrated Query)**:C#的查询语法使得数据查询变得简单直观,无论数据源是数据库、XML文件还是内存中的集合。通过LINQ,你可以...

    C#学习相关代码1-400

    这些代码涵盖了C#的基础到进阶知识,通过实际的源代码和可编译文件,我们可以深入理解C#的语法、类库和编程模式。 首先,让我们来了解一下C#这门语言。C#是由微软公司为.NET框架开发的一种面向对象的编程语言,它的...

    C#代码生成工具(源码)

    C#代码生成工具是一款强大的开发辅助软件,专为C#编程语言设计,旨在提高开发效率,减少手动编写重复代码的时间。这款工具的核心功能是能够自动生成MODEL(模型类)、DAL(数据访问层)以及Interface(接口),这三...

    C#初学者经典源代码下载合辑

    11. **设计模式**:虽然对初学者来说较为进阶,但合辑中可能包含一些常见的设计模式,如工厂模式、单例模式等,这些模式能够提升代码的可维护性和复用性。 提供的两个PDF文档,"源码必读.pdf"和"源码使用说明.pdf...

    C#源代码大全(基于C#程序设计的源程序)

    标签"C#源码"直接指明了内容的性质,这是一系列可以直接查看、编译和运行的C#代码片段,对于学习和调试C#程序至关重要。 在提供的压缩包中,"源代码1"可能是一个或多个C#项目的初始部分,包含了类、函数、控制流、...

Global site tag (gtag.js) - Google Analytics