新聞中心
軟件要越來(lái)越人性化,就要代替人干很多事情。軟件干的事情越多,程序設(shè)計(jì)就越來(lái)越復(fù)雜。程序越來(lái)越復(fù)雜,Programer 就有義務(wù)使程序盡可能的 Simple。

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比禹城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式禹城網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋禹城地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。
當(dāng)然,這個(gè) Simple 并不是簡(jiǎn)化需求來(lái)使代碼量減少,而是運(yùn)用智慧,使代碼達(dá)到“繁而不亂”的效果。
對(duì),繁而不亂,這是藝術(shù)!
為什么要求代碼“繁而不亂”?這要從代碼的使用角度說(shuō)起。
代碼,說(shuō)白了,是一種人與計(jì)算機(jī)交互的語(yǔ)言,它的使用對(duì)象有兩個(gè):計(jì)算機(jī),和人。
語(yǔ)言的作用是傳遞信息,而語(yǔ)言最根本的原則就是便于理解。
做為計(jì)算機(jī)語(yǔ)言,特別是現(xiàn)在流行的這些高級(jí)計(jì)算機(jī)語(yǔ)言,能不能被計(jì)算機(jī)閱讀和理解,強(qiáng)大的開(kāi)發(fā)工具隨時(shí)都會(huì)告訴你。而這些語(yǔ)言能不能被活生生的人類(lèi)理解,這就是人們自己的事兒了。
有些人堅(jiān)定的認(rèn)為,代碼寫(xiě)出來(lái)就是給計(jì)算機(jī)執(zhí)行的,其它問(wèn)題一概不管。這倒干脆,不過(guò)這是非常危險(xiǎn)的。因?yàn)榇a不只是給計(jì)算機(jī)運(yùn)行的,還有一個(gè)重要的作用就是給人閱讀的。至少,你寫(xiě)完代碼需要自己 Debug 一下吧……
其實(shí),自從有了面向?qū)ο笳Z(yǔ)言,實(shí)現(xiàn)代碼的繁而不亂已經(jīng)非常的 Easy 了。不光 Easy,而且還顯得是那么的優(yōu)雅。
語(yǔ)言都是相通的,設(shè)計(jì)者們?cè)谠O(shè)計(jì)計(jì)算機(jī)語(yǔ)言的時(shí)候賦予了它太多人類(lèi)語(yǔ)言的特征。所以,設(shè)計(jì)一個(gè)優(yōu)秀的程序,只需要好好理解我們平時(shí)所講的話,直接用計(jì)算機(jī)語(yǔ)言表達(dá)出來(lái),就絕對(duì)是非常棒的程序。
怎么把人類(lèi)語(yǔ)言翻譯成計(jì)算機(jī)語(yǔ)言?簡(jiǎn)單來(lái)講,注意以下兩點(diǎn)就行了:
- 所有名詞(代詞),翻譯成屬性
- 所有動(dòng)詞,翻譯成方法
舉個(gè)簡(jiǎn)單的例子,拿我們平時(shí)最常說(shuō)的一句話,來(lái)翻譯一下:“我看你妹”。簡(jiǎn)單的四個(gè)字,三個(gè)稱(chēng)謂(代詞),一個(gè)動(dòng)詞。翻譯成計(jì)算機(jī)語(yǔ)言,就是:
- 我.看(你.妹) I.See(You.Sister)
I 的行為 See,對(duì)象是 You 這個(gè)對(duì)象的 Sister 屬性。我不管 You 的 Sister 屬性是誰(shuí),叫什么。當(dāng)然,如果 You 的 Sister 屬性為空,即你沒(méi)有妹妹,那么 See 這個(gè)方法就沒(méi)法執(zhí)行了,應(yīng)該直接跳出。(**8.26 9:49添加該段**)
怎么樣?是不是對(duì)整個(gè)業(yè)務(wù)邏輯一目了然?
基于這個(gè)思想,現(xiàn)實(shí)中的一切都可以使用面向?qū)ο蟮乃枷雭?lái)武裝。
屬性的設(shè)計(jì)比較簡(jiǎn)單,許多人往往會(huì)糾結(jié)于程序中的方法的設(shè)計(jì),比如代碼過(guò)長(zhǎng)的大方法,還有邏輯過(guò)于復(fù)雜的笨方法。下面拿一個(gè)稍復(fù)雜一點(diǎn)的業(yè)務(wù)來(lái)實(shí)現(xiàn)一下以人為本的方法設(shè)計(jì)。
比如,今天早上我一覺(jué)醒來(lái),睜開(kāi)眼,開(kāi)始計(jì)劃今天的安排?;谌祟?lèi)的自然使命,和我個(gè)人的社會(huì)責(zé)任感,今天我可能要干很多事情。首先我要起床、洗漱、吃早點(diǎn)、上班、工作、吃飯、工作、下班、吃飯,可能我還要下班回家的路上去一趟超市買(mǎi)點(diǎn)東西,晚上吃完飯?jiān)汆艘粫?huì)兒(可以打打牌,上上網(wǎng),看看電視),最后睡覺(jué)。這樣,今天就結(jié)束了。所以,我的大腦里立刻就會(huì)出現(xiàn)下面這樣一份“今日計(jì)劃”清單:
- 起床
- 洗漱
- 吃飯
- 上班
- 工作
- 吃飯
- 工作
- 下班
- 買(mǎi)東西
- 吃飯
- 休閑
- 睡覺(jué)
如果,我把我今天的計(jì)劃設(shè)計(jì)成一個(gè)程序,“今日計(jì)劃”的執(zhí)行方法里只寫(xiě)這 12 行代碼,無(wú)論誰(shuí)來(lái)看,都能一目了然的知道我今天都要干些什么事情了。至于你起床時(shí)是把被子用手掀開(kāi)還是用腳蹬掉,起床穿衣服時(shí)是先穿褲子還是先穿內(nèi)褲,這是你做“今日計(jì)劃”的時(shí)候不去考慮的問(wèn)題,也是跟本不用你詳細(xì)考慮的問(wèn)題,也是閱讀你代碼的人不會(huì)直接關(guān)心的問(wèn)題,這些都屬于“起床”這個(gè)子業(yè)務(wù)的任務(wù),或者是“起床”這個(gè)業(yè)務(wù)的子業(yè)務(wù)。比如,我的“起床”方法就這樣設(shè)計(jì):
- 伸個(gè)懶腰
- 掀開(kāi)被子
- 坐起來(lái)
- 穿衣服
- 坐到床邊上
- 穿鞋子
- 下床
同樣,如果誰(shuí)想了解我起床的過(guò)程,看這幾行代碼,還是一目了然。同樣,穿衣服的過(guò)程都設(shè)計(jì)到“穿衣服”方法里,有條有理。
另外,至于吃完晚飯的休息時(shí)間,我可能打牌,可能上網(wǎng),可能看電視,具體的決定,是看到時(shí)我具體的心情,所以我做計(jì)劃時(shí)安排的是一個(gè)“休閑”時(shí)間,在這個(gè)休閑時(shí)間里,可以獲取我的心情狀態(tài),根據(jù)不同的狀態(tài),來(lái)執(zhí)行不同的休閑方式。
不過(guò),具體的打牌、上網(wǎng)、看電視,它們不是“休閑”方法的邏輯,所以也會(huì)單獨(dú)的封裝成一個(gè)方法來(lái)處理。
以這種方式來(lái)分的話,整個(gè)程序邏輯清楚,結(jié)構(gòu)分明。更重要的是,讓讀者易于理解。根本不會(huì)存在難理解的“大方法”和業(yè)務(wù)復(fù)雜的“笨方法”。
最后,我極力的不贊成使用數(shù)字來(lái)限制程序,非常不喜歡有些人拿出一些所謂的“科學(xué)”數(shù)字來(lái)做為編碼準(zhǔn)則。例如:人類(lèi)同時(shí)關(guān)注的事情不超過(guò)三個(gè),人類(lèi)同能夠同時(shí)處理的信息不超過(guò)七個(gè),以及過(guò)于濫用的二八原則,還有頁(yè)面大小25行等等。人類(lèi)的腦袋差別太大了,這世界上的特殊情況太多了,以及各個(gè)開(kāi)發(fā)人員顯示器分辯率也差別太大了,所以任何用固定數(shù)字來(lái)做為行為準(zhǔn)則的,都有些失之偏頗了。真的完全不建議。(除非你是項(xiàng)目經(jīng)理,在制定項(xiàng)目規(guī)范)
注:由于規(guī)定,文章內(nèi)容個(gè)別用詞已經(jīng)更改。
原文鏈接:http://www.cnblogs.com/zhhh/archive/2012/08/26/2657088.html
網(wǎng)頁(yè)題目:以人為本的程序的設(shè)計(jì)
當(dāng)前URL:http://m.5511xx.com/article/cohhcii.html


咨詢(xún)
建站咨詢(xún)
