PHP中一些奇怪的寫法!這是為什麼?

來源:互聯網
上載者:User
關鍵字 php


為什麼要再給Areturn這個類再次定義一個json屬性呢? 這個屬性就是"json"這個字串,為什麼不直接引用呢?

在我見過的別人封裝的類中,此種例子比比皆是,為什麼呢?
再例如這個

這個
這個給我的感覺就是有毛病 定義了這麼些常量有什麼用處!!!! 直接一個字串比較不好麼?
我的同事說,大牛的做法總有其道理,來個大牛告訴我這是為什麼?

回複內容:


為什麼要再給Areturn這個類再次定義一個json屬性呢? 這個屬性就是"json"這個字串,為什麼不直接引用呢?

在我見過的別人封裝的類中,此種例子比比皆是,為什麼呢?
再例如這個

這個
這個給我的感覺就是有毛病 定義了這麼些常量有什麼用處!!!! 直接一個字串比較不好麼?
我的同事說,大牛的做法總有其道理,來個大牛告訴我這是為什麼?

防止今後修改字面量的時候,有重複勞動。

在類內定義 CONST 常量之後,在其他地方調用只需要用這個常量就可以了,如果要修改的話,只需要修改一處即可。

請學習一下有關代碼重構的知識。

  1. 何為常量,就是在你以後程式運行時,不會被修改的值。配置一類的資料作為常量是合理的。且可讀性高,更易維護。

  2. 如果有一天你突然發現常量的值不合理,需要修改,這時只需要改一處地方就好,更加簡單模組化。

  3. 這跟PHP無關,常量在不同語言不同平台都會用到。

以上

為了可讀性吧,但這樣會降低效能,因為要到查兩次符號表

  1. 第一張圖裡面那個有點多餘, 可以直接使用 "json", 猜測定義了常量的好處是進行了限制, 比如有人不清楚的情況下會寫 "JSON"

  2. 第二張圖 使用了定義之後, 是讓人望文生義, 不然全是數字, 以後你自己看也不知道這些數字是幹嘛用的

1、對數字定義常量有助於閱讀

if ($count > 20)
if ($count > MAX_POST)

2、對重構友好,只要修改一下常量,所有地方都改到了,否則你要到處去找20改成30

3、文字常量對錯誤友好
define('FOOBAR', 'foobar');

fn(FOOBAZ); // 錯誤,常量不存在

fn('foobaz'); // 除非fn裡面去檢查參數是否等於foobar,否則拼字錯誤不會在編譯階段提示

最後,啥都有個度,控制度是個經驗問題

很簡單,所有程式設計語言裡都會遇到的情況。

定義一個常量或是宏。
1、從代碼語義上可以使代碼可讀性提高,比如寫TINKINGIMAGE_GD總是比寫 1 要好讀,而且不容易出錯
2、萬一需要修改這個常量,只改一處就好了
比如,將來萬一“json”要都改成“json v2.0”。

1、提高可讀,例如NEWS::STATUS_DETETED 就是刪除的了
2、IDE自動提示
3、方便修改

親身經曆:
以前正常狀態值為0,散落在程式的各個角落,之後為了狀態表示方式與其他系統模型統一,要改成1為正常。
花了很長時間(好幾個小時,事後幾天還零星碰到沒找到的)。如果你定義了常量則不必這樣。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.