Os programadores estão resolvendo problemas conflitantes (arquitetura de código)

Digamos que temos um site com produtos. Temos um método que Product::getProducts



retorna uma série de produtos.





Aí um gerente veio até nós e disse: queremos fazer promoções no site (descontos, promoções). Os produtos serão anexados a cada promoção. Nós escrevemos um métodoAction::getProductsByActionId(actionId)







Então, o gerente veio até nós e disse que precisávamos de mais artigos aos quais as mercadorias estavam anexadas. Vamos adicionar um método Article::getProductsByArticleId(arcticleId)



.





Você diz - vamos fazer 1 método com parâmetros. Ok, vamos chegar a isso.





E então atenção: um gerente veio até nós e disse - queremos ser capazes de desativar produtos no site. Essa. é necessário adicionar um sinalizador ativo para produtos, que possui o valor verdadeiro / falso. Produtos com a bandeira falsa não devem ser exibidos no site.





Resumindo: precisamos encontrar todos os locais no código que obtêm produtos e adicionar lógica em todos os lugares para que apenas produtos com o sinalizador active = true sejam retornados. Essa. 3 métodos precisam ser corrigidos:



Product::getProducts,







Action::getProductsByActionId(actionId),







Article::getProductsByArticleId(arcticleId)







O fato de que precisamos corrigir o código no lugar errado é um erro notável - em algum lugar eles se esqueceram de corrigi-lo.





Bem, vamos fazer com que tenhamos apenas um local de onde obter mercadorias. Então não haverá tal erro.





: , : 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 ( ), .








All Articles