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

ホームページ php教程 php手冊(cè) PHPトーク「リファクタリング~既存コードの設(shè)計(jì)改善~」第3回 データの再編成

PHPトーク「リファクタリング~既存コードの設(shè)計(jì)改善~」第3回 データの再編成

Jun 13, 2016 pm 12:01 PM
php 導(dǎo)入 考え データ 整理する

思維導(dǎo)圖


介紹

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

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

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

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

dumb:啞

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

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

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

unidirectional:單向的

bidirectional:雙向的

collection:群集

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

?

動(dòng)機(jī):

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

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

?????? 選擇:1、代碼規(guī)范,按照?qǐng)F(tuán)隊(duì)中大多數(shù)人的做法去做。

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

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

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


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

?

?
? 動(dòng)機(jī):
?

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

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

?動(dòng)機(jī):

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

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

?動(dòng)機(jī):

面向?qū)ο蟮脑瓌t之一就是封裝(Encapsulate)或者稱為”數(shù)據(jù)隱藏“。按照此原測,你絕不應(yīng)該把數(shù)據(jù)聲明為public。
  ——public 數(shù)據(jù)被看成是一種不好的做法。
——カプセル化されていれば、一か所に集中しているため、コードの修正が比較的簡単になります。
関數(shù)は、アクセス関數(shù) (取得/設(shè)定) 以外の他の動(dòng)作を提供しません。結(jié)局のところ、それは単なるダムクラスです。このタイプのクラスでは、オブジェクト テクノロジの利點(diǎn)を得ることができません。 ——ダムクラスの解決策は、それらを新しいオブジェクトに素早く移動(dòng)する Move メソッドです。
結(jié)論
私が理解していることを皆さんと共有し、貴重なご意見をお待ちしております。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPで現(xiàn)在のセッションIDを取得する方法は? PHPで現(xiàn)在のセッションIDを取得する方法は? Jul 13, 2025 am 03:02 AM

PHPで現(xiàn)在のセッションIDを取得する方法は、session_id()関數(shù)を使用することですが、session_start()を呼び出して正常に取得する必要があります。 1。Session_start()を呼び出してセッションを開始します。 2。Session_Id()を使用してセッションIDを読み取り、ABC123DEF456GHI789に似た文字列を出力します。 3.返品が空の場合は、Session_start()が欠落しているかどうか、ユーザーが初めてアクセスするか、セッションが破壊されるかを確認(rèn)します。 4.セッションIDは、ロギング、セキュリティ検証、およびクロスレクエスト通信に使用できますが、セキュリティに注意する必要があります。セッションが正しく有効になり、IDが正常に取得できることを確認(rèn)してください。

PHPストリングからサブストリングを取得します PHPストリングからサブストリングを取得します Jul 13, 2025 am 02:59 AM

PHP文字列からサブストリングを抽出するには、Substr()関數(shù)を使用できます。これはSyntax substr(String $ string、int $ start、?int $ length = null)であり、長さが指定されていない場合は、端まで傍受されます。中國語などのマルチバイト文字を処理する場合、MB_Substr()関數(shù)を使用して、文字化けコードを避ける必要があります。特定のセパレーターに従って文字列を傍受する必要がある場合は、exploit()を使用するか、strpos()とsubstr()を組み合わせて、ファイル名拡張子またはドメイン名を抽出するなどの実裝できます。

PHPコードの単體テストをどのように実行しますか? PHPコードの単體テストをどのように実行しますか? Jul 13, 2025 am 02:54 AM

unittestinginphpinvolvevidevifignivision like like fike fikionsionsormethodstocatchsearlyandensureliablerefactoring.1)setupphpunitviacomposer、createatestdirectory、and configureautoloadandphpunit.xml.2)

文字列をPHPの配列に分割する方法 文字列をPHPの配列に分割する方法 Jul 13, 2025 am 02:59 AM

PHPでは、最も一般的な方法は、exploit()関數(shù)を使用して文字列を配列に分割することです。この関數(shù)は、指定された區(qū)切り文字を介して文字列を複數(shù)の部分に分割し、配列を返します。構(gòu)文はエクスプロイト(セパレーター、文字列、制限)であり、セパレーターはセパレーターであり、文字列は元の文字列であり、制限はセグメントの最大數(shù)を制御するオプションのパラメーターです。たとえば、$ str = "Apple、Banana、Orange"; $ arr = Explode( "、"、$ str);結(jié)果は["apple"、 "banaです

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時(shí)間の取得、実行時(shí)間の測定、操作時(shí)點(diǎn)と期間の測定、分析時(shí)間のフォーマットなど、時(shí)間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時(shí)間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時(shí)間を測定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時(shí)點(diǎn)(Time_Point)と期間(期間)は相互運(yùn)用可能ですが、ユニットの互換性と時(shí)計(jì)エポック(エポック)に注意を払う必要があります

PHPの別のページにセッション変數(shù)を渡す方法は? PHPの別のページにセッション変數(shù)を渡す方法は? Jul 13, 2025 am 02:39 AM

PHPでは、セッション変數(shù)を別のページに渡すために、キーはセッションを正しく開始し、同じ$ _Sessionキー名を使用することです。 1.各ページにセッション変數(shù)を使用する前に、session_start()と呼ばれ、スクリプトの前面に配置する必要があります。 2。$ _Session ['username'] = 'Johndoe'などのセッション変數(shù)を設(shè)定します。 3。別のページでsession_start()を呼び出した後、同じキー名を介して変數(shù)にアクセスします。 4.各ページでsession_start()が呼び出されることを確認(rèn)し、事前にコンテンツの出力を避け、サーバーのセッションストレージパスが書き込み可能であることを確認(rèn)してください。 5.SESを使用します

PHPヘッダーの位置は、インクルード後に機(jī)能しません PHPヘッダーの位置は、インクルード後に機(jī)能しません Jul 13, 2025 am 02:08 AM

ヘッダー(「場所:...」)が機(jī)能しない問題に遭遇した場合、一般的な理由と解決策は次のとおりです。1。事前に出力があり、ヘッダーが失敗します。解決策は、スペース、HTML、またはエコーなど、ジャンプ前に出力がないことを確認(rèn)することです。 2. includeまたは要求ファイルには、過剰な出力またはUTF-8 BOM文字があります。ファイルエンコーディングはチェックして「UTF-8 BOM-FREE」として保存する必要があります。 3. ob_start()を使用してジャンプ前に出力バッファーをオンにし、ob_end_flush()と協(xié)力して出力を遅らせることをお?jiǎng)幛幛筏蓼埂?4.ジャンプ後、後続のコード実行を防ぐために終了を追加してください。 5.ヘッダー()関數(shù)呼び出しがすべての出力の前にあることを確認(rèn)してください。

See all articles