Meu chefe me deu um projeto com uma lógica específica. Eu tenho que desenvolver uma página da web que deve liderar o navegador em muitos casos até que ele chegue ao produto.
Este é o esquema de caminho da navegação no site:
IMPORTANTE!
Na página Produtos, o navegador pode escolher qual filtro ele deseja.
- Se A, ele / ela DEVE passar pelo B (e depois C, é claro) ou C e alcançar os produtos.
- Se B, ele / ela DEVE passar pelo C e alcançar os produtos.
- Se C, ele / ela alcança diretamente os produtos.
Obviamente, se eu começar da IA, estou seguindo o caminho mais longo e, quando chego aos meus produtos, tenho 3 filtros ativos.
Até agora desenvolvi o seguinte código, que funciona bem.
if filter_A
if filter_B
filter_C()
.. else ..
else
filter_C
.. else ..
else
if filter_B
filter_C()
.. else ..
else
filter_C()
.. else ..
Estou aqui para perguntar o que um programador mais experiente teria feito nessa situação. Não respeitei o princípio DRY, não gosto e gostaria de conhecer uma maneira alternativa de desenvolver esse tipo de lógica.
Pensei em dividir cada seção do código em funções, mas é uma boa idéia neste caso?
filter_C
, mas as instruções condicionais indicam que o fluxo de controle pode ser contornado filter_C
. É filter_C
opcional?