Closed hprange closed 8 years ago
Fiz alguns comentários, Assim que puder revisar eu faço o merge.
@mariofts obrigado por comentar a pull request tão prontamente. Estou providenciando os ajustes conforme sugerido.
@mariofts fiz os ajustes e já dei push. Mantive a implementação do método Estado#regiao
dinâmica. Ou seja, para descobrir qual é a região de um estado é preciso passar pelas regiões até encontrar aquela que contém o estado em questão. Uma alternativa a essa solução sem criar o ciclo de inicialização seria tornar o método Estado#regiao
abstrato e implementar em cada instância de estado (como é feito com o método Estado#getIEValidator
). Se você achar que essa é uma forma melhor de resolver o problema, eu também posso fazer esse ajuste.
Acredito que está bom assim. Obrigado pelo PR.
Abraços
Essa mudança adiciona um enum
Regiao
que representa o conjunto de 5 regiões em que se divide o território nacional: Norte, Nordeste, Centro Oeste, Sudeste e Sul. Cada região é composta por seus respectivos estados (+ o Distrito Federal). Dessa forma, o enumEstado
também foi alterado para que cada estado saiba em que região está localizado.Essa alteração permite que lógicas possam se basear no conceito de região, ao invés de obrigar o desenvolvedor a criar o seu próprio conjunto de estados. Os métodos
Regiao#compostaPor
eEstado#localizadoEm
também facilitam a aplicação de lógicas que levam em consideração as regiões.Nota Técnica A amarração entre regiões e estados poderia ser feita na inicialização dos enums. Cada região teria o seu conjunto de estados e cada estado a sua região. Apesar de não causar um erro de compilação, essa situação gera um ciclo de interdependência na inicialização dos enums
Regiao
eEstado
, causando resultados inesperados e indeterminados. Por isso, a amarração entre regiões e estados é feita dinamicamente nas chamadas dos métodosRegiao#estados
eEstado#regiao
.