コード嗅覚55 -オブジェクト乱交
8590 ワード
データホルダーとしてあなたのオブジェクトを見るならば、あなたは彼らのカプセル化に違反します、しかし、あなたは実生活でのように、あなたは常に同意を求めなければなりません.
情報隠蔽違反 カプセル化違反 カップリング カップルのインターフェイスと行動、決してデータ. サンプルコード
カップリング 結論
不適切な親密さ 関係
Wikipedia Refactoring.Guru C2 Wiki クレジット
TL;DR: Don't mess with other object's data.
問題
解決策
サンプルコード
間違い
<?
final class Point {
public $x;
public $y;
}
final class DistanceCalculator {
function distanceBetween(Point $origin, Point $destination) {
return sqrt((($destination->x - $origin->x) ^ 2) + (($destination->y - $origin->y) ^ 2));
}
}
右
<?
final class Point {
private $rho;
private $theta;
public function x() {
return $this->rho * cos($this->theta);
}
public function y() {
return $this->rho * sin($this->theta);
}
}
final class DistanceCalculator {
function distanceBetween(Point $origin, Point $destination) {
return sqrt((($destination->x() - $origin->x() ^ 2) + (($destination->y() - $origin->y()) ^ 2)));
}
}
検出
あなたは、パブリック属性、セッターとGetters使用のためにあなたを警告して、彼らを落胆させるために、あなたのプリンターをセットすることができます.
タグ
<?
final class Point {
public $x;
public $y;
}
final class DistanceCalculator {
function distanceBetween(Point $origin, Point $destination) {
return sqrt((($destination->x - $origin->x) ^ 2) + (($destination->y - $origin->y) ^ 2));
}
}
<?
final class Point {
private $rho;
private $theta;
public function x() {
return $this->rho * cos($this->theta);
}
public function y() {
return $this->rho * sin($this->theta);
}
}
final class DistanceCalculator {
function distanceBetween(Point $origin, Point $destination) {
return sqrt((($destination->x() - $origin->x() ^ 2) + (($destination->y() - $origin->y()) ^ 2)));
}
}
あなたは、パブリック属性、セッターとGetters使用のためにあなたを警告して、彼らを落胆させるために、あなたのプリンターをセットすることができます.
タグ
結論
あなたのクラスがセッター、ゲッターと公共の方法で汚染されるならば、あなたは確かに彼らの偶然の実施を結合する方法を持っています.
別名
関係
コード匂い01 -貧血モデル
マキシ・コンティ・ 月20日・ 2分読む
#codenewbie
#oop
#beginners
#computerscience
コード匂い28 -セッター
マキシ・コンティ・ Nov 19 ' 20・ 2分読む
#oop
#codenewbie
#programming
#webdev
詳しい情報
コード匂い01 -貧血モデル
マキシ・コンティ・ 月20日・ 2分読む
#codenewbie
#oop
#beginners
#computerscience
コード匂い28 -セッター
マキシ・コンティ・ Nov 19 ' 20・ 2分読む
#oop
#codenewbie
#programming
#webdev
クレジット
絵Nicolas Poussin
A data structure is just a stupid programming language.
ビル・ゴスペル
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
この記事はCodesmellシリーズの一部です.
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
最終更新日: 2021/06/14
Reference
この問題について(コード嗅覚55 -オブジェクト乱交), 我々は、より多くの情報をここで見つけました
https://dev.to/mcsee/code-smell-55-object-orgy-3go
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
A data structure is just a stupid programming language.
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コード嗅覚55 -オブジェクト乱交), 我々は、より多くの情報をここで見つけました https://dev.to/mcsee/code-smell-55-object-orgy-3goテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol