JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design » Effective Java  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [Effective Java] 條款29 : 將區域變數的作用域 (scope) 最小化 [精華]
metavige

metavige

版主

發文: 2133
積分: 10
於 2004-09-18 17:06 user profilesend a private message to usersend email to metavigereply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這章的重點,用書中的一句話來說
將區域變數的作用域(scope)變小,可以增加程式碼的可讀性以和可維護性,並降低出錯機率

以前在學寫程式的時候,不管是 C、VB、PASCAL 等程式語言
比較老一點的前輩,都會要求將變數的宣告擺在一起
當初他們是說,這樣大家都會知道到哪裡去找這些宣告,閱讀起來會比較方便

以下是書中的說法,現在想想,跟之前的觀念來比較,的確有點好玩:

Java語言允許你將變數宣告於任何一個可合法撰寫述句(statements)的地方
以下有幾種「將區域變數作用域最小化」的技巧:

1. 在變數第一次使用的時候才宣告他
缺點:
如果你在變數被使用之前就先宣告了他,只會造成混亂,造成程式碼閱讀者的分心
而一旦真正到了變數要使用的時候,閱讀者也許已經不再記得變數的型別和初值
如果程式經過演化而變數不再被使用,程式員也很可能因為變數的宣告遠離其第一次被使用點而忘掉刪除他們
當一個變數意外地在他「希望被使用」的區段之前或之後被使用,可能導致災難結果

在 for 回圈使用 i 這個變數,大概就是一個最典型的例子了
--------------------------------------------------------------------------------------------------
以前的程式寫法,非常常見的就是 Copy-Paste 大法
在要使用某一個功能的時候,想到以前有寫過一段程式碼
就會將這段程式碼剪貼過來,然後使用
若是此時變數的宣告並不在這段程式碼裡頭,也必須花一段時間將程式碼裡頭的變數找出來
重新的在自己的變數宣告區內再宣告一次

這告訴了我們:
1. 如果有需要的話,變數宣告盡量不要遠離使用的範圍
2. 不要使用 Copy-Paste , Reuse 是很好的手法,請參考 Refactoring 的書籍

2. 令函式小而集中
如果兩個處理被集合到同一個函式內,但使用上也許會有變數共用的情況
如此一來,只要把函式分成兩個,讓每個函式處理一個部分即可


reply to postreply to post
請各位新手參考 論壇規範Java 新手 FAQ
話題樹型展開
人氣 標題 作者 字數 發文時間
6956 [精華] [Effective Java] 條款29 : 將區域變數的作用域 (scope) 最小化 metavige 983 2004-09-18 17:06
» JWorld@TW »  Software Design » Effective Java

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8