codezeilenlänge(konvention/empfehlung) und monospace schriftarten?



  • Also ich muss auch zugeben, dass ich meine Zeilen eigentlich auch unter 80 Zeichen breite halte, aber es schon einmal 120 werden können, wenn ich mal etwas mehr verschaltle.

    Nur mal als Beispiel:

    VOID MainWindow::UpdateSearchView()
    {
        LPWSTR lpWs = new WCHAR[pTb1->GetTextLength() + 1];
        pTb1->GetText(pTb1->GetTextLength() + 1, lpWs);
    
        if(wcslen(lpWs))
        {
            if(!SearchFiles.size())
    			InitializeSearchView(pFolRoot);
    		BOOL bAdded = FALSE;
    		for each(File* pFil in SearchFiles)
    		{
    			WCHAR Path[MAX_PATH] = {0};
    			if(wcsstr(pFil->Name, lpWs))
    			{
    				if(!pFil->FileItem->HasItem)
    					AddSearchItem(pFil->FileItem), pFil->FileItem->HasItem = TRUE, bAdded = TRUE;
    			}
    			else if(pFil->ParentFolder->GetFullPath(Path), wcsstr(Path, lpWs))
    			{
    				if(!pFil->FileItem->HasItem)
    					AddSearchItem(pFil->FileItem), pFil->FileItem->HasItem = TRUE, bAdded = TRUE; 
    			}
    			else
    			{
    				BOOL bAdd = FALSE;
    				for each(LPWSTR lpWs2 in pFil->FileItem->Tags)
    					if(wcsstr(lpWs2, lpWs))
    					{
    						if(!pFil->FileItem->HasItem)
    							AddSearchItem(pFil->FileItem),
    							pFil->FileItem->HasItem = TRUE, bAdd = TRUE, bAdded = TRUE;
                                // Hier sind es schon bei tab=4Z 28 leerzeichen
    						break;
    					}
    				if(!bAdd && pFil->FileItem->HasItem)
    				{
    					RemoveSearchItem(pFil->FileItem);
    					pFil->FileItem->HasItem = FALSE;
    				}
    			}
    		}
    		if(bAdded)
    		{
    			ListView_SortItems(pLv1->GetHwnd(), SortItems, (LPARAM)this);
    		}
    	}
    	else
    		ClearSearchView();
    
    	delete lpWs;
    }
    


  • Ein doofer doppelpost(die lage von vorschau und absenden ist wirklich sehr unschön)
    Als schriftart: Courier New, 10 mit clear-type



  • hat das irgendeinen grund dass du den komma-operator so oft an stellen einsetzt wo es keinen sinn macht?



  • Dennis123, wenn das C++ sein soll, was für grässliche Macros braucht man dann damit das "for each(bla in blubb)" funktioniert??? 😮

    Und das mit dem Komma Operator und mehreren Instructions pro Zeile, also wenn ich mit dem Code arbeiten müsste würde ich Anfälle bekommen. Viele lange sehr ungesunde Anfälle.



  • hustbaer schrieb:

    Dennis123, wenn das C++ sein soll, was für grässliche Macros braucht man dann damit das "for each(bla in blubb)" funktioniert??? 😮

    Qt

    Das oben ist aber mehr C code als C++.

    man beachte zB das Single Entry - Single Exit 😉

    btw, es muss delete[] heissen...



  • Ich packe immer alles auf eine zeile, und probleme beim lesen hatte ich bisher noch nicht.
    ich finde es eher unleserlich wenn ein oder mehere brueche drinne sehen - das auge trennt das denn irgendwie, obwohl die funktion zusammen gehoert.

    Ich hatte es aber bisher auch nur sehr selten das die zeichen ueber die breite hinaus ragen #gg
    bei mir in der firma ist das so das alle grosse monitore haben, und bei jeden ~160 zeichen seitlich hin passen, und fuer debugger, output, doku und weiss der geier gibt es den zweit monitor - und zudem finde ich es persoenlich besser fenster nicht nebeneinander sondern uebereinander anzuordnen



  • Das mit dem starken drall in richtung C ist mir auch schon aufgefallen.
    Das mit delete[] ist mir eigentlich schon klar, aber bei einem WCHAR kommt es ja nicht wirklich auf einen destructor an...(ist zwar immernoch nicht korrekt, aber die implementation ist ja ziemlich gleich)
    Ohne den kommaoperator müsste ich halt einen Block anfangen und soetwas will ich eigentlich vermeiden(außer unten bei bAdded, ich weiß nicht warum).



  • Und das for each ist auch kein macro sondern ist bei VC8.0 standardmäßig dabei um über STL-container zu iterieren



  • Dennis123 schrieb:

    Das mit delete[] ist mir eigentlich schon klar, aber bei einem WCHAR kommt es ja nicht wirklich auf einen destructor an...(ist zwar immernoch nicht korrekt, aber die implementation ist ja ziemlich gleich)

    Daß bei falscher Kombination von new[] und delete "nur" die Destruktor-Aufrufe unterschlagen werden, ist wohl ein weit verbreitetes Gerücht. Fakt ist: Was passiert, wenn du new[] und delete mischst, gehört in den Bereich undefined behaviour - und das kann auf deinem nächsten Rechner auch einen Totalabsturz bedeuten.



  • Also mein hauptproblem mit dem new ist eigentlich, dass ich es als malloc ersatz missbrauche, obwohl ich noch nie in C programmiert habe.



  • Dennis123 schrieb:

    Und das for each ist auch kein macro sondern ist bei VC8.0 standardmäßig dabei um über STL-container zu iterieren

    Ist aber kein ISO-C++ sondern C++/CLI und man muß dafür extra die CLR einschalten:
    http://msdn2.microsoft.com/de-de/library/ms177202.aspx
    Das man es auch für die STL benutzen kann, ist nur ein netter Nebeneffekt, für jemanden der eh C++/CLI einsetzt.



  • Also von der Clr hab ich dann noch nichts gemerkt 😃
    Nein im ernst das kann man auch für natives c++ einsetzen(natürlich nicht standardkonform)
    In den Beispielen sieht man dann auch, dass es ohne .NET geht, aber der Text von deinem link ist schon recht verwirrend...[*]
    http://msdn2.microsoft.com/de-de/library/ms177203.aspx



  • Ah, ok.
    Naja, ich werd's so schnell nicht verwenden, von daher egal.
    Hätte mich nur interessiert wie das mit Macros gehen soll (kann mir eben nicht vorstellen wie), aber wenn es eben keine Macros sind, dann bin ich mal beruhigt 🙂


Anmelden zum Antworten