Vor einiger Zeit stellte ich auf SO eine Frage zu etwas, das in C ++ geschrieben wurde, aber anstatt eine Antwort auf das vorliegende Problem zu bekommen, wurden die Kommentare zu meinem Codierungsstil verrückt, selbst als ich anzeigte, dass es sich um einen WIP- Code handelte und dass ich es später aufräumen wollte, als ich den Base Case laufen hatte. (Ich habe so viele Abwärtsstimmen bekommen, dass ich mich entschlossen habe, die Frage zu stellen, da mein Repräsentant auf SO bereits beinahe miserabel ist.)
Ich habe mich gefragt, warum die Leute eine so harte Linie vertreten: "Du bist ein Noob, mach dich selbst fertig". Mir wurde vorgeworfen, C ++ zu schreiben, als wäre es Java. Etwas, das ich nicht verstehen kann und das mich immer noch verblüfft.
Ich programmiere seit einigen Jahren in einigen OOP-Sprachen, wenn auch in Abständen. Ich wähle die zu verwendende Sprache im Hinblick auf die verfügbaren Bibliotheken und die optimale Ausführungsumgebung für den jeweiligen Auftrag. Ich übernehme Entwurfsmuster im OOP-Code und bin mir ziemlich sicher, dass meine Verwendung von Mustern solide ist und dass OO klugerweise ich meine eigenen halten kann. Ich verstehe die OOP-Toolbox, benutze die Tools jedoch nur, wenn ich denke, dass sie wirklich erforderlich sind, und nicht nur, um meine Fähigkeiten als Programmierer zu demonstrieren. (Was ich weiß, sind nicht erstklassig, aber ich denke, sind nicht auf n00b-Ebene).
Ich entwerfe meinen Code, bevor ich eine einzelne Zeile schreibe. Um Tests zu definieren, liste ich die Ziele einer bestimmten Klasse und die Testkriterien auf, die eingehalten werden müssen. Da es für mich einfacher ist, Sequenzdiagramme zu erstellen und dann Code zu schreiben, habe ich mich dazu entschlossen, meine Tests zu schreiben, nachdem die Schnittstelle offensichtlich geworden ist.
Ich muss zugeben, dass ich in dem Code, den ich in der Frage gepostet habe, immer noch Zeiger verwendet habe, anstatt intelligente Zeiger zu verwenden. Ich benutze RAII wann immer ich kann. Ich weiß, dass richtiges RAII Schutz vor Nullzeigern bedeutet, aber ich arbeite inkrementell. Es war in Arbeit und ich wollte es später aufräumen. Diese Arbeitsweise wurde aufs Schärfste verurteilt.
Meiner Ansicht nach sollte ich zuerst ein funktionierendes Beispiel haben, damit ich sehen kann, ob der Basisfall eine brauchbare Denkweise ist. Ich denke auch, dass das Aufräumen des Codes typisch für die Refactoring-Phase von Agile ist, nachdem der Basisfall bewiesen wurde. Ich muss zugeben, dass ich, obwohl ich langsam den Cxx-Standard erreiche, lieber das verwende, was ich verstehe, anstatt das Risiko einzugehen, Konzepte zu verwenden, die ich noch nicht im Seriencode beherrsche. Hin und wieder probiere ich neue Sachen aus, aber normalerweise spiele ich Projekte, die ich nur zu diesem Zweck zur Seite habe.
[edit] Ich möchte klarstellen, dass der Vorschlag von gnat [1] nicht in der Suche auftauchte, die ich durchgeführt hatte, bevor ich anfing, meine Frage zu stellen. Obwohl sein Vorschlag einen Aspekt der Frage abdeckt, beantwortet die Frage, mit der er verknüpft ist, nicht den Kern meiner Frage, sondern nur einen Teil davon. Meine Frage betrifft eher die Reaktion auf meinen Codierungsstil und die professionellen Aspekte des Umgangs mit unterschiedlichen Codierungsstilen und (offensichtlichen) Fertigkeiten. Mit meiner vorherigen Frage zu SO und seiner Antwort als ein typisches Beispiel. [/bearbeiten]
Die Frage ist dann: Warum jemanden verspotten, der nicht Ihren Codierungsstil verwendet?
Die für mich vorliegenden Angelegenheiten / Unterteilungen sind:
- Warum wäre es eine schlechte Programmierpraxis, in Prototypsituationen fehleranfälliger Code zu verwenden, wenn das Refactoring die Robustheit des Codes anschließend erhöht?
- Wie kann ein in C ++ geschriebenes Programm so sein, wie es in Java geschrieben wurde? Was macht es zu einem schlechten Programm (wenn man bedenkt, dass ich die Absicht des aktuellen Stils und der geplanten Arbeit zur Verbesserung angegeben habe?)
- Wie wäre ich ein schlechter Profi, wenn ich ein Konstrukt verwenden würde, das in einem bestimmten Programmierparadigma (z. B. OOP / DP) verwendet wird?
int
Variablen, um die tatsächliche Länge zu verfolgen.