也是第一次寫部落格,萌新程式設計師一枚,寫的不好或者**不行請見諒,勿噴,謝謝~~
初始需求
我們經常會遇到需要解析命令列引數的場景。如果沒有趁手的工具,我們可以自己寫乙個,自己想辦法處理傳給main函式的引數。
傳入乙個程式的引數包含了「標記」(flag)和「值」(value)。標記都是乙個字母,前面加上「-」號(例如「-p」這樣)。每個標記可以有乙個值與之對應,也可以沒有對應的值。
我們要開發乙個解析器(parser)來處理這些引數。這個解析器需要乙個引數結構(schema)來描述「這個程式應該接受哪些引數」的資訊,包括:
應該有幾個標記;
每個標記應該是什麼型別;
每個標記的預設值是什麼。
引數結構指定好以後,就可以把實際接收到的引數列表傳給引數解析器。解析器會首先驗證引數列表是否與引數結構相匹配。然後,程式就可以向引數解析器查詢每個引數的值(根據引數的標記名)。返回值的型別應該與引數結構中規定的型別相一致。
例如,程式接收到的引數是這樣:
-l -p 8080 -d /usr/logs
那麼對應的引數結構應該規定3個標記:l、p、d
l(logging,是否記錄日誌)標記沒有與之對應的值,這是乙個布林型的標記,如果傳入了「-l」就為true,否則為false。
p(port,埠號)標記的值是整數型。
d(directory,目錄)標記的值是字串型。
如果引數結構中規定了的標記在實際的引數列表中沒有出現,那麼就應該返回合理的預設值,例如布林型的預設值可以是false,數值型的預設值可以是0,字串型的預設值可以是空字串。
internal class
args
public object getvalue
(string name)
}
public
class
commandtest
[fact]
public
void
test_commd_has_no_value()
[fact]
public
void
test_commd_has_no_negative()
}
using system;
using system.collections;
using system.collections.generic;
using system.linq;
using system.text;
namespace argstest
else
}else}}
private
static bool isvalue
(string value)
if(value.
indexof
("-")==
0)if(convert.
toint32
(value_one)
>=
0&& convert.
toint32
(value_one)
<=9)
}return
false;}
public string getvalue
(string name)
}}
using system;
using system.collections;
using system.collections.generic;
using system.linq;
namespace argstest);
}public object getvalue
(string name, string strvalue)}}
}
using system;
using system.collections.generic;
using system.text;
using xunit;
namespace argstest
[fact]
public
void
test_int()
[fact]
public
void
test_string()
}}
using system;
using xunit;
namespace argstest
[fact]
public
void
args_test_number()
}}
微服務模式下的TDD實踐指南
1.1 單元測試和tdd 1.2 實施tdd的目的 1.3 微服務中的測試2.1 基本過程 2.2 過程說明 2.3 tdd實踐 tdd開發人員,可遵循上述開發過程,每次只關注乙個事情,經常切換三頂帽子 紅帽子 綠帽子 藍帽子 tdd基本過程如下 對於tdd的初學者,很多人會覺得寫測試會占用較多開發...
極限程式設計下的TDD
極限程式設計時是軟體開發中擁抱變化的產物。測試驅動開發 test driven development 是極限程式設計中倡導的程式開發方法,以其倡導先寫測試程式,然後編碼實現其功能得名。測試驅動開發始於20世紀90年代。測試驅動開發。測試驅動開發的目的是取得快速反饋並使用 illustrate th...
基於spring下的TDD開發
好些日子沒有寫blog了,因為,看著自己的日誌的質量一天比一天低,就好像乙個一天天老去的女人看著自己的臉日漸老去一樣難受,還不如忘卻的好.在這樣的心態下,前兩天看到自己的blog在csdn的 排行榜 一天天下降,竟然沒有任何的感覺.但blog中的質量比較差的文章,我是不會去刪的,畢竟那是自己的學習和...