<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    從JAVA里面的不一致性,淺談設計問題

    Posted on 2006-11-20 21:50 itspy 閱讀(2315) 評論(10)  編輯  收藏 所屬分類: 設計模式JAVA技術

    ?? 在JAVA里面,有如下幾個不一致的地方
    ?? 得到數組的大小,要通過length屬性
    ?? 得到String的大小,要用length方法
    ?? 得到集合(比如List,Set)的大小,要使用size方法。

    ?? 反正我是記憶這些有好多次了,結果剛才寫這篇Blog時,還要去查文檔,要不然寫錯了被人罵就虧大了。當然JAVA類庫這樣設計也許有它的道理,但我想從使用的角度來想,也許把這三個統一(只使用一種)起來會更好。


    ?? 我說的這個不一致性,我想也許有些人不認同,所以一直放在心里沒有說明。但今天我發現有一位大師和我的想法一樣,于是腰桿子變硬了,于是寫了這個Blog給大家分享。


    ?? 這位大師就是《Effective C++》的作者,他在這本書中也得到了,STL在這方面就做的特別一致。(不好意思,拉個虎皮做大衣了^__^)


    ?? 說到這我又想起以前一個同學做的一個軟件,它設計了一個類似資源管理器的軟件,使用樹狀結構來管理一些資源。在給我看的時候,我發現我添加一些節點時,老是彈出這樣的錯誤提示:“這是樹的根,一個樹只有一個根”。我才發現他把開發中的思維帶入了,程序設計與開發中,沒有從使用者的角度來想。

    ?? 沒錯,一個樹是只有一個根,你的軟件也許是要使用樹結構來管理才方便,但是你如果考慮到使用者的感受你就不會出現這樣的錯誤提示了。我當時就向他提議:比如可以這樣,如果你把根隱藏起來,不讓使用者看到,這樣你不就可以使用樹的結構,但是使用者在使用時就沒有這樣的限制。

    ?? 看看Windows的資源管理器,我們平時也知道他的設計是一個樹,但是沒有人留意到,它是一個嚴格的樹嗎?你一直往上走的時候,最終的結點是桌面,他明顯不是樹的根,而只是樹上的一個支結點。這樣的設計太符合我們的使用習慣,以至于我們平時都忽略了它,對它熟視無睹。

    ???反正我是認識,就向實踐是檢驗真理的唯一標準一樣。一好好的設計的檢驗就要看,這個設計的最終使用者的體驗來檢驗。上面的那個JAVA的不一致性,如果大多數JAVA語言開發者都遇到了我這樣的問題,那么這個設計肯定是有它的不足的了。



    評論

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    似乎只有他自己認為是C++領域權威吧,而他實際只是一個技術講師而已。

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

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

    不好意思,在我心目中它是大師,我想肯定很多人也是這樣認為的。當然是在C++領域。


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

    有一個側面可以反應這個問題,經常在考試時就有題目考這個:數組如何得到它的大小,集合又如何得到,String又如何得到。
    為什么會有這些考題?說明有人會搞錯,如果人人都知道,也就不會考了。如果都用一個統一的標準來取得的話,大家就不會搞錯了。比如都用size()方法,這樣也能說過去。

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    size()是方法啊..這個不能算設計不一致吧.

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

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

    JAVAScript
    數組 array.length
    String array.length

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

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

    # re: 從JAVA里面的不一致性,淺談設計問題  回復  更多評論   

    2007-04-08 13:13 by dennis
    現代IDE工具的幫助下,不可能再寫錯這樣的代碼吧。另外,如果有公司對新手考這樣的題目還可以接受,如果招中高級職位還考這樣的題目,立馬可以走人,這樣的公司不進也罷。談到API設計,我認為ruby是設計的最好的,通過別名的方式,你在ruby中可以用size也可以用length,兩者其實是一個方法,一個是另一個別名。
    主站蜘蛛池模板: 又粗又大又长又爽免费视频 | 亚洲第一页在线视频| 日韩精品一区二区亚洲AV观看| 国产亚洲精品美女| 啦啦啦中文在线观看电视剧免费版 | 中文字幕一区二区三区免费视频| 四虎在线播放免费永久视频| 亚洲性猛交XXXX| 又粗又长又爽又长黄免费视频| 日本高清高色视频免费| 国产专区一va亚洲v天堂| 青娱乐在线免费观看视频| 一级毛片在线免费观看| 免费国产美女爽到喷出水来视频| 无码乱人伦一区二区亚洲一| 亚洲αⅴ无码乱码在线观看性色| 久久久久久国产a免费观看黄色大片| 91大神亚洲影视在线| 久久爰www免费人成| 亚洲精品无码不卡| 久久久免费精品re6| 亚洲网址在线观看你懂的| 国产精品亚洲专区无码牛牛| 国产在线19禁免费观看国产| 精品亚洲成AV人在线观看| 97av免费视频| 久久久久亚洲AV无码专区网站| 亚洲AV无码乱码在线观看代蜜桃| 中文字幕手机在线免费看电影| 在线免费观看中文字幕| 亚洲av永久中文无码精品综合| 最近2019中文字幕mv免费看| 亚洲另类无码一区二区三区| 69视频免费在线观看| 亚洲免费电影网站| 成年人在线免费看视频| 少妇中文字幕乱码亚洲影视| 日韩av无码久久精品免费| 亚洲区视频在线观看| 久久99精品免费视频| 亚洲中文字幕在线第六区|