Digamos que tenemos un sitio web con productos. Tenemos un método que Product::getProducts
devuelve una variedad de productos.
Entonces se nos acercó un gerente y nos dijo: queremos hacer promociones en el sitio (descuentos, rebajas). Los productos se adjuntarán a cada promoción. Escribimos un métodoAction::getProductsByActionId(actionId)
Luego, el gerente se acercó a nosotros nuevamente y nos dijo que necesitábamos más artículos a los que se adjuntaran los productos. Agreguemos un método Article::getProductsByArticleId(arcticleId)
.
Usted dice: hagamos 1 método con parámetros. Ok, llegaremos a eso.
Y luego atención: un gerente se acercó a nosotros y nos dijo: queremos poder deshabilitar productos en el sitio. Aquellos. es necesario agregar una bandera activa para los productos, que tiene el valor verdadero / falso. Los productos con la bandera falsa no deben mostrarse en el sitio.
En pocas palabras: necesitamos encontrar todos los lugares en el código que obtienen productos y agregar lógica en todas partes para que solo se devuelvan los productos con la marca active = true. Aquellos. Es necesario corregir 3 métodos:
Product::getProducts,
Action::getProductsByActionId(actionId),
Article::getProductsByArticleId(arcticleId)
El hecho de que necesitemos arreglar el código en el lugar equivocado es un error sorprendente: en algún lugar se olvidaron de arreglarlo.
Bueno, hagámoslo de modo que solo tengamos 1 lugar para obtener productos. Entonces no habrá tal error.
: , : 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 ( ), .