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
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.
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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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!"
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
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
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.
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.
Ich seh das auch so wie unconnected. Regions nur wenns wirklich nicht anders geht.
Ich halte das ähnlich wie Abt und gfoidl:
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
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
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 😃
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
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 😉)
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!"
@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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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
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.. 😃
@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.
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.
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