<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 82, comments - 269, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    ?? 在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ì)肯定是有它的不足的了。



    評(píng)論

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-21 08:46 by 溫少的日志
    Scott Meyers是大師啊,笑死人了。

    似乎只有他自己認(rèn)為是C++領(lǐng)域權(quán)威吧,而他實(shí)際只是一個(gè)技術(shù)講師而已。

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-21 09:36 by Samuel Cai
    你舉的例子不對(duì),String就應(yīng)該是得到長度(length),集合是得到大小(size),如果集合也用length的話,那才是怪呢。

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-21 12:47 by itspy
    @溫少的日志

    Scott Meyers是大師啊,笑死人了。

    不好意思,在我心目中它是大師,我想肯定很多人也是這樣認(rèn)為的。當(dāng)然是在C++領(lǐng)域。


    @Samuel Cai
    String就應(yīng)該是得到長度(length),集合是得到大小(size),
    如果都用大小不是也行嗎?這樣更容易記憶一些。

    有一個(gè)側(cè)面可以反應(yīng)這個(gè)問題,經(jīng)常在考試時(shí)就有題目考這個(gè):數(shù)組如何得到它的大小,集合又如何得到,String又如何得到。
    為什么會(huì)有這些考題?說明有人會(huì)搞錯(cuò),如果人人都知道,也就不會(huì)考了。如果都用一個(gè)統(tǒng)一的標(biāo)準(zhǔn)來取得的話,大家就不會(huì)搞錯(cuò)了。比如都用size()方法,這樣也能說過去。

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-23 11:05 by leo[匿名]
    length是屬性

    size()是方法啊..這個(gè)不能算設(shè)計(jì)不一致吧.

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-23 13:48 by itspy
    樓上的可能沒明白我的意思。

    如果都用屬性,或者都用方法這樣不是更容易使用嗎?

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-11-23 16:41 by BeanSoft
    對(duì)對(duì), 整天嚷嚷易用性, 我看 Java 整體趨勢(shì)就是越來越難用了.

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2006-12-05 09:49 by itVincent
    String就應(yīng)該是得到長度(length),集合是得到大小(size),一個(gè)屬性一個(gè)方法,使用上會(huì)有不同,含義也有不同,我覺得不需要一樣,就算要改,而這個(gè)極其影響兼容性的問題也不好說,最多加一個(gè)方法,原來的還是會(huì)保留的

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2007-02-06 10:49 by itspy
    并且Java與JavaScript也不一樣。

    在這兩種語言里面對(duì)數(shù)組與String取長度的方法分別為:
    JAVA
    數(shù)組 array.length array.length
    String array.length() array.length

    JAVAScript
    數(shù)組 array.length
    String array.length

    反正我是每次在JAVA里面對(duì)數(shù)組,String,List之類的東西取長度時(shí),都要心里一慌,要查文檔。每次當(dāng)時(shí)都是記住了,事后過幾天就又忘記了。

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2007-03-23 17:24 by yuri
    這幾個(gè)確實(shí)很難分,尤其是length屬性與length方法,每次用的時(shí)候都要查一遍確保沒用錯(cuò)

    # re: 從JAVA里面的不一致性,淺談設(shè)計(jì)問題  回復(fù)  更多評(píng)論   

    2007-04-08 13:13 by dennis
    現(xiàn)代IDE工具的幫助下,不可能再寫錯(cuò)這樣的代碼吧。另外,如果有公司對(duì)新手考這樣的題目還可以接受,如果招中高級(jí)職位還考這樣的題目,立馬可以走人,這樣的公司不進(jìn)也罷。談到API設(shè)計(jì),我認(rèn)為ruby是設(shè)計(jì)的最好的,通過別名的方式,你在ruby中可以用size也可以用length,兩者其實(shí)是一個(gè)方法,一個(gè)是另一個(gè)別名。
    主站蜘蛛池模板: 亚洲国产精品人久久电影| 久久久亚洲精品视频| 日本亚洲免费无线码| 一个人在线观看视频免费| 亚洲AV日韩AV永久无码免下载| 国产在线观a免费观看| 亚洲宅男天堂在线观看无病毒| fc2成年免费共享视频18| 国产亚洲人成A在线V网站| 99久久婷婷免费国产综合精品| 亚洲综合av永久无码精品一区二区 | 亚洲卡一卡2卡三卡4麻豆| 免费观看激色视频网站bd | 高h视频在线免费观看| 久久乐国产精品亚洲综合| 国产精品永久免费| 亚洲成AV人片在| 日韩精品久久久久久免费| 亚洲a级在线观看| 免费羞羞视频网站| 性生大片视频免费观看一级 | 亚洲精品在线观看视频| 91青青青国产在观免费影视| 亚洲国产精品yw在线观看| 国产香蕉九九久久精品免费| 亚洲国产精品精华液| 亚洲精品无码久久毛片| 免费精品99久久国产综合精品| 亚洲欧洲日产国码二区首页| 好男人视频社区精品免费| 青青草国产免费国产是公开| 亚洲AV综合色区无码一区| 97视频热人人精品免费| 国产精品亚洲一区二区三区 | 亚洲Av无码精品色午夜 | 一级做a爰全过程免费视频毛片| 亚洲免费观看视频| 精品久久久久国产免费| yellow免费网站| 亚洲乱码一二三四区国产| 亚洲AV日韩精品一区二区三区|