Il y a quelque temps, j'ai posé une question sur SO à propos de quelque chose écrit en C ++, mais au lieu d'obtenir une réponse au problème, les commentaires sont devenus complètement fous sur mon style de codage, même lorsque j'ai indiqué qu'il s'agissait d'un morceau de code WIP et que je voulais le nettoyer plus tard quand j'avais le cas de base en cours d'exécution. (J'ai eu tellement de votes négatifs que j'ai décidé de retirer la question, car mon représentant sur SO est déjà presque abyssal)
Cela m'a fait me demander pourquoi les gens adoptent une attitude aussi dure "tu es un noob, va te faire foutre". J'étais accusé d'écrire du C ++ comme s'il s'agissait de Java. Quelque chose que je ne peux pas comprendre et qui me déconcerte encore.
Je programme dans plusieurs langages POO depuis un certain nombre d'années maintenant, quoique par intervalles. Je choisis le langage à utiliser en termes de bibliothèques disponibles et d'environnements d'exécution optimaux pour le travail à accomplir. J'adopte des modèles de conception dans le code OOP et je suis assez confiant que mon utilisation des modèles est saine et que OO sage, je peux me débrouiller. Je comprends la boîte à outils OOP, mais choisissez d'utiliser les outils uniquement lorsque je pense que cela est vraiment nécessaire, pas simplement d'utiliser une astuce pour montrer mes esprits de codage. (Ce que je sais ne sont pas de premier ordre, mais je pense qu'ils ne sont pas au niveau n00b non plus).
Je conçois mon code avant d'écrire une seule ligne. Pour définir des tests, j'énumère les objectifs d'une certaine classe et les critères de test auxquels elle doit adhérer. Parce qu'il m'est plus facile de créer des diagrammes de séquence puis d'écrire du code, j'ai choisi d'écrire mes tests après que l'interface soit devenue évidente.
Je dois admettre que dans le morceau de code que j'ai publié dans la question, j'utilisais toujours des pointeurs, au lieu d'utiliser des pointeurs intelligents. J'utilise RAII chaque fois que je le peux. Je sais que RAII signifie une protection contre les pointeurs nuls, mais je travaille progressivement. C'était un travail en cours et je voulais le nettoyer plus tard. Cette façon de travailler a été fermement condamnée.
À mon avis, je devrais d'abord avoir un exemple de travail afin que je puisse voir si le scénario de base est une façon de penser viable. Il m'arrive aussi de penser que le nettoyage du code est quelque chose qui est typique de la phase de refactoring de l'agile, après que le cas de base a été prouvé. Je dois admettre que même si j'obtiens lentement la norme Cxx, je préfère utiliser ce que je comprends, au lieu de prendre le risque d'utiliser des concepts que je n'ai pas encore maîtrisés dans le code de production. J'essaie de nouvelles choses de temps en temps, mais généralement dans des projets de jeu que j'ai à côté, juste à cet effet.
[modifier] Je voudrais préciser que la suggestion de moucheron [1] ne s'est pas présentée dans la recherche que j'ai faite avant de commencer à poser ma question. Cependant, bien que sa suggestion couvre un aspect de la question, la question à laquelle il est lié ne répond pas au cœur de ma question, mais seulement à une partie. Ma question concerne davantage la réponse que j'ai reçue à mon style de codage et les aspects professionnels de la gestion des différents styles de codage et des niveaux (apparents) de compétence. Avec ma question précédente sur SO et sa réponse à titre d'exemple. [/modifier]
La question est alors: pourquoi se moquer de quelqu'un qui n'utilise pas votre style de codage?
Les questions / subdivisions à ma portée sont:
- Pourquoi serait-ce une mauvaise pratique de programmation d'utiliser plus de code sujet aux erreurs dans des situations de prototype, si le refactoring le rend plus robuste par la suite?
- Comment un programme écrit en C ++ pourrait-il être comme il a été écrit en Java? Qu'est-ce qui en fait un mauvais programme (étant donné que j'ai indiqué l'intention du style actuel et le travail prévu pour s'améliorer?)
- Comment serais-je un mauvais professionnel si je choisissais d'utiliser une construction utilisée dans un certain paradigme de programmation (par exemple OOP / DP)?
int
variables distinctes pour garder une trace de la longueur réelle.