VC6 IDE: Code formatieren



  • Hi all.

    Jeder hat so sein eigener (Code)Formatierungsstil. Gibt es eine Möglichkeit, die eingestellte Codeformatierung zu ändern?

    im Wesentlich meine ich das:

    IST zustand (Klammern)

    void foo()
     {
     }
    

    SOLL Zustand (Klammern)

    void foo(){
     }
    

    Habe schon überall unter 'optionen' und 'anpassen' gesucht, aber nix brauchbares gefunden.



  • Wann wird diese formatierung forciert?

    weder beim Eingeben noch mit Alt-F8.



  • peterchen schrieb:

    Wann wird diese formatierung forciert?

    weder beim Eingeben noch mit Alt-F8.

    verstehe ich jetzt nocht ganz.

    aber die überall dort, wo generierter Code zu finden ist, ists so wie ich es nicht will.



  • Ah ok, für den Autogenerierten Code.

    Nein, kann man nicht.
    Gibt aber tools - z.B. GreatCode! - die man bis zum umfallen konfigurieren kann.



  • peterchen schrieb:

    Ah ok, für den Autogenerierten Code.

    Nein, kann man nicht.
    Gibt aber tools - z.B. GreatCode! - die man bis zum umfallen konfigurieren kann.

    Danke für den Tipp!



  • @sky21
    Wieso willst du denn den Ist-Zustand ändern? Der sieht doch imo schöner aus. 🙂 Hat aber auch Vorteile bzgl. der Übersichtlichkeit, zB bei einem ctor mit Initialisierungsliste.



  • groovemaster schrieb:

    @sky21
    Wieso willst du denn den Ist-Zustand ändern? Der sieht doch imo schöner aus. 🙂 Hat aber auch Vorteile bzgl. der Übersichtlichkeit, zB bei einem ctor mit Initialisierungsliste.

    Darüber lässt sich streiten. Auch ich bevorzuge die Soll-Variante, groovemaster(und andere) scheints nicht.
    Die Leute vom Microsft DX-SDK machen etwas ganz seltsames: Bei Klammern immer ein Leerzeichen, z.B.

    void f( int param1, char param2 ) {}
    
    void main(){
      f( param1, param2 );
    }
    

    Denen gefällts anscheinend auch besser so...

    Ich möchte allerdings jetzt keine Diskussion, "was besser aussieht" auslösen, denn:

    password schrieb:

    Darüber lässt sich streiten.

    pw



  • Ich möchte allerdings jetzt keine Diskussion, "was besser aussieht" auslösen, denn:
    password schrieb:
    Darüber lässt sich streiten.

    Gut, aber wir können doch deine Variante hier nicht einfach als letzte stehen lassen 🙄



  • Ich habe damals, als ich von Turbo C auf Visual C++ umgestiegen bin auch die erste Zeit regelmäßig Wutanfälle wegen der blöden Formatierund bekommen.

    Ich hatte immer:

    void main ()
      {
      return;
      }
    

    Also eingezogene Klammern und 2 Leerzeichen.

    und VC macht ja:

    void main ()
    {
         return;
    }
    

    Naja, nach einiger Zeit hatte ich mich daran gewöhnt, noch später habe ich dann die Einstellung gefunden, aber da hatte ich mich schon zu sehr an das andere gewöhnt und die Kollegen wollten mir den Hals umdrehen und legten mir erstmal die firmeninternen Programmierichtlinien auf den Tisch.

    Seitdem muss ich sagen, ich scheine den Stil der meisten zu teilen.
    Die Leerzeichen in den Klammern mag ich auch nicht, aber sie stören mich weniger als

    if (blabla)
    { tublub(); }
    else
    { tuwasanderes(); }
    

    Spart Platz, ja aber man kann es sehr schlecht lesen.

    Ich mache geschweifte Klammern IMMER in eine neue Zeile. Wird zwar alles länger, aber ich steige durch. Auch mit Leerzeilen sollte man nicht sparen.
    In einer Klasse mit an die 100 inline Funktionen lernt man, warum.

    Ich wurde vor zwei Versionen gesetzt. Meine damalige ohne Leerzeilen und meine heutige mit Leerzeilen. 😃



  • Ich halte meinen Programmcode immer so kurz und übersichtlich wie ich kann. Beispiele:

    Wenn es wirklich nur was ganz kleines ist und auf eine Zeile passt ohne horizontal scrollen zu müssen schreibe ich es immer so:

    if(abfrage) RufeFunktionAuf(); else RufeAndereFunktionAuf();
    

    Das selbe mit Minifunktionen (kommt extrem selten vor, aber wenn):

    void Funktionsname() { HierNurDerAufruf(); }
    

    Und da ich Perfektionist bin kann ich Lücken wo keine sein müssen nicht ertragen und ändere das dann sofort 😃

    void Funktionsname( int par1, string par2 ) { Funktion( int par, int par2 ); } //<---- Tödlich
    

    Dann noch was extremeres: Ich hasse es wenn ähnliche Funktionen nicht schön untereinander den Zeichen entsprechend formatiert sind. Kleine Beispielfunktion (ist C#, war zu faul ein MFC-Projekt zu öffnen da ich gerade an diesem arbeite):

    public override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
    {
    	drawDash	     = false;
    	leftMouseState   = MouseState.Unpressed;
    	onMouseMoveTimes = 0;
    
    	if(e.Button == MouseButtons.Left)
    	{
    		int		 i	   = 0,
    					nearest = 0;
    		double	  xDif	= 0,
    				    yDif	= 0,
    					x	   = ctrl.UpperLeft.X + e.X * ctrl.MapScale, y = ctrl.UpperLeft.Y - e.Y * ctrl.MapScale;
    		ArrayList   crRects = new ArrayList(),
    					diff	= new ArrayList();
    		RectangleF  mRect   = new RectangleF((float)x - rWidth, (float)y - rWidth, rWidth, rWidth),
    					rRect   = new RectangleF();
    		PointF	  ptCur   = new PointF();
    
    		SynchronizeRouteCoordsDash(ctrl.MapScale, ctrl.UpperLeft);
    
    		//Get all Points which are in the clicked Region
    		for(i = 0; i < RouteLayer.routeCoords.Count; i++)
    		{
    			ptCur = (PointF)RouteLayer.routeCoords[i];
    			rRect = new RectangleF(ptCur.X - rWidth, ptCur.Y - rWidth, rWidth, rWidth);
    
    			if(rRect.IntersectsWith(mRect) == true) { crRects.Add(new RectangleF(ptCur.X, ptCur.Y, i, i)); }
    		}
    
    		if(crRects.Count > 0) //IF THERE WERE FOUND SOME POINTS NEAR TO THE CLICKED POSITION
    		{
    			//Get every Difference between clicked Positions and RouteRects
    			foreach(RectangleF curRect in crRects)
    			{
    				if(curRect.X > x) xDif = curRect.X - x; else xDif = x - curRect.X;
    				if(curRect.Y > y) yDif = curRect.Y - y; else yDif = y - curRect.Y;
    
    				diff.Add((double)xDif + yDif);
    			}
    
    			//Get Point which is nearest to the clicked Position
    			for(i = 0; i < diff.Count; i++) { if((double)diff[i] < (double)diff[nearest]) nearest = i; }
    			RectangleF nearRect = (RectangleF)crRects[nearest];	
    
    			NV6RouteEdit.MainForm.listKoordinaten.Items[(int)nearRect.Width].BeginEdit();
    			NV6RouteEdit.MainForm.listKoordinaten.Focus();
    
    			//Things which have to be available in further MouseEvents
    			ptToEdit	   = (int)nearRect.Width;
    			ptMouseDown	= new Point(e.X, e.Y);
    			leftMouseState = MouseState.Pressed;
    		}
    	}	
    }
    

    So sieht dann meistens mein ganzes Programm aus. Wichtig ist, dass ich mich selber darin gut zurechtfinde, egal wie riesig es ist (mit C# lässt sichs übrigens wunderbar sauber und strukturiert programmieren, meiner Meinung nach besser als mit C++/MFC).



  • if (blabla)
    { tublub(); }
    else
    { tuwasanderes(); }

    gefällt mir auch ned, aber noch besser als so:

    blabla()?tublub():tuwasanderes();
    

    Wenn ich das irgendwo lesen könnte ich ne Krise bekommen 😃



  • password schrieb:

    Die Leute vom Microsft DX-SDK machen etwas ganz seltsames: Bei Klammern immer ein Leerzeichen

    Ich bin zwar ein Freund von Leerzeichen, aber sowas halte ich auch für übertrieben.

    password schrieb:

    Darüber lässt sich streiten.

    Klar, die meisten werden es eh so machen, wie sie es für richtig halten, bzw. wie die Firmenrichtlinien diesbezüglich sind. Ich will nur mal erklären, warum ich sky's Ist-Zustand bevorzuge.

    void foo
    {
    }
    ^
    

    Hier sind Scopeanfang { und Scopeende } auf einer Linie. Das macht zB schnelles Codedurchsehen für mich einfacher. Die bereits angesprochene Initialisierungsliste

    foo() : bla(12), ble(34), bli(56), blo(78), blu(90) {
    //...
    }
    

    wird gerade bei komplexeren Sachen schnell unübersichtlich. Da gefällt mir

    foo()
        : bla(12)
        , ble(34)
        , bli(56)
        , blo(78)
        , blu(90)
    {
    //...
    }
    

    einfach besser.
    Und Pulse's Vorgehensweise mag ich auch nicht sonderlich, also hier mal so und da mal so. Abhängig davon, ob's nur was kleines ist oder nicht. Entweder ich ziehe einen Stil komplett durch oder gar nicht. Aber wie gesagt, das muss jeder für sich selbst entscheiden.


Anmelden zum Antworten