You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Перенос предложения: голоса +7, -23 Aвтор идеи:Клеванец Игорь
Текущий стандарт описывает для каждого из контейнеров метод empty(). Его достаточно для полноценной работы.
Operator bool() - это избыточный интерфейс для контейнеров, который ответит на вопрос "Есть ли в контейнере хотя бы один элемент?". Это позволит писать код чище. Предложение написано по мотивам книги "Чистый код: Создание, анализ и рефакторинг" Роберта Мартина.
std::vector<int> banned_users;
//...// Сейчас можно только такif (!banned_users.empty()) {
//...
}
// Хочется так:if (banned_users) {
//...
}
и ведь понятней)
остается только ждать запила в стандарт x.f() <-> f(x)
ya.imdex, 21 февраля 2017, 16:52
if (banned_users.non_empty()) { ... }
Будет еще понятнее
burannah, 24 февраля 2017, 18:25
Разве std::size() не достаточно ?
dix75, 4 марта 2017, 16:38
burannah, не достаточно, эта операция может быть дорогостоящая (например), operator bool() был с константным временем для всех.
Хотя я против идеи.
burannah, 27 марта 2017, 14:14
dix75, ну хотелось бы заметить, что со времён С++11 size() имеет константную сложность для строк и всех контейнеров (у кого он есть). Используешь forward_list - будь готов вызывать empty().
В, 3 марта 2017, 11:59
Не понимаю минусующих.
А особенно тех, кто говорит: "А что, XYZ недостаточно?"
Если вас послушать, для всего достаточно C и void*. Остальное для слабаков.
Сергей Иванов, 21 апреля 2017, 17:13
Представим себе следующий рефактор: заменяем std::vector на std::shared_ptr<std::vector>. Ну, захотелось нам этот вектор куда-то передать по ссылке, бывает. Дальше автоматически заменяем 'banned_users.' на 'banned_users->'. Проверяем - компилируется. Пошли дальше разрабывать. А баг потом тестеры найдут. Может быть.
Перенос предложения: голоса +7, -23
Aвтор идеи: Клеванец Игорь
Текущий стандарт описывает для каждого из контейнеров метод empty(). Его достаточно для полноценной работы.
Operator bool() - это избыточный интерфейс для контейнеров, который ответит на вопрос "Есть ли в контейнере хотя бы один элемент?". Это позволит писать код чище. Предложение написано по мотивам книги "Чистый код: Создание, анализ и рефакторинг" Роберта Мартина.
Предложение к стандарту: https://cerevra.github.io/bool/
The text was updated successfully, but these errors were encountered: