Laden...

Benutzt ihr #region und wenn ja habt ihr ein bestimmtes Schema?

Erstellt von nicky vor 10 Jahren Letzter Beitrag vor 10 Jahren 4.621 Views
N
nicky Themenstarter:in
232 Beiträge seit 2011
vor 10 Jahren
Benutzt ihr #region und wenn ja habt ihr ein bestimmtes Schema?

Hallo,

benutzt ihr #region / #endregion um bestimmte Klassenmember zusammenzufassen und auszublenden? Wenn ja, habt ihr ein bestimmtes Schema? z.B:

#region Click Ereignisse

... alle Click Ereignisse

#endregiog

Cheers

C
2.121 Beiträge seit 2010
vor 10 Jahren

Ich nutze es nicht mehr zum Gruppieren von Elementen wie Membervariablen und so. Die sind bei mir als erstes, danach Konstruktoren und dann Methoden. Das finde ich auch ohne Regionen.
Mich hat es irgendwann genervt dass ich in einer Codedatei immer alles auf und zu klappen muss, daher nutze ich die Regionen nicht mehr so ausufernd.

16.806 Beiträge seit 2008
vor 10 Jahren

Ja, verwende ich.

Ein mal zum Gruppieren der Klassen und zum anderen missbrauch ichs teilweise um Workflows damit innerhalb einer Methode zu dokumentieren (um mir den Sequence Workflow Pattern zu sparen -> KISS).

#region Step1: Get all Files
#region Step2: Mach was andres..

Mein Schema ist dabei dynamisch und grob.
#region Events
#region Properties
#region Fields
...

Zusammen mit VS10x Code Map v3 und Region Highlights(VB-Style) sehr übersichtlich und zeitsparend.

6.911 Beiträge seit 2009
vor 10 Jahren

Hallo nicky,

ich nutze sie tw. auch, v.a. um eine Gliederung in die Klasse zu bringen.
Felder, Eigenschaften, Konstruktor(en), öffentliche Methoden und private Methoden.

Siehe auch Kommentare (und Regions) zur optischen Gliederung (z.B. Trennlininen) einsetzen: Best Practice?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

5.657 Beiträge seit 2006
vor 10 Jahren

Hi nicky,

ich verwende die #Regions so wie es Abt beschrieben hat. Wenn man sich konsequent daran hält, macht es den Quelltext übersichtlicher, und man findet später schneller was man sucht.

Christian

Weeks of programming can save you hours of planning

N
nicky Themenstarter:in
232 Beiträge seit 2011
vor 10 Jahren

Hallo,

vielen Dank für die vielen Antworten. Mich würde noch interessiere wie Ihr zum Beispiel verschiedene TextBox Events einordnen. Erstellt ihr eine Region für die besagte TextBox oder erstellt ihr eine Region die das Event beschreibt, also zum Beispiel #region TB KeyDown...

Wie ordnet Ihr selbst geschriebene Methoden ein?

Grüße

C
282 Beiträge seit 2008
vor 10 Jahren

Ich nutze die Regionen konsequent. Dann weiß ich genau, wo ich was finde. Events bekommen eine seperate Region. Ich trenne zwischen privaten, öffentlichen und vererbten Methoden (override) und separiere die entsprechend.

849 Beiträge seit 2006
vor 10 Jahren

Hmm,

also, wenn ich an Regions denke, ist das für mich meist ein Zeichen dafür das Klassen einfach zu groß geworden sind. Deshalb teile ich sie dann, und verwende Regions eigentlich nur dann wenn es tatsächlich nicht anders geht.

S
417 Beiträge seit 2008
vor 10 Jahren

Ich seh das auch so wie unconnected. Regions nur wenns wirklich nicht anders geht.

S
269 Beiträge seit 2010
vor 10 Jahren

Ich halte das ähnlich wie Abt und gfoidl:

  • Event Declerations
  • Private Fields
  • Properties
  • Constructors
  • Public Methods
  • Private Methods

Je nachdem, wie groß die Klasse wird (was eigentlich eher selten vorkommt, weil ich mir sonst denke ich hab den Code nicht sauber genug getrennt) kann es vorkommen, dass ich die Fields, Properties, Public Methods und Private Methods intern nochmals in Static und Instance unterteile

so far
Karill Endusa

26 Beiträge seit 2011
vor 10 Jahren

auch ich schließe mich meinen vorredner an und unterteile in events, fields, properties, construc., methods etc.

allerdigns nur wenn die klasse entsprechend groß wird, macht es einfacher sich darin zurecht zu finden

=> man kann es aber auch schnell mit regions übertreiben, bereits gesehen habe ich regions in regions die in regions organisiert waren ... da war es kein überblick sondern eher geordnetes chaos

"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." - Klaus Kornwachs

C
258 Beiträge seit 2011
vor 10 Jahren

Das Region so verbreitet sind wusste ich nicht, ich war immer der Meinung wenn der Code zu unübersichtlich ist (gerade wenn man regions in Methoden verwendet) sollte man etwas anderes dagegen machen.

Das ich meine Methoden und Interfaces etc. nicht in Regions gruppiere liegt daran das ich viel mit "Collapse to Definitions" arbeite und somit meiner Meinung nach mehr Überblick habe als mit Regions.
Meiner Meinung nach ist es nicht sinnvoll die Member meiner Klasse nach deren Typ zu gruppieren nur weil alles Events sind haben sie noch lange nichts miteinander zu tun.

Deswegen habe ich (mit folgendem Regex: ^.#(end)(:Wh)region.\n) alle Regions aus meinem Code verbannt 😃

5.941 Beiträge seit 2005
vor 10 Jahren

Hallo zusammen

Früher habe ich Region benutzt, heute überhaupt nicht mehr.
Begründet habe ich mir das früher das ich grosse Klassen hatte und es folgendend Unterteilungen nötig hatte.

Der Fehler ist m.E. nicht, das man Region benutzt, sondern das die Klassen zu gross sind und man deshalb Region benutzt.

Ein gutes Beispiel ist folgende Klasse:

Während ich an einer Klasse arbeite, nutze ich manchmal auch Collapse / Expand für die Methoden, wie Console32.

@Abt und die anderen Verfechter
Was bringt es euch, Region als Unterteilung zu benutzen? Übersichtlichkeit lasse ich nicht durchgehen, denn ich nehme an, eure Klassen sind meistens nicht über 200 Zeilen gross?
Und mit einem Scrollen des Mausrads, oder einem Page-Down, ist man dann auch schon fast da, wo man sein will.

Ich sehe einfach keinen Grund mehr - ausser das die Klassen zu gross wären - Region zu benutzen.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

F
10.010 Beiträge seit 2004
vor 10 Jahren

Immer diese Glaubenskriege

S
269 Beiträge seit 2010
vor 10 Jahren

Hallo Peter Bucher (hah, ein Namensvetter im Nachnamen, cool)...

Es gibt nicht viele Klassen, welche bei mir eine Größe jenseits der 200-300 Zeilen erreichen...
konkret könnte es, wenn ich mir meine bisherigen Projekte mal so in Erinnerung hole, nur eine Klassen-Art sein, welche weitaus größer werden könnte: WinForms Controls ... ja, ich entwickel für mein Leben gern eigene Controls 😃 und die werden mitunter nun mal ab und an ein klein wenig größer, besonders wenn ich an all die Events, Properties und die interne Logik denke

so far
Karill Endusa (aka. Martin Bucher 😉)

6.911 Beiträge seit 2009
vor 10 Jahren

Hallo Peter,

ich hab nur äußerst wenige Klassen die zu groß sind (wie auch immer das definiert sein mag 😉), aber regions verwende ich (nur) wegen der Übersichtlichkeit.

Wenn ich an einem bestimmten Bereich einer Klasse arbeite und ein anderer Bereich im Moment unwichtig ist, so blende ich den aus damit er nicht stört. Z.B. sind mir beim Arbeiten an den Methoden die Konstruktoren egal, daher kann ich diese einfach ausblenden - auch wenn die Klasse nicht größer als ein Bildschirmfenster ist, finde ich das nett um nicht den Blick auf das Wesentliche zu verlieren.

Aber FZelle hat schon recht...Wichtiger ist doch was als Code herauskommt, als ob man regions verwendet od. nicht.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

16.806 Beiträge seit 2008
vor 10 Jahren

@Peter: dank den Regions und Code Map Extension komm ich genau zu dem Punkt hin, wo ich hin will. Links in die Spalte schauen, anklicken, fertig. Deutlich produktiver als im Dropdown die Klasse auszuwählen und dann die Code-Stelle zu suchen.

Ich hab' teilweise Methoden, die länger als 200 Zeilen sind - und zwar deutlich; es lohnt sich einfach nicht alles auszulagern.
Da muss man eben abwägen, ob's unübersichtlich wird, weil die Klasse so groß ist oder weil die Projekte tausende Dateien haben.

Aber FZelle hat recht, dass dies ein Glaubenskrieg ist; bei mir ist's einfach praktikabel und ich hab mich dran gewöhnt.

5.941 Beiträge seit 2005
vor 10 Jahren

Hallo zusammen

Danke für eure Antworten, das erweitert doch den manchmal arg kleinen und festgefahrenen Glaubenshorizont 😃.

Es gibt in so gut wie allen Fällen keine einzige Ansicht, die passt, sondern Teile aus verschiedenen Ansichten, die zu einer passenden werden.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

N
nicky Themenstarter:in
232 Beiträge seit 2011
vor 10 Jahren

Hallo,

ich freue mich das diesem Thema soviel Interesse geschenkt wird. Es ging mir zwar hauptsächlich um die Aufteilung der #regions doch es ist auch spannend zu sehen wie sehr die Meinungen über den Nutzen auseinander gehen. Ich selbst benutzte #regions weil es für mich einfach strukturierter wirkt. Unabhängig von der Größe der Klasse.

Natürlich kommt es primär auf das Ergebnis des Code's an, allerdings hat das auch nichts mit meiner Frage zu tun. 8)

Cheers

N
nicky Themenstarter:in
232 Beiträge seit 2011
vor 10 Jahren

Hallo,

ich habe mal nachgezählt. In einem aktuellen Projekt hat meine größte Klasse rund 800 Zeilen. Das liegt zum Einen daran diese Klasse sehr viele Controls beinhaltet (strukturiert durch mehrere TabControls).

Wenn ich jetzt hier lese das eure Klassen meistens nicht mehr als 200 Zeilen haben.. hmm naja irgendwie komisch.. 😃

F
10.010 Beiträge seit 2004
vor 10 Jahren

@nicky:
Wenn man jede einzelne Tabpage wieder als Usercontrol ausführt, dann noch MVP ( PassivView ) macht und dann den Controller bindet, kommt man selten auf viel code.

Ausserdem kann man so die Logik auch viel besser testen.

Hinweis von herbivore vor 10 Jahren

Wie man Klassen so klein bekommt, dass man keine #regions braucht, ist ein anderes Thema, jedenfalls nicht Thema dieses Threads. Wenn echter Bedarf besteht, kann dazu ein eigenes Thema erstellt werden. In diesem Thread hier geht es nur darum, ob bzw. in welchen Situationen Regions (nicht) benutzt werden, nicht wie man diese Situationen, in denen man Regions (nicht) braucht, herbeiführt.

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo zusammen,

#regions verwende ich noch nicht allzu lange.
Den wirklichen Nutzen erkennt man vermutlich nur wenn man es mit größeren Classes zu tun hat die ansonsten schwerer zu überblicken sind.

Viele grüße,
telfa