Há um tempo atrás, fiz uma pergunta no SO sobre algo escrito em C ++, mas, em vez de obter uma resposta para o problema em questão, os comentários enlouqueceram no meu estilo de codificação, mesmo quando indiquei que era um código WIP e que pretendia limpá-lo mais tarde, quando o gabinete básico estivesse funcionando. (Eu recebi tantos votos negativos que decidi fazer a pergunta, pois meu representante no SO já é quase abismal)
Isso me fez pensar por que as pessoas adotam uma atitude tão rígida de "você é um noob, vá se foder". Eu estava sendo acusado de escrever C ++ como se fosse Java. Algo que não consigo entender e que ainda me deixa perplexo.
Eu tenho programado em algumas linguagens OOP há vários anos, embora em intervalos. Eu escolhi o idioma a ser usado em termos de bibliotecas disponíveis e ambientes ideais de execução para o trabalho em questão. Adoto padrões de design no código OOP e estou bastante confiante de que meu uso de padrões é sólido e que, em termos de OO, posso me manter. Entendo a caixa de ferramentas OOP, mas optei por usá-las somente quando acho que é realmente necessário, e não apenas usar um truque para mostrar meu raciocínio de codificação. (Que eu sei que não são de primeira qualidade, mas acho que também não estão no nível n00b).
Eu projeto meu código antes de escrever uma única linha. Para definir testes, listo os objetivos de uma determinada classe e os critérios de teste aos quais ela deve aderir. Como é mais fácil criar diagramas de sequência e depois escrever código, escolhi escrever meus testes depois que a interface se tornou óbvia.
Devo admitir que, no trecho de código que postei na pergunta, eu ainda estava usando ponteiros, em vez de usar ponteiros inteligentes. Eu uso RAII sempre que posso. Sei que RAII adequado significa proteção contra ponteiros nulos, mas trabalho de forma incremental. Era um trabalho em andamento e pretendia limpá-lo mais tarde. Essa maneira de trabalhar foi fortemente condenada.
Na minha opinião, eu deveria ter um exemplo de trabalho primeiro para poder ver se o caso base é uma maneira viável de pensar. Também acho que limpar o código é algo típico da fase de refatoração do ágil, após a comprovação do caso base. Devo admitir que, embora esteja adquirindo lentamente o padrão Cxx, prefiro usar o que entendo, em vez de correr o risco de usar conceitos que ainda não dominei no código de produção. Eu tento coisas novas de vez em quando, mas geralmente em projetos que tenho ao lado, apenas para esse fim.
[editar] Gostaria de esclarecer que a sugestão do mosquito [1] não apareceu na pesquisa que fiz antes de começar a fazer minha pergunta. No entanto, embora sua sugestão cubra um aspecto da pergunta, a pergunta a que ele se vinculou não responde ao cerne da minha pergunta, apenas parte dela. Minha pergunta é mais sobre a resposta que cheguei ao meu estilo de codificação e os aspectos profissionais de lidar com diferentes estilos de codificação e níveis (aparentes) de habilidade. Com a minha pergunta anterior sobre SO e sua resposta como um caso em questão. [/editar]
A questão então é: por que zombar de alguém que não usa seu estilo de codificação?
Os assuntos / subdivisões em questão para mim são:
- Por que seria uma prática ruim de programação usar mais código propenso a erros em situações de protótipo, se a refatoração o tornar mais robusto posteriormente?
- Como o programa escrito em C ++ seria como se estivesse escrito em Java? O que o torna um programa ruim (considerando que eu indiquei a intenção do estilo atual e o trabalho planejado para melhorar?)
- Como eu seria um péssimo profissional se eu escolhesse usar um construto usado em um certo paradigma de programação (por exemplo, OOP / DP)?
[1] Desenvolva rápido e com bugs, corrija erros ou seja lento, tenha cuidado com cada linha de código?
int
variáveis separadas para acompanhar o tamanho real.