クラスの書き方

WBOY
リリース: 2016-06-20 12:31:09
オリジナル
1053 人が閲覧しました

書籍「コード百科事典」では、抽象データ モデル (ADT) の概念について説明しています。PHP の観点から見ると、最も一般的なクラスは抽象データ モデルの表現です。抽象データ モデルの概念については、オブジェクト プログラミングはまだ無知な段階にあり、すべてのメソッドが 1 つのクラスに詰め込まれていることがよくあります。たとえば、次のコードを持つフォント クラスがあります。 class は public 属性「style」、Style を取得するメソッド、およびその他のサブメソッドを定義します。このクラスはもともと「フォント」を扱うために作成されましたが、実装プロセス中に一時的に需要が増加したため、追加されました。 Div とフォントをこのクラスに挿入する方法、これは非常に一般的な状況ですが、これは単なる始まりにすぎません。ゴミが存在しないのと同じように、ますます多くのコードが存在します。誰かが最初のゴミを投げると、ゴミのように、最終的にはクラスの維持が困難になり、可読性が低下します。その理由は、クラスに関係のないコードが抽象を破壊するためです。クラスの一貫性。

<?phpclass Font{    public $style; // 字体样式    public function getStyle()    {        // code ..    }    public function createDiv()    {        // code ..    }    public function insertFontToDiv()    {        // code ..    }}
ログイン後にコピー
さらに、このクラスの style 属性にも問題があります。その型は public です。つまり、いつでも外部から呼び出して書き換えることができ、その場合、外部コードは <🎜 になります。 >

または:

$font = new Font;$font->style = 'font-size: 13px';
ログイン後にコピー
など、時間が経つと、いつか製品があなたのところに来て、笑顔でこう言います。「陳さん、お願いします」各フォントに 14 ピクセルのデフォルトのフォント サイズを追加します。

あなたは混乱した表情と絶望的な表情で製品 (彼、彼女、またはそれ) を見ます: ...わかりました、半日ください。
$font = new Font;$font->style = 'font-weight: both';
ログイン後にコピー

製品: #¥%……&*(&……%#¥%……&*;

コードを検索して置き換えるときに、こっそりとなぜ Font クラスに style 属性を変更する関数を定義しないのかと自分を呪いながら、経験を総括し、プログラマは常に痛い経験を経て成長することはないと自分に言い聞かせます。とても良い本、または良い指導者であれば、とても簡単になります (コード百科事典の別の宣伝)

最初の段落では、抽象化とは何かについて説明しました。 ? オブジェクト指向には 1 つの原則があり、それはこの 1 つの原則と同じであり、その 1 つの原則は、カテゴリの 1 つの原則と 1 つのメソッドに分けられます。たとえば、人間には食べる、飲む、排尿するという 4 つの行動があり、それらは 1 つのカテゴリ (人) と 1 つの方法 (食べる、飲む、うんち、おしっこ) の原則を持っています。ここでは「人」です。これに飛行動作を追加すると、クラスの単一の原則と抽象化が破壊されます。飛行動作を追加した後、人々が「食べる、飲む、うんちをする、飛ぶ」という 5 つの動作を使用して検証してみましょう。

「凝集度が高く、結合度が低い」は、優れたクラスを書くための中心的な考え方であり、抽象 (Unity) は結合度の低いコードを書くのに役立ちます。結束力の高さについて 結束力が強いコードを書くと、それに伴うメンテナンスが容易になります。上記の例では、プログラマが style 属性を public に設定し、それを直接変更しました。外部コードでは、後続の問題が発生しました。これらの変更しやすい要素は、サブルーチン (メソッド) を通じて変更する必要があります。保守性を高めるには、クラス内のすべての変更を制御して、クラスの凝集性を高めます。理論は想像上のものであり、コードを見せてもらうことが進歩への最良の方法です。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート