Como lidar com a filosofia de reutilização de código?


10

Sempre me pego pensando na reutilização de código ao iniciar um novo projeto.

Até que ponto devo tornar meu código reutilizável?
Devo limitá-lo ao escopo do aplicativo ou torná-lo reutilizável fora do projeto?

Às vezes, sinto que a reutilização do código pode atrapalhar um design simples. Por favor, compartilhe seu próprio entendimento e abordagem de reutilização de código.


Respostas:


21

O código precisa funcionar antes de poder ser reutilizado. Portanto, isso implica em design e função (primária) antes da consideração da reutilização do código.

É bom pensar em reutilizar e reutilizar componentes que você já escreveu. Mas às vezes pode ser tão rápido, se não mais rápido, apenas para escrever o código e fazê-lo funcionar. Depois de resolver o problema original, você pode refatorar o código para torná-lo mais reutilizável.


2
O "era" na primeira frase que um erro de digitação "tem"?

@ delnan - o que "era"? :-) Obrigado por capturar isso.

9

Lembre-se do KISS e YAGNI:

Código re-usability better to be considereddepois de ter seu documento de design pronto . Isso permitirá que você veja a seção / partes do código que serão potencialmente duplicadas.

Assim, quando você não tiver um design claro, aplique a abordagem KISS e YAGNI em seu trabalho!


1

Isso é da minha experiência, mas ainda acredito que pode ser aplicado e segue as linhas do que o GlenH7 mencionou.

Trabalho entre 3 empresas realizando vários projetos. As empresas são irmãs umas das outras com algumas práticas padrão e metodologia de trabalho, mas também são únicas de várias maneiras. Com isso dito, geralmente começo cada projeto de novo e quero apenas concluí-lo ou mostrar progresso. Então, se eu me deparar com um cenário em que me lembro de um código ou funcionalidade que escrevi para um projeto anterior, farei uma das duas coisas (dependendo do tempo):

  1. Método mais rápido
    Copie o código anterior do outro projeto (não tenha muito tempo) para o meu projeto atual.
  2. Segundo método mais rápido
    Copie o código anterior e coloque-o em uma biblioteca comum e inclua essa biblioteca no projeto atual (para facilitar o avanço).

    2b. Se eu fizer alterações no outro projeto (original), refatorá-lo-ei para usar a nova biblioteca [mas geralmente não o fará, a menos que precise refazer o projeto].

Apenas esteja avisado, teste o diabo das bibliotecas comuns. Bibliotecas comuns significam criar dependências. Dependências criam pontos de falha. Embora você possa precisar de algo ligeiramente ajustado para sua implementação atual, você não sabe como isso mudará mais alguma coisa usando essa biblioteca.


Por que usar uma única implementação de algo quando você pode ter quatro ou cinco idênticos? Seu método "mais rápido" é o mais rápido no curto prazo.
Caleb

@ Caleb: Concordo. Nunca disse que era elegante apenas que os prazos são prazos. Durante uma refatoração, reconhecerei vários projetos usando o mesmo código e os detalharei em suas próprias bibliotecas. Mas quando preciso tirá-lo da porta, copiar e colar funciona. Isso também me dá flexibilidade para fazer modificações para esse projeto e eu mantenho essas mudanças em mente quando eu abrir a biblioteca e desejar torná-la sólida e flexível.
23420 Brad Christie

1

Às vezes, acho que copiar e colar algumas linhas de código é uma solução melhor. Mesmo na linguagem humana, quando você quer dizer uma frase que você disse antes apenas com uma ligeira variação, você a repetirá com a variação, porque isso causa menos problemas para qualquer pessoa.

No entanto, se o seu módulo grande precisar ser usado de uma maneira um pouco diferente da suportada, não o clone apenas para modificar poucas linhas, pois é muito provável que você queira estender a funcionalidade que tanto a base quanto a compartilhar clone no futuro. Em vez disso, basta configurá-lo ou exportar a funcionalidade que a base e o clone compartilham em outro módulo que eles usarão.


0

Não exagere. E se você não tiver certeza, mantenha o escopo do aplicativo até escrever projetos suficientes para ver onde pode reutilizar o quê.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.