Re: [戰] getter / setter

看板java作者 (Terry)時間10年前 (2014/03/12 08:36), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/8 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : 這標題取的又沒 fu 又沒意義 : 可是我懶得想啥好標題了 [死] : getter / setter 有沒有意義? : 我覺得要討論至少得先切割成兩個子議題: : a. 到底需不需要有 getter / setter : b. 若 a 的答案是「需要」,那到底要不要有 syntax sugar 來輔助? : a 的話,我是找不到反對的理由 : 或著說,這直接就是挑戰封裝的優點? : 反璞歸真不是不行,而是我們真的有能力突破當年設計出封裝的原因嗎? : 至於 setter 時檢查參數值之類的枝節末流 [誤] 就更不在話下 XD : 後來 getter / setter 也發展出很多應用 : 例如 GWT 的 Editor framework 我覺得就玩得不錯 : 沒有 getter / setter 要怎麼作到,我這種程度是想不太出來 : b(當然要先同意「需要 getter / setter」) : 我是只知道 .net 的寫法,我看不出來這種 syntax sugar 能甜到哪? : 我反而覺得這只是多產生幾種 coding style 所帶來的混亂 : 最重要的重點在於,getter / setter 基本上都不用人打 : 自己寫 generator 或是用 IDE 都很方便 : (這就是 Java 囉唆的好處) : 要 coding style 整齊還是要能少打幾個(根本不用自己打)字 : 如果一定得用,我還寧願用 Lombok 這種招數 : http://projectlombok.org/features/GetterSetter.html : (其實只是想婊 .net [喂喂]) : ======== : 最後以版主身份奉勸諸位版友... 好吧,其實主要是針對 L 先生所言 : 要人身攻擊自己,說自己白痴說自己無能 : 這不會有太大問題,基本上我天天都在作這種事 : 但是如果把「白痴」之類的字眼寫出來 : 而指稱的對象又看不出來是在指自己 : 就麻煩三思而後下筆 版工, 國外10 年前就吵得很熱了, 怎麼現在來戰? 支持者的說法不外: 1. 這兩個方法可以方便增加額外功能(比如驗證)。 2. 內部存儲和外部表現不同。 3. 可以保持外部接口不變的情況下,修改內部存儲方式和邏輯。 4. 任意管理變量的生命週期和內存存儲方式。 5. 提供一個debug接口。 6. 能夠和模擬對象、序列化乃至WPF庫等融合。 7. 允許繼承者改變語義。 8. 可以將getter、setter用於lambda表達式。(大概即作為一個函數,參與函數傳遞和運算) 9. getter和setter可以有不同的訪問級別。 但看上面的說法: 咦, 你的物件有以上的需要呼? 在偉大的JAVA案子中, 9 成以上, 不就是BEAN? 這不就是"簡單" 的取值設值而已. 這要不要算是過度使用呢? 引一篇 http://www.importnew.com/9716.html 有興趣的人可以去看看. 致於誰要信服什麼, 倒不必了, 這宗教式的OOP, 因為還有人, PERL, PHP, 甚致C++ 都要getter/setter一下的. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.108.52

03/12 09:19, , 1F
所以你跟P大的論點沒衝突啊..Java應該針對大部份的需求
03/12 09:19, 1F

03/12 09:21, , 2F
提出syntax sugar,其實我也覺得寫setter/getter有點醜
03/12 09:21, 2F

03/12 12:15, , 3F
好煩啊 還是Ruby的getter/setter長最好(來亂的XD
03/12 12:15, 3F

03/29 02:26, , 4F
C# getter, setter也可以有不同的訪問級別不是嗎
03/29 02:26, 4F
文章代碼(AID): #1J7wm8IB (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
1
4
以下文章回應了本文
完整討論串 (本文為第 2 之 8 篇):
1
4
文章代碼(AID): #1J7wm8IB (java)