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:群集
動機(jī):
“間接訪問變量”:支持更靈活的數(shù)據(jù)獲取方式,如lazy Initialization(意思是只有用到值時,才對它進(jìn)行初始化。)
“直接訪問變量”:代碼比較容易閱讀,不需要停下來說:“啊,這只是個取值函數(shù)”。
選擇:1、代碼規(guī)范,按照團(tuán)隊中大多數(shù)人的做法去做。
2、個人比較喜歡“直接訪問變量”,直到這種方式帶來麻煩為止。
martin(作者)的例子:你想獲取superclass中的field,卻又想在subclass中將該field改為計算后的值,這就最該使用Self Encapsulate Field。
我自己的例子:我一般會把field設(shè)置成private,如果外部變量,需要用到此field的時候,我就會用Self Encapsulate Field。或者field的值有變化的時候,用Self Encapsulate Field。
開發(fā)初期,我們也許會使用基本數(shù)據(jù)類型表示簡單的行為。例如:你可能會用一個字符串表示電話號碼,但是隨后可能會出現(xiàn)電話號碼的“格式化“,”驗證“,”抽取區(qū)號“之類的特殊行為?!@時候我們就需要一個新類。
動機(jī):
數(shù)組常用于一組相似對象。如果數(shù)組中的元素不同,很難明白數(shù)組中的第一個元素是人名這樣的約定。對象就不同了,可以通過值域名稱和函數(shù)名稱傳達(dá)這樣的信息?!@樣無須死記,無須注釋。
動機(jī):
相關(guān)文章
微信公眾平臺開發(fā)教程①獲取用戶Openid及個人信息圖文詳解
這篇文章主要介紹了微信公眾平臺開發(fā)獲取用戶Openid及個人信息,結(jié)合圖文形式詳細(xì)分析了微信公眾平臺獲取用戶Openid及個人信息的步驟、操作技巧與相關(guān)注意事項,需要的朋友可以參考下2019-04-04PHP實現(xiàn)一維數(shù)組轉(zhuǎn)二維數(shù)組的方法
這篇文章主要介紹了PHP實現(xiàn)一維數(shù)組轉(zhuǎn)二維數(shù)組的方法,實例分析了php操作數(shù)組的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02并發(fā)下常見的加鎖及鎖的PHP具體實現(xiàn)代碼
用到了Eaccelerator的內(nèi)存鎖 和 文件鎖,原理如下判斷系統(tǒng)中是否安了EAccelerator 如果有則使用內(nèi)存鎖,如果不存在,則進(jìn)行文件鎖2010-10-10PHP使用Curl實現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
這篇文章主要介紹了PHP使用Curl實現(xiàn)模擬登錄及抓取數(shù)據(jù)功能,結(jié)合實例形式分析了php使用curl進(jìn)行登陸、驗證、cookie操作與數(shù)據(jù)抓取等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-04-04