Hace un tiempo, hice una pregunta en SO sobre algo escrito en C ++, pero en lugar de obtener una respuesta al problema en cuestión, los comentarios se volvieron locos en mi estilo de codificación, incluso cuando indiqué que era un código WIP y que tenía la intención de limpiarlo más tarde cuando tenía el caso base funcionando. (Obtuve tantos votos negativos que decidí sacar la pregunta, ya que mi representante en SO ya es casi abismal)
Me hizo preguntarme por qué la gente adopta una actitud tan dura como "eres un novato, vete a la mierda". Me acusaron de escribir C ++ como si fuera Java. Algo que no puedo entender y que todavía me desconcierta.
He estado programando en varios idiomas OOP durante varios años, aunque a intervalos. Elijo el idioma para usar en términos de sus bibliotecas disponibles y entornos de ejecución óptimos para el trabajo en cuestión. Adopto patrones de diseño en el código OOP y estoy bastante seguro de que mi uso de patrones es sólido y de que, sabiamente, puedo mantener el mío. Entiendo la caja de herramientas OOP, pero elijo usar las herramientas solo cuando creo que realmente es necesario, no solo usar un truco para mostrar mi ingenio de codificación. (Que sé que no son de primera categoría, pero creo que tampoco están en el nivel n00b).
Diseño mi código antes de escribir una sola línea. Para definir las pruebas, enumero los objetivos de una clase determinada y los criterios de prueba a los que debe cumplir. Debido a que es más fácil para mí crear diagramas de secuencia y luego escribir código, elegí escribir mis pruebas después de que la interfaz se hizo evidente.
Debo admitir que en el código que publiqué en la pregunta, todavía estaba usando punteros, en lugar de usar punteros inteligentes. Yo uso RAII siempre que puedo. Sé que una RAII adecuada significa protección contra los puntos nulos, pero trabajo de forma incremental. Era un trabajo en progreso y tenía la intención de limpiarlo más tarde. Esta forma de trabajar fue condenada enérgicamente.
En mi opinión, debería tener un ejemplo de trabajo primero para poder ver si el caso base es una forma de pensar viable. También pienso que limpiar el código es algo típico de la fase de refactorización ágil, después de que se haya probado el caso base. Debo admitir que, aunque lentamente estoy obteniendo el estándar Cxx, prefiero usar lo que entiendo, en lugar de arriesgarme a usar conceptos que todavía tengo que dominar en el código de producción. Intento cosas nuevas de vez en cuando, pero generalmente en proyectos de juego que tengo a un lado, solo para ese propósito.
[editar] Me gustaría aclarar que la sugerencia de mosquito [1] no apareció en la búsqueda que hice antes de comenzar a hacer mi pregunta. Sin embargo, aunque su sugerencia cubre un aspecto de la pregunta, la pregunta a la que se vinculó no responde al meollo de mi pregunta, solo parte de ella. Mi pregunta es más sobre la respuesta que obtuve a mi estilo de codificación y los aspectos profesionales de manejar diferentes estilos de codificación y niveles (aparentes) de habilidad. Con mi pregunta anterior sobre SO y su respuesta como un caso puntual. [/editar]
La pregunta entonces es: ¿por qué burlarse de alguien que no usa su estilo de codificación?
Los asuntos / subdivisiones disponibles para mí son:
- ¿Por qué sería una mala práctica de programación usar más código propenso a errores en situaciones de prototipo, si la refactorización lo hace más robusto después?
- ¿Cómo podría un programa escrito en C ++ ser como si estuviera escrito en Java? ¿Qué lo convierte en un mal programa (considerando que indiqué la intención del estilo actual y el trabajo planificado para mejorar?)
- ¿Cómo sería un mal profesional si decidiera usar una construcción que se utiliza en un cierto paradigma de programación (por ejemplo, OOP / DP)?
int
variables separadas para realizar un seguimiento de la longitud real.