Classes e métodos pequenos, mas o código ainda é difícil de manter e seguir

5

Eu fiz algo errado na minha organização de código? Eu ainda acho meu próprio programa difícil de seguir. Eu tentei decompor meu programa em pequenas e fáceis de entender classes e funções, ainda me vejo pulando para seguir o processo de ação.

Eu não posso postar meu projeto inteiro aqui, então aqui está uma amostra de um processo. Meu código é um aplicativo nodejs, usando uma organização T (modelo) de M (modelo) C (controlador). Essas são específicas para o projeto, e eu tenho uma seção 4 de classes e funções de "utilitários" que reutilizo de projeto para projeto.

O projeto é um diretório da web onde o usuário pode postar links. Aqui está o processo com todos os atores intervenientes de um post de usuário:

  1. Controlador de postagem do controlador: obtém a solicitação de postagem.
  2. Manipulador de postagens do controlador: form.parse é executado para obter entradas de campo
  3. Model validationResult function: instanciar modelo
  4. Erro de validação do modelo: recebe a instância, chama StringValidation no arquivo do utilitário e retorna erros de validação ou confirmação para seguir em frente se não houver erros.
  5. Função validationResult do modelo: retorna o resultado de 4). Se não houver erro, retorna essa informação para o controlador
  6. Controller: transforma o título em um arquivo de utilitário e, em seguida, cria uma entrada chamando um utilitário de banco de dados a partir do diretório do utilitário.
  7. Redirecionamentos.

Portanto, para criar uma entrada, muitos métodos espalhados no controlador, modelo e utilitários são usados. Quando preciso consertar um problema ou adicionar um recurso, preciso rastreá-lo e reencontrar o processo inteiro entre três arquivos e, provavelmente, duas vezes métodos e classes.

Estou um pouco preso aqui: tentei criar uma arquitetura modular de peças pequenas, legíveis e reutilizáveis, mas não tenho certeza se criei algo mais fácil para manter uma estrutura linear enorme.

Como você teria organizado essa estrutura? Se decompor um programa em componentes pequenos, reutilizáveis e de propósito único é o que deveríamos fazer como a maioria dos livros defende, nós, inerentemente, devemos saltar de métodos para classes e não vejo como isso facilita o processo.

    
por Benj 09.06.2016 / 12:01
fonte

1 resposta

6

Quanto menores os objetos, mais difícil é visualizar o fluxo do programa.

Mas o problema aqui não é que você tenha objetos, é que você está tentando criar um programa a partir de objetos de maneira procedural. Seus objetos devem ser caixas pretas totalmente auto-suficientes para o código de chamada, se você pode fazê-los assim, então você pode começar a usá-los sem se importar com o que eles fazem.

Pense da seguinte forma: você usa o tipo de dados int o tempo todo, mas aposto que nunca olha dentro dos operadores para ver o que ele faz. O operador de adição para um int "simplesmente funciona" e, portanto, você não se importa com o fluxo de dados quando chega a esse ponto.

O mesmo deve se aplicar aos seus outros objetos, sejam eles um controlador ou um modelo Person ou o que for. (na verdade, nos primórdios da OO, eu costumava ouvir as classes chamadas 'tipos', pois elas eram consideradas tipos de dados complexos simplesmente definidos pelo usuário)

Concordo que muitos frameworks não acertam isso e tratam as classes como um conjunto de métodos que são chamados por sua vez, e é uma pena que isso aconteça. O melhor que você pode fazer com esse código é criar diagramas de seqüência para ajudá-lo a visualizar e manter o controle sobre ele.

    
por 09.06.2016 / 13:00
fonte