Posted on 2006-11-20 21:50
itspy 閱讀(2315)
評(píng)論(10) 編輯 收藏 所屬分類:
設(shè)計(jì)模式 、
JAVA技術(shù)
?? 在JAVA里面,有如下幾個(gè)不一致的地方
?? 得到數(shù)組的大小,要通過length屬性
?? 得到String的大小,要用length方法
?? 得到集合(比如List,Set)的大小,要使用size方法。
?? 反正我是記憶這些有好多次了,結(jié)果剛才寫這篇Blog時(shí),還要去查文檔,要不然寫錯(cuò)了被人罵就虧大了。當(dāng)然JAVA類庫這樣設(shè)計(jì)也許有它的道理,但我想從使用的角度來想,也許把這三個(gè)統(tǒng)一(只使用一種)起來會(huì)更好。
?? 我說的這個(gè)不一致性,我想也許有些人不認(rèn)同,所以一直放在心里沒有說明。但今天我發(fā)現(xiàn)有一位大師和我的想法一樣,于是腰桿子變硬了,于是寫了這個(gè)Blog給大家分享。
?? 這位大師就是《Effective C++》的作者,他在這本書中也得到了,STL在這方面就做的特別一致。(不好意思,拉個(gè)虎皮做大衣了^__^)
?? 說到這我又想起以前一個(gè)同學(xué)做的一個(gè)軟件,它設(shè)計(jì)了一個(gè)類似資源管理器的軟件,使用樹狀結(jié)構(gòu)來管理一些資源。在給我看的時(shí)候,我發(fā)現(xiàn)我添加一些節(jié)點(diǎn)時(shí),老是彈出這樣的錯(cuò)誤提示:“這是樹的根,一個(gè)樹只有一個(gè)根”。我才發(fā)現(xiàn)他把開發(fā)中的思維帶入了,程序設(shè)計(jì)與開發(fā)中,沒有從使用者的角度來想。
?? 沒錯(cuò),一個(gè)樹是只有一個(gè)根,你的軟件也許是要使用樹結(jié)構(gòu)來管理才方便,但是你如果考慮到使用者的感受你就不會(huì)出現(xiàn)這樣的錯(cuò)誤提示了。我當(dāng)時(shí)就向他提議:比如可以這樣,如果你把根隱藏起來,不讓使用者看到,這樣你不就可以使用樹的結(jié)構(gòu),但是使用者在使用時(shí)就沒有這樣的限制。
?? 看看Windows的資源管理器,我們平時(shí)也知道他的設(shè)計(jì)是一個(gè)樹,但是沒有人留意到,它是一個(gè)嚴(yán)格的樹嗎?你一直往上走的時(shí)候,最終的結(jié)點(diǎn)是桌面,他明顯不是樹的根,而只是樹上的一個(gè)支結(jié)點(diǎn)。這樣的設(shè)計(jì)太符合我們的使用習(xí)慣,以至于我們平時(shí)都忽略了它,對(duì)它熟視無睹。
???反正我是認(rèn)識(shí),就向?qū)嵺`是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)一樣。一好好的設(shè)計(jì)的檢驗(yàn)就要看,這個(gè)設(shè)計(jì)的最終使用者的體驗(yàn)來檢驗(yàn)。上面的那個(gè)JAVA的不一致性,如果大多數(shù)JAVA語言開發(fā)者都遇到了我這樣的問題,那么這個(gè)設(shè)計(jì)肯定是有它的不足的了。