PHP 雜談《重構(gòu)-改善既有代碼的設(shè)計》之三 重新組織數(shù)據(jù)

介紹


accessor:訪問者,存儲器——在本文翻譯為“函數(shù)”
dumb:啞
domain class:用以處理業(yè)務(wù)邏輯
presentation class:用以處理”數(shù)據(jù)表現(xiàn)形式“
business logic:業(yè)務(wù)邏輯
unidirectional:單向的
bidirectional:雙向的
collection:群集



動機:

“間接訪問變量”:支持更靈活的數(shù)據(jù)獲取方式,如lazy Initialization(意思是只有用到值時,才對它進行初始化。)
“直接訪問變量”:代碼比較容易閱讀,不需要停下來說:“啊,這只是個取值函數(shù)”。
選擇:1、代碼規(guī)范,按照團隊中大多數(shù)人的做法去做。
2、個人比較喜歡“直接訪問變量”,直到這種方式帶來麻煩為止。
martin(作者)的例子:你想獲取superclass中的field,卻又想在subclass中將該field改為計算后的值,這就最該使用Self Encapsulate Field。
我自己的例子:我一般會把field設(shè)置成private,如果外部變量,需要用到此field的時候,我就會用Self Encapsulate Field?;蛘遞ield的值有變化的時候,用Self Encapsulate Field。




開發(fā)初期,我們也許會使用基本數(shù)據(jù)類型表示簡單的行為。例如:你可能會用一個字符串表示電話號碼,但是隨后可能會出現(xiàn)電話號碼的“格式化“,”驗證“,”抽取區(qū)號“之類的特殊行為?!@時候我們就需要一個新類。



動機:

數(shù)組常用于一組相似對象。如果數(shù)組中的元素不同,很難明白數(shù)組中的第一個元素是人名這樣的約定。對象就不同了,可以通過值域名稱和函數(shù)名稱傳達這樣的信息?!@樣無須死記,無須注釋。



動機:

相關(guān)文章
PHP連接MSSQL時nvarchar字段長度被截斷為255的解決方法
這篇文章主要介紹了PHP連接MSSQL時nvarchar字段長度被截斷為255的解決方法,可通過CAST數(shù)據(jù)類型轉(zhuǎn)換來解決,是非常實用的技巧,需要的朋友可以參考下2014-12-12
php中實現(xiàn)xml與mysql數(shù)據(jù)相互轉(zhuǎn)換的方法
這篇文章主要介紹了php中實現(xiàn)xml與mysql數(shù)據(jù)相互轉(zhuǎn)換的方法,實例封裝了一個類文件,可實現(xiàn)XML與MySQL數(shù)據(jù)的相互轉(zhuǎn)換,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12
php實現(xiàn)批量刪除掛馬文件及批量替換頁面內(nèi)容完整實例
這篇文章主要介紹了php實現(xiàn)批量刪除掛馬文件及批量替換頁面內(nèi)容的方法,涉及php文件與目錄的遍歷、查找以及字符串與數(shù)組的遍歷與替換操作相關(guān)技巧,適用于utf-8編碼環(huán)境,需要的朋友可以參考下2016-07-07
PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
這篇文章主要介紹了PHP move_uploaded_file() 函數(shù),其實就是將上傳的文件移動到新位置,需要的朋友可以參考下2018-03-03
php設(shè)計模式 Prototype (原型模式)代碼
用原型實例指定創(chuàng)建對象的種類.并且通過拷貝這個原型來創(chuàng)建新的對象2011-06-06

