Re: [J2SE] 變數命名與coding style問題

看板java作者 (andQ)時間9年前 (2015/08/25 09:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《tnsshnews (tnsshnews)》之銘言: : Dear all, : 有幾個關於變數宣告的問題想請教一下, : 1. global的變數在class最開頭的地方宣告完之後, 要馬上給予初始值嗎? : 還是一率都在constructor給呢? 好處跟差別會是什麼呢? 宣告後給予初始值,在編譯成class檔時,也會移到constructor裡, 所以兩者一樣,但在這邊要注意兩點觀念 1.讓物件建立後,即可直接被使用,避免還要讓使用者額外去做 一些處理。 2.若變數建立較耗資源,則可考慮建一個getter,等該物件被呼叫時 才初始化。 所以變數在宣告就初始化,或在constructor裡初始化,或constructor裡 呼叫其他private method初始化,都行,注意以上兩點即可。 : ..... : 2. 如果在一個method裡面, 有多個變數要宣告, 但宣告完之後又要做一些處理, : 那是要把宣告通通集中在最前面, 後面在一個一個處理, 還是宣告一個處理一個, : 在宣告一個, 在處理一個呢? : e.g : public void test(){ : AAA aaa = new AAA(); : aaa.setxxx... : aaa.... : BBB bbb = new BBB(); : bbb.setxxx... : bbb.... : ... : } 通常都是要用到時才宣告,但如果依你的例子,我會比較建議以下方式 public void createAAA() { AAA aaa = new AAA(); aaa.setxxx... aaa... return aaa; } public void createBBB() { BBB bbb = new BBB(); bbb.setxxx... bbb... return bbb; } public void test() { AAA aaa = createAAA(); BBB bbb = createBBB(); ... } 這樣子的做法有幾個好處 1.讓test()著重在處理自己的邏輯,不需要去管AAA、BBB怎麼實作。 2.程式碼盡量簡單,閱讀時容易理解,重構時也容易下手。 3.建立AAA跟BBB的程式碼可以重複使用。 : 3. class的global變數一率都用private還是public好呢? 看到很多人都會用private, : 然後再用get/set去設定值還有取值, 不知這是一種好習慣還是有什麼考量呢? : 謝謝 private/protected/public/default 這幾個的考量點主要在「封裝」,將實作與界面分開,外界只需要知道 界面,不需要知道裡面的實作,所以一般普遍的做法都是變數宣告為private, 然後外界有需要存取時就透過getter/setter來達成,但要注意的是, 真的要必要時才開放,例如考量外界需要透過getter取得變數來完成的功能, 是應該由外界來完成,還是讓物件自己去完成。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.143.57.12 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1440464858.A.0A6.html
文章代碼(AID): #1Lsx_Q2c (java)
討論串 (同標題文章)
文章代碼(AID): #1Lsx_Q2c (java)