php 中大量使用
die 或
exit,除了可讀性方面是否有其他弊端?
回複內容:
php 中大量使用 die 或 exit,除了可讀性方面是否有其他弊端?
我覺得 die()/exit() 主要是影響程式的設計,也就是影響可讀性和未來的可維護性。我自己是堅決抵制無腦使用 die()/exit() 的。
在 php 引入異常機制之前, die()/exit() 是僅有的提前退出程式的方法,用一用還湊合。但有了異常機制之後,應該學習 java 的設計思路:業務的錯誤用傳回值返回,無法處理的請求拋異常。這樣的設計保證了調用者無論如何都有足夠的控制權,從而讓整個系統是健壯的。
在設計工具類和工具函數時,die()/exit() 應該嚴令禁止,因為它們無權決定整個程式的生死。
在寫一個具體業務指令碼時,die()/exit() 僅在需要向 shell 返回狀態代碼或者確實確定業務已經結束的情況下使用,其他情況最好禁止使用。
die()和exit()都是表示在這裡就自然結束,我覺得很正常啊,為什麼會有可讀性的問題?私以為超長的邏輯嵌套和多重include更有可能造成你所謂的可讀性的問題。
exit和die是人為結束指令碼運行,顧名思義,可讀性肯定沒有問題的。
效能方面,直接結束指令碼運行,對效能是有益無害。
如果非要說弊端,那我認為是:本來應該用return的時候卻使用了exit,可能指令碼提前退出,造成功能上的問題。不過,我認為這是寫代碼的人的問題,和文法結構沒有關係。
所以,該用就用吧,放心大膽的用,提供出來就是讓人使用的。
對於程式碼書寫來說,我同意公子 @公子 die 和 exit 就是程式結束。
但是對於函數和庫的設計來說,我覺得不應該使用這兩個,而是使用 return。因為一個函數的調用,不應該將整個程式給停止了(OMG,這個函數的許可權也太大了點兒吧)。不管這個函數是正確調用,還是出現問題了,都應該通知他的調用者,方法當然是通過 return 了。
還沒有遇到過效能上的問題,但是如果你使用trigger_error()函數來替代die(),你的代碼在處理錯誤上會更具優勢,對於客戶程式員來說更易於處理錯誤。
下面是是我轉寄的一篇文章,你可以看看:http://blog.csdn.net/yipiankongbai/article/details/17568223