Guto, eu programo faz um bom tempo com programação orientada a objetos e eu não sei se até hoje eu capturei o princípio 😂 mas uma coisa que realmente me fez entender foi parar de estudar a programar dessa forma usando os exemplos convencionais, como por exemplo herança de animais ou modelagem de um carro.
Comecei a aprender modelando de fato os componentes de um backend, por exemplo, que são coisas que você não vai encontrar aqui fora na vida real. E quanto mais fizer, mais cedo vai descobrir os limites (a membrana) que separa um objeto do outro. Então por exemplo o objeto de content
aqui do TabNews, hoje na minha cabeça tem uma separação muito clara do objeto session
que controla a sessão do usuário.
Mas o problema é que essa membrada pode ir se moldando e modificando conforme a evolução do sistema... ela pode ir se dividindo em objetos diferentes, ou se mesclando com outros. Tudo tentando representar o que faz sentido no contexto do sistema, e que fique mais fácil de dar manutenção... e eu acho que essa é a dificuldade, ou pelo menos essa é a dificuldade que eu tenho.
No código do TabNews tem várias divisões que eu não se estão certas, mas isso faz parte da história e evolução de um software. É questão de colocar energia e ir refatorando.
Caso queira avaliar os objetos que foram criados para o TabNews, sugiro acessar essa pasta no repositório: https://github.com/filipedeschamps/tabnews.com.br/tree/main/models
Se o link acima retornar um 404
, peço que leia isso.