Ответ
В Dart/Flutter для булевых свойств и переменных используются префиксы, которые делают код самодокументируемым. Основные правила:
Рекомендуемые префиксы:
// 1. is - для состояний и характеристик
bool isLoading = true;
bool isVisible = false;
bool isEnabled = true;
bool isDarkMode = false;
// 2. has - для наличия чего-либо
bool hasChildren = true;
bool hasError = false;
bool hasPermission = true;
bool hasInternetConnection = false;
// 3. can - для возможности выполнения действия
bool canEdit = true;
bool canDelete = false;
bool canUpload = true;
// 4. should - для рекомендаций или условий
bool shouldRefresh = true;
bool shouldValidate = false;
bool shouldShowDialog = true;
// 5. show - часто используется в параметрах виджетов
bool showAppBar = true;
bool showDivider = false;
bool showProgressIndicator = true;
Пример в Flutter виджете:
class CustomButton extends StatelessWidget {
final String label;
final bool isPrimary;
final bool isDisabled;
final bool showIcon;
const CustomButton({
required this.label,
this.isPrimary = false,
this.isDisabled = false,
this.showIcon = true,
});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: isDisabled ? null : () {},
style: isPrimary
? ElevatedButton.styleFrom(backgroundColor: Colors.blue)
: null,
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(label),
if (showIcon) Icon(Icons.arrow_forward),
],
),
);
}
}
Что следует избегать:
// Плохо: отрицательные формулировки
bool isNotVisible; // Вместо этого используйте !isVisible
bool hasNoPermission; // Вместо этого используйте !hasPermission
// Плохо: неясные имена
bool flag = true;
bool status = false;
bool value = true;
// Плохо: глаголы без контекста
bool check = true; // Что проверяется?
bool enable = false; // Что включается?
Правило: Имя должно сразу давать понять, что означает true, а что false.