Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Benutzt ihr #region und wenn ja habt ihr ein bestimmtes Schema?
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 241

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2138

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5989
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 241

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Cannon
myCSharp.de - Member



Dabei seit:
Beiträge: 282

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Sarc
myCSharp.de - Member



Dabei seit:
Beiträge: 426

beantworten | zitieren | melden

Ich seh das auch so wie unconnected. Regions nur wenns wirklich nicht anders geht.
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 288
Herkunft: Hessen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
pilipu
myCSharp.de - Member

Avatar #avatar-3253.jpg


Dabei seit:
Beiträge: 26
Herkunft: Karlsruhe

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 266

beantworten | zitieren | melden

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 :)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Console32 am .
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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:
- Kommentare (und Regions) zur optischen Gliederung (z.B. Trennlininen) einsetzen: Best Practice?

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

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10084

beantworten | zitieren | melden

Immer diese Glaubenskriege
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 288
Herkunft: Hessen

beantworten | zitieren | melden

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 ;))
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

@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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 241

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 241

Themenstarter:

beantworten | zitieren | melden

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.. :)
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10084

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (24.06.2013 - 18:57:36):

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.

telfa
myCSharp.de - Member



Dabei seit:
Beiträge: 162
Herkunft: Rheinbach

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers