Ich habe gerade eine if-Anweisung mit ziemlich langen Eigenschaftsnamen geschrieben und bin auf dieses Problem gestoßen.
Nehmen wir an, wir haben eine if-Anweisung wie diese:
if(_someViewModelNameThatIsLong.AnotherPropertyINeedToCheck == someValue &&
!_someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant)
{
//Do something
}
Die zweite Eigenschaft ist ein Boolescher Typ und es macht keinen Sinn, dass das stetement so ist
if(boleanValue == true)
Gibt es eine bessere Möglichkeit, die Verneinung zu betonen, als das in den Vordergrund zu stellen !
? Mir scheint, dass dies beim Lesen des Codes leicht übersehen werden kann und potenziell Probleme beim Debuggen verursachen kann
readability
Ivan Crojach Karačić
quelle
quelle
_someViewModelNameThatIsLong
if( ! something)
vsif(!something)
... && model.Prop == false)
? Ich persönlich benutze!
es sehr selten , es ist zu leicht zu übersehen.Antworten:
Und dann im Ansichtsmodellobjekt
(unter der Annahme, dass someValue eine Zeichenfolge ist und dem Modellobjekt nicht bekannt ist)
Dies unterstreicht nicht nur die! Operator, aber es macht es allgemein besser lesbar. Jetzt kann ich in der aufrufenden Methode eine Bedingung sehen, die gut benannt sein sollte, um die Bedingung im Kontext des aufrufenden Objekts zu beschreiben. Und im Modellobjekt kann ich sehen, was das im Kontext des Modellobjekts bedeutet.
quelle
someValue
dassNeedsMeToDoSomething
abhängig von Ihrer Situation möglicherweise ein Parameter für die Methode sein muss.Setzen Sie es in einen eigenen if-Block, bevor Sie die weniger wichtigen Bedingungen auswerten. Es ist nicht nur einfacher zu lesen, ohne die anderen Bedingungen zu verfälschen, sondern es ist auch die erste Bedingung, die ein Programmierer lesen wird. Kombinieren Sie dies mit der Idee, die bereits von @scrwtp erwähnt wurde, um eine Variable mit einem aussagekräftigen Namen zuzuweisen, und Sie erhalten:
Wenn Sie in einer Compilersprache programmieren, werden diese verschachtelten Blöcke meistens trotzdem am Ende kombiniert, sofern Sie keinen Code zwischen dem äußeren und dem inneren if einfügen, sodass die Leistung in diesen nicht beeinträchtigt wird Fälle.
quelle
Wenn Sie C / C ++ verwenden, bietet der Präprozessor möglicherweise Lesbarkeit.
quelle
Ich würde nur extrahieren
In einer Methode, die dies zurückgibt. Wenn Sie diese Methode NotThisIsABooleanPropertyThatIsImportant nennen, sollten Sie in Ordnung sein.
quelle