Wir haben viele Codierungsstile oder Codierungsspezifikationen. Dieser Punkt wird jedoch häufig von uns vergessen, das heißt, wir verwenden häufig Bool-Parameter in Funktionsparametern, was die Lesbarkeit des Codes erheblich beeinträchtigt. Glauben Sie es nicht? Schauen wir uns zunächst den folgenden Code an.
Was bedeutet dieser Code Ihrer Meinung nach, wenn Sie den folgenden Code lesen?
widget->repaint(false); Möchten Sie neu streichen? Oder bedeutet es etwas anderes?
Nachdem wir das Dokument gelesen hatten, erfuhren wir, dass dieser Parameter unmittelbar ist, das heißt, false bedeutet, dass nicht sofort neu gezeichnet wird, und true bedeutet, dass der Code sofort neu gezeichnet wird.
Es gibt auch eine solche Funktion in der Windows-API: InvalidateRect Was bedeutet das Ihrer Meinung nach?
InvalidateRect(hwnd, lpRect, false); Reden wir nicht darüber, wie schlecht der Funktionsname von InvalidateRect ist. invalidate bedeutet „ungültig machen XXX“, was bedeutet false? Doppelt negativ? Bedeutet das positiv?
Wenn Sie solchen Code sehen, wird er ziemlich verwirrend sein. Sie müssen sich also die Dokumentation oder die Funktionsdefinition von InvalidateRect ansehen. Sie werden sehen, dass der Parameter BOOL bErase ist, was bedeutet: „Ob Sie den Hintergrund neu zeichnen möchten.“
Es gibt viele solcher Dinge. Wenn ich mir den folgenden Code ansehe, möchte ich „%USER%“ in str durch den echten Benutzernamen ersetzen:
str.replace("%USER%", user, false); // Qt 3TNND, was bedeutet false? Ersetzen Sie es nicht? Oder bedeutet es etwas anderes?
Nachdem ich die Dokumentation gelesen hatte, fand ich heraus, dass false bedeutet: „Ersetzung ohne Berücksichtigung der Groß- und Kleinschreibung“.
Wenn Sie Enum-Variablen/Konstanten anstelle von Bool-Variablen verwenden, machen Sie Ihren Code tatsächlich lesbarer, wie zum Beispiel: