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