У нас есть множество стилей кодирования или спецификаций кодирования. Но этот пункт мы часто можем забыть, то есть мы часто используем в параметрах функции bool-параметры, что сильно снижает читабельность кода. Не верите? Давайте сначала посмотрим на код ниже.
Когда вы читаете следующий код, что, по вашему мнению, означает этот код?
виджет->repaint(false); Хотите перерисовать? Или это означает что-то другое?
Прочитав документ, мы узнали, что этот параметр является немедленным, то есть false означает, что не перерисовываться сразу, а true означает, что код будет перерисовываться немедленно.
В Windows API также есть такая функция: InvalidateRect. Что, по вашему мнению, означает следующий код?
InvalidateRect(hwnd, lpRect, false); Давайте не будем говорить о том, насколько плохо имя функции InvalidateRect, давайте сначала поговорим о параметре false. «Недействителен» означает «недействителен XXX», что означает «ложь»? Двойной минус? Означает ли это утвердительно?
Если вы увидите такой код, это будет довольно запутанно. Итак, вам придется посмотреть документацию или определение функции InvalidateRect. Вы увидите, что параметр имеет значение BOOL bErase, что означает: «Хотите ли вы перерисовать фон».
Таких вещей много. Глядя на следующий код, я хочу заменить «%USER%» в строке реальным именем пользователя:
str.replace("%USER%", user, false); // Qt 3TNND, что означает false? Не заменяя его? Или это означает что-то другое?
Прочитав документацию, я узнал, что false означает: «замена без учета регистра».
На самом деле, если вы используете переменные/константы перечисления вместо переменных типа bool, вы сделаете свой код более читабельным, например: