Fazer uma pequena alteração, testá-la e depois enxaguar e repetir, é um mau hábito?

54

Sou um programador com vários anos de experiência. Percebi que tinha um certo hábito. Não tenho certeza se é realmente um mau hábito ou não.

Recebo uma lista de tarefas a serem executadas para uma solução, até pequenas tarefas pequenas, por exemplo,

  1. Alterar recursos deste controle de usuário
  2. Alterar tamanho de outro
  3. Adicione um pouco de HTML e codificação em outro controle de usuário

Todas essas tarefas são pequenas. Quero dizer, eles podem ser feitos em 10 minutos, mas eu tenho o mau hábito de fazer pequenas alterações e testá-las várias vezes em um navegador da web . Esta é uma boa prática?

Ou devo executá-los todos de uma vez e depois testá-los juntos?

Se é realmente um mau hábito, então como o retifico, pois parece que está perdendo tempo testando pequenas mudanças repetidamente?

Matemática
fonte
3
@gnat, sua resposta mais votada também é baseada em opiniões - programmers.stackexchange.com/questions/154733/… Toda resposta que eu leio está dando a sua própria opinião, algum comentário?
Matemática
2
Não é isso. que tal sua segunda resposta mais votada - programmers.stackexchange.com/questions/159964/… - também não é baseada em opiniões?
Matemática
7
A abordagem parece semelhante ao Desenvolvimento Orientado a Testes, onde você cria um teste, faz as alterações necessárias para passar no teste e, em seguida, executa seus testes. Quando você repetir isso para um segundo teste, sua segunda execução incluirá o primeiro; você testaria repetidamente para provar que ainda funciona, mas é automatizado.
Kevin Hogg
5
Eu diria que o oposto do hábito, fazer várias mudanças e só então testá-lo, é o mau hábito.
Chris B. Behrens

Respostas:

130
  • É uma boa prática.
  • Você está seguindo o método científico.
  • Se você alterar várias coisas antes de qualquer teste, o teste de cada um será mais difícil e talvez não seja confiável, pois as condições prévias serão mais difíceis de preparar e as diferentes alterações poderão interagir entre si de maneiras que você não previu.
  • No momento em que você sentir que está "desperdiçando" agora, recuperará mais tarde nos estágios de integração, teste e manutenção.
  • Caminho a percorrer.
Tulains Córdova
fonte
9
AFAIK, para programação da interface do usuário, não é apenas uma boa prática, é a única prática aceitável. É por isso que as empresas de software criadas tantas What you see is what you getferramentas para desenvolvedores que trabalham com HTML, CSS, Widget, etc ...
InformedA
38

Fazer muitas pequenas alterações e testar cada uma delas não é uma coisa ruim. Ele permite que você veja o efeito de cada alteração e, quando uma alteração causa um problema, é muito mais fácil saber quais alterações causaram problemas - a mais recente!

Se você tiver uma lista de tarefas com 10 itens e fizer todos eles de uma só vez, testando a página e depois perceber que a página parece errada, pode ser mais difícil saber qual alteração quebrou a página.

Obviamente, é possível levar essa abordagem ao extremo. Encontrar o equilíbrio é a chave, e isso resulta em uma melhor compreensão do que você está mudando e de como as mudanças podem afetar um ao outro.

FrustratedWithFormsDesigner
fonte
18

Sua pergunta tem duas partes:

  1. devo executá-los todos uma vez e testá-los juntos?

    Presumo que você esteja usando um VCS .
    E para rastrear, quais tarefas foram executadas, faz sentido distribuir a lista de tarefas para uma lista de confirmações: uma tarefa, uma confirmação .

    Isso facilita o gerenciamento de versões diferentes da base de código atual; você pode reverter para um estado anterior, escolher as alterações que deseja inserir no tronco principal, etc.

    A resposta é clara:

    Não, faça alterações apenas uma por uma - uma tarefa que uma confirmação .

  2. mas eu tenho o péssimo hábito de fazer pequenas alterações e testá-las várias vezes no navegador da Web. Essa é uma boa prática?

    É uma boa prática testar o código / interface do usuário , seja o que for , mas não faz sentido fazê-lo repetidamente no navegador. Existem ferramentas para fazer isso automaticamente para você ( Selenium, PhantomJS / Casper, ZombieJS )

    A resposta para este caso é:

    Sim, é uma boa prática testar o software mais de uma vez, mas use a automação

Thomas Junk
fonte
2
+1, mas não concordo com o uso da automação. Quando estou desenvolvendo um novo recurso, testo manualmente e com automação. Os testes manuais me deixaram muito certo de que as coisas estão se comportando da maneira que eu esperava. É possível escrever um teste automatizado incorretamente, vê-lo passar e pensar que está tudo bem, depois teste manualmente e veja se algo está errado.
Kevin - Restabelece Monica
Uma tarefa um commit certeza tem o potencial de tornar o registo de VCS uma bagunça incompreensível para várias definições de "tarefa single"
Whatsisname
depende de quão granular você define a tarefa;) ou se você deseja: um "ticket" um commit / branch. O uso do git facilita isso
Thomas Junk
11
Para expandir o que Kevin disse, acredito que, se você estiver adicionando um novo recurso que seja front-end, sempre será necessário checá-lo manualmente (ainda não encontrei um equivalente ao TTD para o trabalho de front-end), mas você também deseja sua automação para ajudar a garantir que você não violou os recursos existentes.
scragar
@scragar yes. Automação é para regressão.
Thomas Junk
6

Para qualquer hábito que um desenvolvedor tenha, existem 2 perguntas principais:

  1. Como isso influencia a qualidade do código que você cria?
  2. Como isso influencia sua produtividade?

Se a resposta para ambos for "Torna melhor", que se dane o hábito, ensine aos outros!
Se a resposta para uma é "Melhor" e a outra "Pior" - é um estilo e você deve estar consciente disso. Nem sempre é aplicável, e você pode precisar fazer um esforço para suprimi-lo de vez em quando.
Se a resposta para ambos for "Negativa" - você tem um problema sério.

Obviamente, nos dois primeiros casos, você também deve pensar em "O efeito positivo pode ser automatizado ou institucionalizado?". Talvez seja melhor escrever um teste do que experimentar navegadores diferentes todas as vezes? (Observe que eu sei que não é tão fácil testar o layout adequado no desenvolvimento da Web, não estou dizendo que isso é sempre possível ou que vale a pena).

Nesse caso em particular, parece-me que a qualidade aumenta, a produtividade pode diminuir. Para pequenas alterações, provavelmente é meio ruim (especialmente se as alterações estiverem inter-relacionadas), para maiores - é meio bom. Contanto que você teste o resultado final (evite "cada módulo foi testado e funciona, para que tudo funcione também, sem necessidade de testá-lo!").

Portanto, a menos que 90% do seu dia de trabalho faça mudanças realmente pequenas, é um hábito perfeitamente bom. Se o seu dia de trabalho for assim, talvez você queira revisar seu estilo de trabalho (ou local de trabalho).

Ordous
fonte
4

Isso depende do domínio. Para criar uma página da Web, ela funcionará bem e você poderá obter um feedback imediato (você pode fazê-lo diretamente no navegador!). Da mesma forma, funcionaria bem para qualquer coisa que não requer muito tempo para inicializar. Isso é preferível, pois mantém sua carga de trabalho mental baixa e reduz a possibilidade de erros.

No entanto, para projetos realmente grandes, nos quais é necessário compilar o código e o tempo gasto não é trivial (vários minutos), isso pode resultar em muito tempo de inatividade; portanto, é necessário recorrer a:

  • "paralelizar" seu fluxo de trabalho (por exemplo, trabalhar em várias compilações simultaneamente) ou
  • faça o máximo possível de uma só vez ou
  • crie uma pequena parte independente para trabalhar e integrar posteriormente no projeto maior.

(Provavelmente existem outras maneiras também.)

Rufflewind
fonte
+1 por fazê-lo diretamente no navegador. Costumo fazer ajustes de CSS diretamente no navegador como um protótipo do trabalho real que estou prestes a fazer.
precisa
0

Como outros já declararam, esse definitivamente não é um mau hábito. Geralmente, prefiro fazer apenas algumas modificações de uma só vez. A única exceção é se eu tiver uma grande lista de alterações que nem todas se afetam (por exemplo, alterações em estilos ou cópias menores, alterações em páginas diferentes, etc.). Se você estiver modificando layouts, faça uma alteração de cada vez para verificar se tudo está 100% em todos os navegadores compatíveis antes de passar para a próxima edição.

FreeAsInBeer
fonte