程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 代碼整潔之道------它山之玉可以重構:身份證號碼解析、驗證工具(第一天)

代碼整潔之道------它山之玉可以重構:身份證號碼解析、驗證工具(第一天)

編輯:C#入門知識

原代碼給了我很好的起點,是的,這些代碼都是玉,我在這只是再琢磨琢磨。  即使如此,重構的過程依然很繁瑣,文章也許會很長,每一次的重構都需要把全部代碼顯示一遍。    知易行難, 重構是個動態過程, 不那麼容易呈現出來,需要點耐心,慢慢看啊。   1 - 轉化為C#代碼,增加第一個測試 是的,這不是必須的,可以說是我自己的原因,不會Java。但是,你也可以看作是一種重構的場景,不是嗎? 更改的代碼就不再放了,比較簡單,與C#和Java的區別有關,留個連接 SocialID.cs。可是,我的測試代碼卻很重要。可能很多人會诟病我的測試框架(Machine.Specification)和代碼風格。前者,我想以後會多介紹MSpec和BDD讓大家根熟悉,後者,只能是希望大家適應了。 ==>寫測試  www.2cto.com 第一個測試代碼:當用正確的輸入創建身份證時,應該能夠得到正確的生日。 [c#]   namespace Skight.eLiteWeb.Domain.Specs   {       public class  when_create_social_id_with_proper_input       {           private Because of = () => subject = new SocialID("43010319801120753");              private It should_get_birth_date_correctly =               () => subject.getBirthDate().ShouldEqual(new DateTime(1980, 11, 20));           private static SocialID subject;       }   }   ==>運行第一個測試,失敗 :)  有意思的是,解決C#語法翻譯之後,我的第一個測試就失敗了。
  ==>重構 原來,看似相同的語法Substring,第二個參數卻有不同的含義。再經典不過的場景了,測試可以理順這個過程。 [java]  private String getBirthDayPart() {           return this.cardNumber.substring(6, 14);       }   改為 [c#]  private String getBirthDayPart()   {   return this.cardNumber.Substring(6, 8);       }   ==>再測試
  ==>第一個迭代結束,休息. 好了,階段性的成果,一個測試/行為就可以標示為一個裡程碑,今天就到這裡了,你的支持,讓我明天繼續。 哦,少等. 最後一步,確實最重要的一步. 給我們客戶(這中情況下,我的客戶是其他開發人員,是的,高級程序員的客戶就是其他中級,初級程序員,換一下思想吧)的測試/功能報告,如下:
 

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