Laden...

Methodenreihenfolge

Letzter Beitrag vor 8 Monaten 2 Posts 385 Views
Methodenreihenfolge

Ich kenne mich nur etwas besser in Python aus und da ist es designtechnisch natürlich nötig, dass wenn eine Methode aufgerufen wird, diese vor der Methode definiert werden muss, die sie aufruft.

Bei allen C# Programmcodes, die ich bisher gelesen habe, scheint es usus zu sein, dass es genau umgekehrt ist.
Ist das immer so?
Ist das ein Stil?

Mir ist klar, dass Python anders arbeitet, aber in C# müsste es doch eigentlich egal sein, oder?
Der Code wird ja nicht zur Laufzeit kompiliert bzw. Intepretiert.
Aber trotzdem wird es so gemacht.

Bei C# hast Du normalerweise gar keine erkennbare Reihenfolge, weil Du nur Methoden hast.
Also ja: Ist egal, Du kannst die Methoden herum sortieren, wie Du lustig bist - idealerweise so, wie es am übersichtlichsten ist.

Eine scheinbare Ausnahme ist die Program.cs, wenn die keine Klassenstruktur (top-level statements) hat, dann generiert der Compiler die Klassenstruktur drum herum. Dort definierte Methoden werden dann als Local functions übersetzt, die in der Main-Methode liegen.
Local functions sind die zweite Ausnahme, allerdings ist bei nicht statischen Local functions die Reihenfolge des Aufrufs doch relevant, da von in der Local function auf die lokalen Variablen der Methode zugegriffen werden kann, in der sie definiert wird, entsprechend kann die Methoden auch nur auf die Variablen zugreifen, die vor dem Aufruf definiert wurden und bekommt auch nur diese Werte. Das ist der Grund, warum ich Local functions möglichst am Ende definiere, oder einfach direkt statisch, oder ich nutze sie einfach gar nicht.

Mir wurde damals zu Ausbildungszeiten aber der Stil beigebracht, dass die Methoden in der Reihenfolge definiert werden, in der sie aufgerufen werden.
Dadurch ergibt sich dann zwangsläufig das, was Du bemerkt hast: Die Methoden werden nach der Nutzung definiert.

Ich persönlich folge dem aber nicht mehr, ich sortiere und gruppiere Methoden lieber nach Aufgabenbereich und Sichtbarkeit.
Darüber hinaus sortiere ich alle Inhalte einer Klasse nach Art des Inhalts:

  • Klassenvariablen
  • Properties
  • Konstruktoren
  • Methoden

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.