Re: [問題] 關於字串比對的小問題

看板java作者 ( )時間14年前 (2012/01/31 23:16), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《samtree (嗯....?)》之銘言: : ※ 引述《awert ( )》之銘言: : : 理論上是第二種,差別單純在於 : : a如果是null時,不會有NullPointerException : : 但我覺得微調這個沒有太大意義就是了.. : 對我而言 : 這兩種寫法已經不是哪種較好的問題了 : 第一種寫法根本就是錯誤的寫法 : (當然如果你百分之百確定該字串絕對不會是null) : 或是你真的需要丟 nullPointerException : (不過例外處理的成本比判斷是否為 null 高出許多) 用推文有點慢.. 我的想法是這樣子的,這個idiom並沒有問題。 但是,實際寫code時遇到要處理null問題時, 我不會鑽牛角尖考慮哪一種處理null的方式比較漂亮/有效率, 而是要先看為什麼要處理null。 有時候要判斷為null都是因為其他code不必要的動作 舉例來講 public String getString() { if (someCondition()) { return myString; } return null; // bad } public String getList() { if (hasMoreThanZero()) { return myList; } return null; // bad } 上面第一個method可以考慮使用空字串,第二個則是空list如Collections.emtpyList() 如果是物件,那麼是否能用null object ? 這些都是可能可以改進的地方, 當然,有時候這些東西不是單一一個programmer可以去決定的事, 也不會這麼巧都可以解決,所以我們得乖乖的處理null。 這時,就要考慮到第二點,怎麼處理比較有效率。關於這點, 我認為是不需要考慮,等到是因為這樣而造成效率低落時再說, 更何況其實上面的寫法也只是將判斷丟給String的equals裡面。 第三點是,是否該允許null出現 如果a不該為null,那麼這個idiom不就隱藏了一個可能潛在的問題 ? 最後一點則是比較我個人較龜毛的想法, SOME_CONSTANTS.equals(a)乍看之下很棒,不需要去處理 可是當實際他人在維護/更改code時,可能會造成一點困擾, 因為code裡並沒有清楚的提醒閱讀者,這個a可能是null。 -- We who cut mere stones must always be envisioning cathedrals. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.186.241

02/01 01:22, , 1F
如果只是判斷某字串跟a是否相等,那a是不是null根本不重要
02/01 01:22, 1F

02/03 01:22, , 2F
推awert的想法
02/03 01:22, 2F
文章代碼(AID): #1FA0NMOq (java)
討論串 (同標題文章)
文章代碼(AID): #1FA0NMOq (java)