由于我怕文章的篇幅過(guò)長(zhǎng)會(huì)使人看了頭痛,所以,我打算分幾篇文章把《.NET設(shè)計(jì)規(guī)范》第二章的學(xué)習(xí)筆記寫(xiě)出來(lái),這樣大家看著不至于太累!大概是接下去總共五篇文章是說(shuō)“框架設(shè)計(jì)基礎(chǔ)”的......
對(duì)用戶(hù)而言,真正的開(kāi)發(fā)效率來(lái)自能夠輕易地創(chuàng)造出非凡的產(chǎn)品,而并非來(lái)自能夠輕易地創(chuàng)造垃圾。
場(chǎng)景驅(qū)動(dòng)設(shè)計(jì)的原則
框架通常包含非常大的一組API。但在開(kāi)發(fā)過(guò)程中,真正用到的只是其中較小的一個(gè)子集,只會(huì)涉及一小部分常用場(chǎng)景。
在設(shè)計(jì)框架時(shí),使用場(chǎng)景來(lái)驅(qū)動(dòng)。從用戶(hù)的角度,先自己編寫(xiě)一些對(duì)主要場(chǎng)景來(lái)說(shuō)必不可少的代碼,然后再設(shè)計(jì)對(duì)象模型(object model)來(lái)支持這些樣例代碼。
于功能性規(guī)范之前,先撰寫(xiě)一份場(chǎng)景驅(qū)動(dòng)的API規(guī)范,應(yīng)該列出一個(gè)給定的技術(shù)領(lǐng)域中最常用的5—10個(gè)使用場(chǎng)景,并列出實(shí)現(xiàn)這些場(chǎng)景的樣例代碼,至少用兩種語(yǔ)言編寫(xiě)。
- 要確保對(duì)任何包含公用API的特性設(shè)計(jì)來(lái)說(shuō),其核心部分都是API設(shè)計(jì)規(guī)范。
- 要為每個(gè)主要的特性域(feature area)定義一些最常用的場(chǎng)景。
- 要確保使用場(chǎng)景與適當(dāng)?shù)某橄髮哟蜗鄬?duì)應(yīng)。場(chǎng)景應(yīng)該大致與最終用戶(hù)的用例相對(duì)應(yīng)。
- 先為主要的使用場(chǎng)景編寫(xiě)樣例代碼,然后再定義對(duì)象模型來(lái)支持這些樣例代碼。
- 要用至少兩種不同的編程語(yǔ)言來(lái)為主要場(chǎng)景編寫(xiě)樣例代碼。
最好能保證所選編程語(yǔ)言的語(yǔ)法和風(fēng)格差異很大。
- 不要在設(shè)計(jì)框架的公用API時(shí)完全依賴(lài)于標(biāo)準(zhǔn)的設(shè)計(jì)方法。
標(biāo)準(zhǔn)的設(shè)計(jì)方法(包括面向?qū)ο蟮姆椒ǎ┦菫榱耸乖O(shè)計(jì)的具體實(shí)現(xiàn)容易維護(hù),而不是為了使得到的API易于使用。
以場(chǎng)景驅(qū)動(dòng)設(shè)計(jì)為主,輔以原型制作、可用性研究以及一定數(shù)量的迭代,這種方法要比標(biāo)準(zhǔn)的設(shè)計(jì)方法好得多。
可用性研究是為了確定開(kāi)發(fā)人員真正的需求。這跟需求獲取一樣,設(shè)計(jì)師此時(shí)化身為一名需求分析師,而開(kāi)發(fā)人員則變成了客戶(hù)。需求分析師不能想當(dāng)然的認(rèn)為客戶(hù)的真正需求是什么,一定要通過(guò)跟客戶(hù)交流才行,站在客戶(hù)的角度考慮問(wèn)題。跟需求獲取類(lèi)似,可用性研究宜早不宜遲。
- 要安排可用性研究來(lái)測(cè)試用于主要場(chǎng)景的API。
如果開(kāi)發(fā)人員在為主要場(chǎng)景編寫(xiě)代碼時(shí),遇到較大問(wèn)題,則說(shuō)明API需要重新設(shè)計(jì)。在原有API的基礎(chǔ)上修改,開(kāi)銷(xiāo)反而大,而且是很大。
待續(xù)....