程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 這也是C#代碼嗎 --- 代碼閱讀性進階:中文為王

這也是C#代碼嗎 --- 代碼閱讀性進階:中文為王

編輯: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);   www.2cto.com
81
82         private static ExamDetailGet subject;
83         private static ExamDetailDTO result;
84     }
85 }
作者:hwonner

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved