Clean Code / Software Principles - Wo seid ihr??
-
Hallo Leute,
mir fällt immer öfter auf, dass Dinge wie Clean Code, Lingua Franca, SOLID, allg. Software Principles (hier) sehr wenig beachtet werden.
Code schreibt man englisch (Lingua Franca). Code schreibt man verständlich (aussagekräftige Variablen Namen etc). Code schreibt man einfach und wartbar (SOLID).
Wie haltet ihr das? Ist das in C++ anders (ich glaube nicht)? Wie lernt ihr das in der Schule?
Von meinen Azubis sehe ich das auch, dass sie deutsche Variablennamen im Code verwenden, das ist definitiv ein No-Go! Dass sie von Software Principles keine Ahnung haben (was lernen die in der Berufsschule?).
Ich bin bei uns Principle Software Architect und verantwortlich für Code Quality, Maintainability, Einhaltung der Coding Styles etc.. Bei mir ist die IDE und auch die Tastatur englisch (zumal eine EN Tastatur eh viel optimaler fürs Programmieren ist).
Freue mich auf rege Diskussionen!
VG,
Martin
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
I (zumal eine EN Tastatur eh viel optimaler fürs Programmieren ist).
Findest Du? Meinst Du nicht, dass sie nur ein klein wenig optimaler ist?
Ich meine, manchmal schreibt man ja mal was, was nicht Programmtext ist, zum Beispiel einen elektrischen Brief, da ist die EN Tastatur viel pessimaler - finde ich ...
-
Ich finde, optimal ist gar nicht steigerbar.
Ich bin aber auch für aussagekräftige englische Bezeichner. Ich arbeite allerdings auch öfter international, da ist das einfach normal. Meine Tastatur ist im OS immer auf de_DE gestellt, damit auch Kollegen was dran schreiben können. Ich habe aber auch eine Tastatur mit meinem eigenen auf mich optimierten Layout (per QMK). Bei der habe ich alles gut erreichbar, Symbole fürs programmieren aber auch Umlaute für deutsche Texte.
-
Ob die Tastatur jetzt Englisch ist oder nicht, ist doch jetzt erstmal nicht weiter von Priorität.
Es geht darum, Code nach den gültigen Coding Standards zu schreiben - und da gehört es dazu, diesen u.A. in englisch zu schreiben.
-
Ich stimme stark deinen Aussagen zu, wie es sein sollte, und ich kann auch deine Beobachtung bestätigen, dass viele neue (und leider auch alte) Mitarbeiter das nicht ansatzweise beherrschen. Das ist vollkommen sprachunabhängig.
Von daher kann ich nicht rege mitdiskutieren, da ich die gleiche Meinung habe.
Vielleicht Kontroverse um der Kontroverse willen: Wer mit deutscher Tastatur programmiert, hat noch nie US-Layout ausprobiert.
PS: Falls die Diskussion durch Code von *john 0 angeregt wurde: Hier im Forum ist unlesbarer Code ok, wenn es darum geht, komische Restriktionen in Hausaufgaben kreativ auszulegen. Da gehört das mit zum Spiel, sich möglichst "cool" auszudrücken.
-
Was ich vermisse, ist eine Ausbildung der Lehrkräfte in der objektorientierten Softwareentwicklung. Dazu gehört für mich die Ausbildung von Prozessverständnis und das klassische beherrschen von OOA, OOD und OOP. Es reicht nicht, eine objektorientierte Programmiersprache zu nutzen!
Teils habe ich Entwickler kennengelernt, die fleißig Methoden einer Bibliothek nutzten (welche objektorientiert entwickelt ist), ohne selbst objektorientiert entwickeln zu können (serialisierte Aufrufe von Bibliotheksroutinen aus JavaScript oder ähnlichem heraus).
Gar eine Prozess- und OO-Analyse durchzuführen wurde gerne mal als zu aufwendig und nicht "AGIL" abgelehnt. Teils kam es mir dann vor, wie ein Hack von Sprint zu Sprint. Das mag daran liegen, dass wir sogenannte Anwendungsentwickler mit spezifischen Schwerpunkten in 2-3 Jahren ausbilden die dann als sogenannte "Coder" in agilen Teams unterwegs sind (zumindest war das so bei meiner letzten Arbeitsstelle so).
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
Von meinen Azubis sehe ich das auch, dass sie deutsche Variablennamen im Code verwenden, das ist definitiv ein No-Go!
Sehe ich differenzierter. Wir schreiben fast alles auf Englisch, aber manchmal gibt es im Englischen einfach kein optimal passendes Fachwort - oder es gibt auf Deutsch zwei Begriffe für leicht unterschiedliche Dinge, die aber beide in denselben englischen Fachbegriff übersetzt werden, wo die Unterscheidung dann nicht mehr möglich ist und es somit im Englischen uneindeutig wäre und immer noch gesondert erklärt werden müsste. In diesen Fällen verwenden wir auch deutsche Namen im Code.
-
@wob sagte in Clean Code / Software Principles - Wo seid ihr??:
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
Von meinen Azubis sehe ich das auch, dass sie deutsche Variablennamen im Code verwenden, das ist definitiv ein No-Go!
Sehe ich differenzierter. Wir schreiben fast alles auf Englisch, aber manchmal gibt es im Englischen einfach kein optimal passendes Fachwort - oder es gibt auf Deutsch zwei Begriffe für leicht unterschiedliche Dinge, die aber beide in denselben englischen Fachbegriff übersetzt werden, wo die Unterscheidung dann nicht mehr möglich ist und es somit im Englischen uneindeutig wäre und immer noch gesondert erklärt werden müsste. In diesen Fällen verwenden wir auch deutsche Namen im Code.
Machen das bei euch auch die nicht deutschsprachigen Mitarbeiter? Und was wäre ein Beispiel dafür?
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
nach den gültigen Coding Standards
Was sind denn die "gültigen" Coding Standards? Es gibt einige Dinge die schon sehr stark verbreitet sind, wie eben z.B. englische Bezeichner. Aber wer sagt dass das ein "gültiger" Standard sein soll? Und was genau heisst "gültig" in dem Zusammenhang überhaupt?
Es gibt hier nicht die eine offizielle Stelle die vorschreibt welche Standards vorgeschrieben bzw. empfohlen sind.
-
Also mit deutscher Tastatur zu programmieren ist ja wohl Absturz. Da muss man sich die Hand verrenken um ein } zu schreiben.
Ich habe Kollegen die auch mit Dvorak coden, weiss nicht wieviel besser das gegenueber US ist.
-
@hustbaer sagte in Clean Code / Software Principles - Wo seid ihr??:
Was sind denn die "gültigen" Coding Standards? Es gibt einige Dinge die schon sehr stark verbreitet sind, wie eben z.B. englische Bezeichner. Aber wer sagt dass das ein "gültiger" Standard sein soll? Und was genau heisst "gültig" in dem Zusammenhang überhaupt?
Es gibt hier nicht die eine offizielle Stelle die vorschreibt welche Standards vorgeschrieben bzw. empfohlen sind.
Es gibt sehr wohl allgemeingültige Prinzipien / Standards, die einzuhalten sind, unabhängig von den "firmeninternen" coding styles. Dazu lese bitte das Buch "Clean Code" von Robert C. Martin oder lese dich in die SOLID Prinzipien ein.
Für "Englisch als Sprache in der Programmierung" kannst du die mal die Ergebnisse dieser Google-Suche ansehen: https://www.google.com/search?q=lingua+franca+software+development
Ansonsten stimme ich dir natürlich zu, dass abweichende Regelungen innerhalb der Firma getroffen werden können - sie sind aber dann nicht "optimal" im Sinne des Software Designs.
-
Die angeregte Diskussion über das Tastaturlayout finde ich eher langweilig. Interessanter sind doch die angesprochenen Themen wie "Clean Code, Lingua Franca, SOLID, allg. Software Principles".
Es gibt Auftraggeber, die für ihre hausinterne Software ein Dokumentationssprache vorschreiben. Das beinhaltet dann manchmal auch Klassen-, Attribut-, Methoden- und Variablennamen. Insbesonders dann, wenn von einem Geschäftsprozess aus eine Software entwickelt wird und durchgängig von der Fachabteilung verstanden werden soll.
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
Es gibt sehr wohl allgemeingültige Prinzipien / Standards, die einzuhalten sind, unabhängig von den "firmeninternen" coding styles. Dazu lese bitte das Buch "Clean Code" von Robert C. Martin oder lese dich in die SOLID Prinzipien ein.
Bitte erklaer @hustbaer nicht, er soll sich mal ein Buch ueber Clean Code durchlesen... er ist routinierter als Du anzunehmen scheinst...
Es gibt hier nicht die eine offizielle Stelle die vorschreibt welche Standards vorgeschrieben bzw. empfohlen sind.
Zuallererst darf man nicht vergessen, dass der durchaus gueltige C++ Standard selbst auf Englisch verfasst ist, und entsprechend auch die Standardbibliothek und alle keywords etc. englisch sind. Das ist eine normative Basis fuer jeden C++ Code.
Ein weiterer grosser Faktor ist die Lesbarkeit/Verstaendlichkeit von Code fuer andere Programmierer. Programmierer im internationalen und auch interregionalen Jobmarkt haben Englisch eben als gemeinsamen Nenner. Wie man im Internet lesen kann, schreiben auch asiatische Firmen ihren Code auf Englisch (und kommentieren ihn groessenteils auch darin). Das wird sich auch hoechstwahrscheinlich niemals aendern.
Natuerlich kann eine deutsche Firma ihren Code deutsch schreiben, aber das wird schon ziemlich unleserlich wirken, wenn man APIs/Bibliotheken etc. benutzt die alle auf Englisch sind. Die Sprache sickert eben von "oben" (Standard & wichtige Bibliotheken/APIs, POSIX etc.) herab. Sich dagegen zu stemmen hat wenig Sinn.
-
@Columbo sagte in Clean Code / Software Principles - Wo seid ihr??:
Bitte erklaer @hustbaer nicht, er soll sich mal ein Buch ueber Clean Code durchlesen... er ist routinierter als Du anzunehmen scheinst...
Das ist möglich, und ich möchte mich, falls noch möglich, bei @hustbaer entschuldigen, falls ich ihm zu nahe getreten bin. Es Las sich so - aber natürlich kennen wir uns noch nicht.
@Helmut-Jakoby sagte in Clean Code / Software Principles - Wo seid ihr??:
Die angeregte Diskussion über das Tastaturlayout finde ich eher langweilig. Interessanter sind doch die angesprochenen Themen wie "Clean Code, Lingua Franca, SOLID, allg. Software Principles".
Es gibt Auftraggeber, die für ihre hausinterne Software ein Dokumentationssprache vorschreiben. Das beinhaltet dann manchmal auch Klassen-, Attribut-, Methoden- und Variablennamen. Insbesonders dann, wenn von einem Geschäftsprozess aus eine Software entwickelt wird und durchgängig von der Fachabteilung verstanden werden soll.
Dann läuft in dieser Firma grunsätzlich etwas schief...
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
@Columbo sagte in Clean Code / Software Principles - Wo seid ihr??:
Bitte erklaer @hustbaer nicht, er soll sich mal ein Buch ueber Clean Code durchlesen... er ist routinierter als Du anzunehmen scheinst...
Das ist möglich, und ich möchte mich, falls noch möglich, bei @hustbaer entschuldigen, falls ich ihm zu nahe getreten bin. Es Las sich so - aber natürlich kennen wir uns noch nicht.
Alles gut. War auch nur Spass. Aber hustbaer hat hier schon ueber 30k Beitraege verfasst und ist ein sehr erfahrener und kompetenter alter Hase. Du solltest also annehmen, dass seine Meinungen schon professionell fundiert sind.
-
@hustbaer sagte in Clean Code / Software Principles - Wo seid ihr??:
Was sind denn die "gültigen" Coding Standards?
Ich kenne da den MISRA-C Standard.
Entdeckt habe ich diesen bei einer speziellen Embedded-IDE als auch bei CppCheck.
-
@tbird sagte in Clean Code / Software Principles - Wo seid ihr??:
Ich bin bei uns Principle Software Architect und verantwortlich für Code Quality, Maintainability, Einhaltung der Coding Styles etc..
Welche Rolle spielen bei dir Linting Tools ala CppCheck, clang-tidy,... ?
Clean Code, das kann ja auch der striktere Einsatz gewisser Funktionen (z.B. std::for_each, std::accumulate,...) bedeuten.
-
Es gibt sehr wohl allgemeingültige Prinzipien / Standards, die einzuhalten sind, unabhängig von den "firmeninternen" >coding styles.
Die Frage ist, z.b. wenn die firmentinternen Regeln mit den allgemeinen C++ Clean Code und teilweise auch Konzepten collidieren?
Ich hab jetzt scho 2 mal erlebt im C++ Desktop Umfeld erlebt, das auto keyword verboten ist zu nutzen (wtf
)
partielle template spezialisierung verboten ist .... (und man generell templates nur im Notfall verwenden soll, weil zu fehleranfällig, mitm 2019er Compiler ??? )dass Dinge wie Clean Code, Lingua Franca, SOLID, allg. Software Principles (hier) sehr wenig beachtet werden.
Wenn aber in Projekte kommst, meistens die, die schon zig Jahre laufen, wär ich froh wenn die grundlegenden Dinge passen würden ....
- Plugins auch Plugins sind, und nicht nur so heissen,
- man das Konzept von Ownership respektiert, (wenn std::shared_pointer die meistbenutzteste std Klasse im code ist)
Da sind StyleGuides dein wenigstes Problem, glaub ich ....
Schwer ists auch, wenn öfters das Projekt wechselst, und damit jedesmal der Style Guide zu 180° dreht ... ungarische Notation z.b.
-
@RHBaum sagte in Clean Code / Software Principles - Wo seid ihr??:
(und man generell templates nur im Notfall verwenden soll, weil zu fehleranfällig, mitm 2019er Compiler ??? )
Sry, OT: Hattest du/die Probleme mit älteren Compilern, wenn templates im Spiel waren? Oder meinst du, dass sich die Fehlermeldungen verbessert haben?
Oder geht es um traits?
-
@wob sagte in Clean Code / Software Principles - Wo seid ihr??:
Sehe ich differenzierter. Wir schreiben fast alles auf Englisch, aber manchmal gibt es im Englischen einfach kein optimal passendes Fachwort - oder es gibt auf Deutsch zwei Begriffe für leicht unterschiedliche Dinge, die aber beide in denselben englischen Fachbegriff übersetzt werden, wo die Unterscheidung dann nicht mehr möglich ist und es somit im Englischen uneindeutig wäre und immer noch gesondert erklärt werden müsste. In diesen Fällen verwenden wir auch deutsche Namen im Code.
Sehe ich auch so.
Es gibt uns im Team ein paar Fachworte, die sind historisch bedingt deutsch, und wenn ich in dem Zusammenhang etwas programmiere, dann verwende ich im Variablen/Methoden-Namen diesen deutschen Fachbegriff. Das kann dann mitunter schomal etwas denglisches werden wie "getWertpapierStammdaten()". Aber der große Vorteil ist: bei JEDEM Kollegen klingelt es bei dem Wort sofort und er weiß direkt was hier das Thema ist. Und das ist mir in dem Fall wichtiger als irgendwelche Pseudoregeln zum Dogma zu erklären. Zumal nicht jeder Kollege perfekt englisch schreibt/spricht und somit der englische Fachbegriff vermutlich keine Assoziation hervorruft.