codezeilenlänge(konvention/empfehlung) und monospace schriftarten?
-
Eine Anweisung pro Zeile. Egal wie lang.
-
frenki schrieb:
Eine Anweisung pro Zeile. Egal wie lang.
lesbarkeit adee?
-
Shade Of Mine schrieb:
frenki schrieb:
Eine Anweisung pro Zeile. Egal wie lang.
lesbarkeit adee?
Nö. Kommt nur alle Jubeljahre mal vor, dass ich irgendwelche kranken Müll-API's mit tausenden Parametern verwenden muss, was so ziemlich der einzige Fall ist, wo ich mal über den rechten Rand meiner IDE komme.
Diese Dreck-API's sind sowieso schon Unlesbar, weil bei 20 Parametern niemand mehr durchblickt, welcher Parameter denn nu was ist. Also was solls...
-
ich brech zeilen nur um, wenn die lesbarkeit stark beeinträchtigt wird. bei 80 zeichen wird noch nichtmal die hälfte des bildschirms verbraucht, was soll der blödsinn? ^^
beispiel:
// erstklassig in einer zeile lesbar, auch wenns bisschen länger ist SpecialClassWithLongName localInstance = SpecialClassWithLongNameFactory.createInstance( 2, 3, "SomeCharParam" ); // wäre kürzer als das erste beispiel, aber durch die ganzen funktionen unübersichtlich in einer zeile ShortClass count = helper.get( someFoo.getFunc( val, 12), conv(3), encodeUU("SomeCharParam") );und als schrift: bitstream vera sans mono
-
thordk schrieb:
bei 80 zeichen wird noch nichtmal die hälfte des bildschirms verbraucht, was soll der blödsinn? ^^
auf Deiner Kinoleinwand vielleicht... Ich finds immer sehr nervig wenn ich vor Fremdcode sitze und seitwärts scrollen muss.
Wie kommt man überhaupt auf 120 Zeichen? Kann ich mir nur durch zu extreme Verschachtelung erklären.
-
ich kriege drei 80 zeichen consolen nebeneinander auf meinen bildschirm, eine zum programmieren, eine zum compilieren/debuggen, eine für dokumentation. => nach 80 zeichen wird umgebrochen.
-
DrGreenthumb schrieb:
Wie kommt man überhaupt auf 120 Zeichen? Kann ich mir nur durch zu extreme Verschachtelung erklären.
Indem man ausdrucksstarke Bezeichner verwendet?
Ich habe z.T. Bezeichner die alleine schon 40 oder 50 Zeichen lang sind - 2-3 davon in einem Aufruf und du hast die 120 Zeichen schnell beinander.
-
DrGreenthumb schrieb:
auf Deiner Kinoleinwand vielleicht... Ich finds immer sehr nervig wenn ich vor Fremdcode sitze und seitwärts scrollen muss.
kauf dir nen anständigen bildschirm
die olle 80 zeichen pro zeile regel ist schlicht antiquarisch und hat keine daseinsberechtigung mehr.
-
DrGreenthumb schrieb:
Wie kommt man überhaupt auf 120 Zeichen? Kann ich mir nur durch zu extreme Verschachtelung erklären.
(2 namespaceeinrückungen+1 klasseneinrückung+1 private/public einrückung+1 methodeneinrückung+1 If)*4er tab=24 Zeichen weg, bevor die zeile überhaupt beginnt. und mit den restlichen 56 Zeichen kommt kein Schwein aus.
Ohja, komplexe formatierte templates verschlingen auch noch den ein oder anderen tab...Ich arbeite immer so, dass ich zwar seitwärts scrollen muss, um die ganzen tabs vor einer methode weg zu haben, aber ab dann muss sie problemlos auf den Bildschirm passen.
-
hustbaer schrieb:
Ich habe z.T. Bezeichner die alleine schon 40 oder 50 Zeichen lang sind
m_pCStrtCWhatASuperNameForMyClassButBlaBla??
-
DrGreenthumb schrieb:
Wie kommt man überhaupt auf 120 Zeichen? Kann ich mir nur durch zu extreme Verschachtelung erklären.
boost::asio::ip::tcp::resolver::iterator it = resolver.resolve( boost::asio::ip::tcp::query( host, service ) );Auf der zweiten Ebene (Namespace - Methode) sind das 111 Zeichen + zwei Tabs (x 8 Zeichen bei mir). Und innerhalb eines Headers kann man noch nichtmal usen oder aliasen, ohne das den Klienten zu vererben.
-
Also 80 Zeichen finde ich heute auch nicht mehr zeitgemäß. Ich habe 100 Zeichen eingestellt, erreiche diese aber seltener.
Wenn ich Fremdcode anschaue, der breiter als mein Bildschirm ist, stell ich halt Zeilenumbruch ein. Wo ist das Problem?
-
LordJaxmon! Yo, kann man aber auch schöner machen:
boost::asio::ip::tcp::resolver::iterator it = resolver.resolve( boost::asio::ip::tcp::query( host, service ) );Oder auch so:
using namespace boost::asio::ip::tcp; resolver::iterator it = resolver.resolve( query( host, service ) );In einem Scope kein Problem und sauber.
-
Ja, in diesem Fall ist das Importieren tatsächlich kein Problem. Aber bei einer einzeiligen Inline-Funktion schreibe ich dann doch lieber eine lange Zeile als zwei kurze, wobei die erstere nur einen Namen importiert.
Blödes Beispiel (analog zu oben, weil mir kein besseres einfällt)
// eher return m_resolver.resolve( boost::asio::ip::tcp::query( host, service ) ); // als using boost::asio::ip::tcp; return m_resolver.resolve( tcp::query( host, service ) );Da sträubt sich in mir irgendwas, das "tcp" gleich doppelt zu schreiben nur damit die Zeilenlänge schrumpft.
Ist wie gesagt ein blödes Beispiel, aber im Grunde sind wir uns ja auch fast einig, was die Zeilenlänge angeht. Zu schmal ist unzeitgemäß, zu breit (selbst wenn es auf einen Bildschirm passt) ist unleserlich.
-
können wir jetzt doch noch ein Cobolforum hier gründen ?
ich persönlich verwende 80 zeichen und Monospaceschriftarten, da ich viel auf dem Grossrechner zu tun habe und sonst vieles schlecht lesbar wird.
für c++ etc. verwende ich natürlich andere grenzen, da es einfach ein anderer einsatzzweck ist.
-
otze schrieb:
(2 namespaceeinrückungen+1 klasseneinrückung+1 private/public einrückung+1 methodeneinrückung+1 If)
namespaces und private/public rücke ich gar nicht extra ein.
hustbaer schrieb:
Ich habe z.T. Bezeichner die alleine schon 40 oder 50 Zeichen lang sind
da würde mich ja mal ein Beispiel für so einen Bezeichner interessieren!
Gerade bei C++ gehts doch eigentlich recht kompakt, wie Artchi gerade an LordJaxoms Code gezeigt hat.
Eine 120-Zeichen-Zeile nimmt bei mir die ganze Breite des Monitors ein. Da würde nicht mal mehr eine Klassenansicht an den Rand passen. Ihr habt echt zu große Bildschirme.
-
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; // Hier sind es schon bei tab=4Z } 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; 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; }
-
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?