国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

Jun 13, 2016 pm 12:01 PM
php 介紹 思維 數(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ù)來訪問。
?

?

動機(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?;蛘遞ield的值有變化的時候,用Self Encapsulate Field。


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

?

?
? 動機(jī):
?

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

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

?動機(jī):

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

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

?動機(jī):

面向?qū)ο蟮脑瓌t之一就是封裝(Encapsulate)或者稱為”數(shù)據(jù)隱藏“。按照此原測,你絕不應(yīng)該把數(shù)據(jù)聲明為public。
  ——public 數(shù)據(jù)被看成是一種不好的做法。
  ——如果封裝了,代碼的修改就會比較簡單,因為都集中在一個地方。
?一個函數(shù)除了訪問函數(shù)(getting/setting)外,不提供其他行為,它終究只是一個dumb class(啞類)。這類class不能獲得對象技術(shù)的優(yōu)勢?!鉀Q啞類的方法是Move Method輕快的將它們移到新對象去。
?
?conclusion
?
我希望能把我理解的東西與大家分享,歡迎大家提出寶貴意見。
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

初學(xué)者的PHP運(yùn)營商 初學(xué)者的PHP運(yùn)營商 Jul 17, 2025 am 04:17 AM

掌握PHP常用運(yùn)算符能應(yīng)對多數(shù)開發(fā)場景,主要包括:1.算術(shù)運(yùn)算符( 、-、、/、%)用于數(shù)學(xué)計算,支持變量動態(tài)運(yùn)算,但需注意自動類型轉(zhuǎn)換可能引發(fā)的問題;2.比較運(yùn)算符(==、===、!=、>、

與PHP中的常數(shù)合作:定義和const語法 與PHP中的常數(shù)合作:定義和const語法 Jul 17, 2025 am 04:17 AM

在PHP中定義常量主要有define()函數(shù)和const關(guān)鍵字兩種方式。define()是運(yùn)行時函數(shù),可在任意位置動態(tài)定義常量;而const是編譯階段處理的語言結(jié)構(gòu),必須在全局或類中直接使用,不能放在條件語句、循環(huán)或函數(shù)中。兩者區(qū)別主要體現(xiàn)在:1.define()支持動態(tài)定義,適合根據(jù)配置文件決定的情況;2.const適用于類中定義常量、命名空間中使用,更具可讀性和組織性且性能略優(yōu);3.const定義常量需注意作用域問題,如命名空間前綴不可省略;4.兩者均不支持修改已定義的值,但define()

開始使用PHP:您的第一步 開始使用PHP:您的第一步 Jul 17, 2025 am 04:17 AM

TostartwithPHP,firstsetupalocalserverenvironmentusingtoolslikeXAMPPorMAMP,thenwriteabasicPHPscriptusingechotodisplaytext,andfinallyintegratePHPwithHTMLfordynamiccontent.1.ChooseatoollikeXAMPPforWindowsorMAMPforMactoinstallApache,MySQL,andPHP.2.PlaceP

PHP評論類型解釋了 PHP評論類型解釋了 Jul 18, 2025 am 04:29 AM

PHP有三種常見的注釋方式,分別是單行注釋、多行注釋和文檔塊注釋。1.單行注釋使用//或#,適合簡短說明,可置于代碼行末或單獨一行;2.多行注釋以/開頭并以/結(jié)尾,適合詳細(xì)說明如函數(shù)功能或版本記錄;3.文檔塊注釋以/**開頭,結(jié)合@param、@return等標(biāo)簽,能被IDE和工具識別,用于生成代碼提示和文檔。此外,建議為函數(shù)和類編寫注釋,尤其公共方法;在復(fù)雜邏輯處添加解釋性注釋;避免無意義注釋;不提交被注釋掉的調(diào)試代碼。掌握這些注釋方式和使用建議,有助于提升代碼可讀性和維護(hù)效率。

從零到英雄:全面的PHP評論教程 從零到英雄:全面的PHP評論教程 Jul 18, 2025 am 04:31 AM

PHP中添加注釋有三種方式://、#和//,其中//最常用。注釋能提升代碼可讀性和維護(hù)性,應(yīng)解釋“為什么”而非“做了什么”,同時需保持更新。函數(shù)和類應(yīng)注明功能及輸入輸出參數(shù),內(nèi)聯(lián)注釋可用于解釋復(fù)雜邏輯。合理使用注釋有助于團(tuán)隊協(xié)作與后期調(diào)試,避免過多或過時的注釋。

故障排除PHP安裝問題 故障排除PHP安裝問題 Jul 18, 2025 am 04:33 AM

安裝PHP常見問題有四種,分別是:1.PHP無法啟動或報錯,應(yīng)檢查php.ini配置錯誤并用php-t驗證;2.安裝擴(kuò)展失敗時確認(rèn)底層依賴是否安裝完整;3.Web服務(wù)器無法解析PHP文件需檢查PHP-FPM是否啟用并與服務(wù)器配置匹配;4.多版本沖突可通過whichphp和php-v查看當(dāng)前使用版本并調(diào)整環(huán)境變量或切換工具。遇到問題應(yīng)逐步排查配置和日志以定位原因。

寫干凈的PHP評論 寫干凈的PHP評論 Jul 18, 2025 am 04:36 AM

注釋應(yīng)說明“為什么”而非“做了什么”,如解釋業(yè)務(wù)原因而非重復(fù)代碼操作;2.在復(fù)雜邏輯前加總覽性注釋,簡要說明流程步驟,幫助建立整體印象;3.給“奇怪”代碼加注釋,解釋非常規(guī)寫法的意圖,避免誤解為bug;4.注釋格式建議簡潔為主,單行用//,函數(shù)/類用/*.../,保持統(tǒng)一風(fēng)格;5.避免注釋與代碼不同步、注釋過長或注釋掉代碼未刪除等問題,確保注釋真正提升代碼可讀性和維護(hù)性。

PHP的簡單指南 PHP的簡單指南 Jul 18, 2025 am 04:37 AM

這篇文章回答了新手學(xué)習(xí)PHP的幾個關(guān)鍵問題。一,快速上手基礎(chǔ)語法的方法是通過實踐變量、條件判斷和循環(huán)等基本結(jié)構(gòu),例如使用$定義變量、echo輸出內(nèi)容、if判斷條件;二,PHP與HTML結(jié)合使用的方式是將PHP代碼嵌入HTML中,用包裹,并注意在支持PHP的服務(wù)器環(huán)境下運(yùn)行;三,處理表單提交和數(shù)據(jù)庫連接的流程包括:前端提交表單、PHP接收數(shù)據(jù)、驗證數(shù)據(jù)、使用mysqli或PDO等方式連接數(shù)據(jù)庫并執(zhí)行插入操作,同時推薦使用ORM工具提高安全性與便捷性。文章強(qiáng)調(diào)學(xué)習(xí)PHP要注重動手實踐,逐步積累經(jīng)驗。

See all articles