لنفترض أن لدينا موقعًا إلكترونيًا يحتوي على منتجات. لدينا طريقة تقوم Product::getProducts
بإرجاع مجموعة من المنتجات.
ثم جاء إلينا مدير وقال: نريد عمل عروض ترويجية في الموقع (خصومات ، تخفيضات). سيتم إرفاق المنتجات بكل عرض ترويجي. كتبنا طريقةAction::getProductsByActionId(actionId)
ثم جاء إلينا المدير مرة أخرى وقال إننا بحاجة إلى المزيد من المقالات التي تم إرفاق البضائع بها. دعونا نضيف طريقة Article::getProductsByArticleId(arcticleId)
.
أنت تقول - دعنا نجعل طريقة واحدة مع المعلمات. حسنًا ، سنصل إلى ذلك.
ثم الانتباه: جاء إلينا مدير وقال - نريد أن نكون قادرين على تعطيل المنتجات على الموقع. أولئك. من الضروري إضافة علامة نشطة للمنتجات ، والتي لها القيمة صواب / خطأ. يجب عدم عرض المنتجات ذات العلامة الخاطئة على الموقع.
الخلاصة: نحتاج إلى العثور على جميع الأماكن في الكود التي تحصل على المنتجات وإضافة منطق في كل مكان بحيث يتم إرجاع المنتجات التي تحتوي على علامة active = true فقط. أولئك. 3 طرق تحتاج إلى تصحيح:
Product::getProducts,
Action::getProductsByActionId(actionId),
Article::getProductsByArticleId(arcticleId)
حقيقة أننا بحاجة إلى تصحيح الشفرة في المكان الخطأ هي أخطاء مدهشة - في مكان ما نسوا تصحيحها.

حسنًا ، دعنا نجعلها بحيث يكون لدينا مكان واحد فقط للحصول على البضائع منه. ثم لن يكون هناك مثل هذا الخطأ.
: , : Product::getProducts(actionId = null, articleId = null)
. , Product::getProducts
, articleId, Action::getProductsByActionId(actionId)
, ..
, , .. .
: . . , , Store::getProducts
— - , . - Product::getProducts
. ( , , - - ), - .
: : , active. . . 1 — Product::getProducts
active=true.
. — . 1 , — . . , Product::getProducts
-, active . 1 .

1 — , — . — -, - . . , — .
UPD:
, 1 : Product::getProducts, Product::getProductsV2, Product::getProducts , , , .
: , 1 private Product::getProducts. public , , .. - Product::getProductsForCatalog, - Product::getProductsForAction, : Product::getProductsForArticles, Product::getProductsForStore .. - 1 , 1 . 1 ( ), .