Exemplo de projeto de código incorreto para motivar a refatoração / bom design [fechado]

5

Isso é o oposto de link .

Eu estou ensinando engenharia de software para alunos de graduação e eu gostaria de um blob de código orientado a objetos que demonstre acoplamento strong, abstração ruim, baixo encapsulamento, baixa capacidade de manutenção, os trabalhos. Alguém tem um bom exemplo? Algo que é digerível (como em, capaz de roçar em uma hora ou menos) seria ótimo. Agradecemos antecipadamente.

    
por Alex Lo 10.01.2012 / 22:01
fonte

5 respostas

1

Você pode usar o Google para "refatoração". Muitas vezes há uma imagem de antes e depois ou até mesmo um processo passo a passo que pode lhe fornecer um ponto de partida de "código ruim".

Se isso não funcionar, por que não ensiná-los a escrever códigos ruins? Pode ser um exercício interessante no pensamento contrário. Poste as "regras de código incorreto" no quadro-negro / quadro branco:

1) Tente enterrar erros de ortografia em nomes de métodos
2) Use nomes de variáveis extremamente curtos, longos ou sem sentido
3) Tente reutilizar nomes de variáveis ou nomes de variáveis semelhantes em diferentes escopos
4) Escrever longos comentários que não combinam com o código ou não têm sentido (getSalesTax - um método que obtém o imposto sobre vendas)
5) Coloque tanta funcionalidade em uma única linha quanto possível

Outros são bem-vindos para adicionar as 95 regras ausentes a essa resposta.

    
por 10.01.2012 / 23:21
fonte
0

Ainda sendo um projeto para estudantes, eu vergonhosamente submeto parte do meu projeto final . É um software de código aberto escrito em Java.

É grande o suficiente para que você provavelmente não queira desfazer tudo e começar de novo.

Ele apresenta algumas construções absolutamente horríveis, mas deve ter estrutura suficiente para tornar palpáveis algumas seções-chave.

Disclaimer: Nós só tínhamos 3 de 5 membros da equipe e nos auto-ensinamos Java como parte do projeto para torná-lo mais um desafio.

Estarei disponível para perguntas / respostas ou qualquer outra coisa, se você acabar vendo isso.

    
por 10.01.2012 / 22:24
fonte
0

O código realmente desanimador geralmente não dura o tempo suficiente para as pessoas notarem. Você pode querer verificar inativo ou pre-alpha no sourceforge para começar.

Além disso, o código limpo de Robert Martin tem muitos exemplos de antes e depois, adotando esses tipos de conceitos um de cada vez. Não é exatamente um exemplo canônico, mas esse é um livro que eu gostaria que todo novo contratado tivesse lido na faculdade.

    
por 10.01.2012 / 22:27
fonte
0

Você pode querer especificar o idioma em que está pesquisando um projeto. Cerca de um ano atrás eu escrevi um cliente e servidor para quatro pessoas. Dimensional em C ++ com Qt. São cerca de 4.000 linhas de código, se bem me lembro, e devem funcionar tanto no Windows quanto no Linux.

O código abusa exceções, o acoplamento rígido (acho que há mesmo uma amizade ruim em algum lugar), o RTTI, usa um protocolo de rede ridiculamente ruim (que é totalmente não documentado) e tem pelo menos duas classes que fazem muito ( Server e Client ). Ah, e falta qualquer tipo de testes unitários. Levei cerca de três semanas para escrever, se bem me lembro, por isso pode ser muito pequeno.

Sinta-se à vontade para entrar em contato comigo com perguntas / reclamações se você optar por usá-lo.

Eu acho que uma maneira interessante de gerar tais projetos seria pegar os projetos dos alunos existentes e então exigir que os alunos adicionem recursos a eles em um período de tempo que não é longo o suficiente. Depois de alguns deles, que provavelmente são abordados rapidamente, você pode ensiná-los a refatorar e solicitar outro recurso no final (em um intervalo de tempo semelhante) para demonstrar ainda mais os benefícios do que aprenderam / fizeram.

    
por 11.01.2012 / 00:11
fonte
0
Muito fácil, pense em um projeto, faça com que a pessoa / grupo o codifique em um dia ou dois e, em seguida, passe por eles por que é um projeto ruim. As pessoas aprendem muito melhor do que é relevante para o que sabem (neste caso, seu próprio código).

    
por 11.01.2012 / 01:56
fonte