天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

思維導(dǎo)圖


介紹

  承接上文的php 雜談《重構(gòu)-改善既有代碼的設(shè)計》之 重新組織你的函數(shù)繼續(xù)重構(gòu)方面的內(nèi)容。 這章主要針對數(shù)據(jù)的重構(gòu)。 1、爭論的聲音――直接訪問Field還是通過函數(shù)(Accessor)訪問Field

 2.修改Array為Object:當(dāng)你看到一個Array很像一個數(shù)據(jù)結(jié)構(gòu),你可以使用Replace Array with Object,把Array變成一個對象。――數(shù)據(jù)結(jié)構(gòu)更清晰。

   專業(yè)術(shù)語 

accessor:訪問者,存儲器――在本文翻譯為“函數(shù)”

dumb:啞

domain class:用以處理業(yè)務(wù)邏輯

presentation class:用以處理”數(shù)據(jù)表現(xiàn)形式“

business logic:業(yè)務(wù)邏輯

unidirectional:單向的

bidirectional:雙向的

collection:群集

 Self Encapsulate Field 狀況:如果Client直接訪問值域,會造成Client與值域之間的耦合關(guān)系逐漸變得笨拙,那么為這個值域建立取值/設(shè)置函數(shù),并且只以這些函數(shù)來訪問。 

 

動機:

  “間接訪問變量”:支持更靈活的數(shù)據(jù)獲取方式,如lazy Initialization(意思是只有用到值時,才對它進行初始化。)

  “直接訪問變量”:代碼比較容易閱讀,不需要停下來說:“啊,這只是個取值函數(shù)”。

       選擇:1、代碼規(guī)范,按照團隊中大多數(shù)人的做法去做。

     2、個人比較喜歡“直接訪問變量”,直到這種方式帶來麻煩為止。

       martin(作者)的例子:你想獲取superclass中的field,卻又想在subclass中將該field改為計算后的值,這就最該使用Self Encapsulate Field。

                         我自己的例子:我一般會把field設(shè)置成private,如果外部變量,需要用到此field的時候,我就會用Self Encapsulate Field。或者field的值有變化的時候,用Self Encapsulate Field。


 Replace Data Value with Object  狀況:如果你的某個基本類型的field,需要額外的數(shù)據(jù)和行為,那么將此field變成對象。 

 

   動機: 

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

  Replace Array with Object 狀況:你有一個數(shù)組,數(shù)組中的元素各自代表不同的東西,那么以對象替換數(shù)組,對于數(shù)組中的每個元素,以一個值域表示之。 

 動機:

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

 Encapsulate Field 狀況:如果你的class中有一個public值域,那么將它聲明為pirvate,并提供相應(yīng)的訪問函數(shù)。

 動機:

面向?qū)ο蟮脑瓌t之一就是封裝(Encapsulate)或者稱為”數(shù)據(jù)隱藏“。按照此原測,你絕不應(yīng)該把數(shù)據(jù)聲明為public。  ――public 數(shù)據(jù)被看成是一種不好的做法。  ――如果封裝了,代碼的修改就會比較簡單,因為都集中在一個地方。 一個函數(shù)除了訪問函數(shù)(getting/setting)外,不提供其他行為,它終究只是一個dumb class(啞類)。這類class不能獲得對象技術(shù)的優(yōu)勢。――解決啞類的方法是Move Method輕快的將它們移到新對象去。  conclusion 我希望能把我理解的東西與大家分享,歡迎大家提出寶貴意見。

php技術(shù)PHP 雜談《重構(gòu)-改善既有代碼的設(shè)計》之三 重新組織數(shù)據(jù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产一级特黄a大片99 | 欧美videosgratis杂交 | 国产乱码免费卡1卡二卡3卡四卡 | 爱穿丝袜的麻麻3d漫画acg | 99九九99九九九视频精品 | 国产在线一卡二卡 | 成年人视频在线免费观看 | 99久久亚洲精品影院 | 国产午夜永久福利视频在线观看 | 久久99re6国产在线播放 | 99午夜高清在线视频在观看 | a在线免费观看视频 | AV福利无码亚洲网站麻豆 | 久草在线草a免费线看 | 嗯好舒服嗯好大好猛好爽 | 91亚洲 欧美 国产 制服 动漫 | 亚洲黄色高清 | 嫩草视频在线观看免费 | 亚洲妈妈精品一区二区三区 | 亚洲人成在线观看一区二区 | 日本午夜福利无码高清 | 久久99精品涩AV毛片观看 | 精品亚洲永久免费精品 | 99久久无码一区人妻A片竹菊 | 新金梅瓶玉蒲团性奴3 | asian4you裸模| 国模精品一区二区三区视频 | 欧美一第一页草草影院 | 国产专区青青草原亚洲 | 男神插曲女生软件完整版 | 欧美最猛12teevideos欧美 欧美最猛12teevideos | 热久久国产欧美一区二区精品 | 三级全黄的视频 | 国产中文字幕乱码免费 | 麻豆出品国产AV在线观看 | 夜夜狂射影院欧美极品 | 被同桌摸出水来了好爽的视频 | fryee性欧美18 19 | 和老外3p爽粗大免费视频 | caoporn 免费视频 | 87影院午夜福利 |