Eu tenho um projeto que é suficientemente grande e não consigo mais manter todos os aspectos da minha cabeça. Estou lidando com várias classes e funções e passando dados.
Com o tempo, notei que continuava recebendo erros, porque esqueci a forma precisa dos dados quando os transmito para diferentes funções ( por exemplo, uma função aceita e gera uma matriz de strings, outra função, que escrevi muito mais tarde, aceita seqüências de caracteres que são mantidas em um dicionário etc., portanto, eu tenho que transformar as seqüências de caracteres com as quais estou trabalhando, de tê-las em uma matriz para tê-las em um dicionário ).
Para evitar sempre ter que descobrir o que ocorreu onde, comecei a tratar cada função e classe como uma "entidade isolada", no sentido de que não pode confiar no código externo, fornecendo a entrada correta e tem que executar as verificações de entrada (ou, em alguns casos, reformule os dados, se os dados forem fornecidos na forma errada).
Isso reduziu bastante o tempo que gasto, certificando-me de que os dados que eu transmito "se encaixam" em todas as funções, porque as próprias classes e funções agora me alertam quando alguma entrada é ruim (e às vezes até corrige isso) e eu não tem que ir com um depurador por todo o código para descobrir onde algo deu errado.
Por outro lado, isso também aumentou o código geral.
Minha pergunta é, se esse estilo de código apropriado para resolver esse problema?
Obviamente, a melhor solução seria refatorar completamente o projeto e garantir que os dados tenham uma estrutura uniforme para todas as funções - mas, como esse projeto cresce constantemente, eu acabaria gastando mais e me preocupando com o código limpo do que realmente adicionando coisas novas. .
(FYI: ainda sou iniciante, desculpe se essa pergunta foi ingênua; meu projeto é em Python.)