Ich machte Kollegen klar, dass ein tiefgreifender Kontrollfluss die Lesbarkeit von Code beeinträchtigt.
Beispiel aus der entsprechenden Stapelüberlauffrage /software/52685/if-you-need-more-than-3-levels-of-indentation-youre-screwed :
for(int i=0; i<10; ++i){
Object val = repeat(i, someVar);
if(val.value > 3){
switch(val.item){
case DOG:
if(mProcess){
outputToUser(val);
doMoreThings(val, mMoreThingDoer);
if(mRepurpose){
addExample(val);
}
// and so on, and so on...
Wie bei den meisten Dingen ist es trivial einfach, Meinungen zu diesem Thema zu finden.
Ich frage mich jedoch, ob jemand mehr dazu beitragen kann.
Wurde zum Beispiel eine aktuelle Studie durchgeführt, die für das Problem relevant ist?
Oder können andere Argumente vorgebracht werden, die über "Ich mag X besser" hinausgehen?
coding-style
user50849
quelle
quelle
Antworten:
Schnelles Googeln zeigt, dass einige Untersuchungen durchgeführt wurden. Dieses Papier zeigt zum Beispiel, dass es einen Wert für die zyklomatische Komplexität von Code gibt, der die Fehlerrate minimiert:
Wahrscheinlich ist eine tiefe Verschachtelung in Ordnung, solange sie nicht an jedem Punkt verzweigt. Das heißt, viele verschachtelte Bedingungen oben zu haben, wie in Ihrem Beispiel, ist wahrscheinlich in Ordnung, da es sich im Wesentlichen um eine Bedingung handelt, die nur nicht als Konjunktion geschrieben wurde.
OTOH Wenn Ihre unten stehende switch-Anweisung groß ist und nicht triviale Verzweigungen aufweist, gilt möglicherweise die Klausel "Sie sind geschraubt".
quelle