программистское (из пустого в порожнее)
Mar. 29th, 2008 05:26 amБудет интересно только программистам, знакомым с C++.
Кроме обычных вещей, которых мне не хватает, когда я пишу на C++ (ну, типа, защитного шлема, чтоб биться головой об стенку было не так больно) мне очень не хватает метода std::string, который был бы точной противоположностью empty(). Потому что писать в двухтысячный раз if (!сепулька.empty()) подзадолбало, если честно. Ведь дело не в том, что этот ! - лишний знак на экране, а в том, что это пусть крохотный, но каждый раз дополнительный логический прыжок в голове.
Любопытно: я, конечно, понимаю, что можно написать if(сепулька.size()) и это будет правильно работать, но что-то мне не позволяет так писать - видимо, ощущение того, что это слишком C-шная идиома. Ну а написать if(сепулька.size() > 0) - это уже выйдет лекарство хуже болезни.
Нет, хочется именно метода, возвращающего bool и в точности обратного empty(). Но вот незадача - размышляя об этом, я осознал, что не понимаю даже, как он должен называться. Не назвать же его, в самом деле, full(). Понятно, что nonempty() - это опять-таки схоластика. А что тогда? Кажется, тут не только в стандарте C++, тут в языке налицо определенная дырка.
Кроме обычных вещей, которых мне не хватает, когда я пишу на C++ (ну, типа, защитного шлема, чтоб биться головой об стенку было не так больно) мне очень не хватает метода std::string, который был бы точной противоположностью empty(). Потому что писать в двухтысячный раз if (!сепулька.empty()) подзадолбало, если честно. Ведь дело не в том, что этот ! - лишний знак на экране, а в том, что это пусть крохотный, но каждый раз дополнительный логический прыжок в голове.
Любопытно: я, конечно, понимаю, что можно написать if(сепулька.size()) и это будет правильно работать, но что-то мне не позволяет так писать - видимо, ощущение того, что это слишком C-шная идиома. Ну а написать if(сепулька.size() > 0) - это уже выйдет лекарство хуже болезни.
Нет, хочется именно метода, возвращающего bool и в точности обратного empty(). Но вот незадача - размышляя об этом, я осознал, что не понимаю даже, как он должен называться. Не назвать же его, в самом деле, full(). Понятно, что nonempty() - это опять-таки схоластика. А что тогда? Кажется, тут не только в стандарте C++, тут в языке налицо определенная дырка.
no subject
Date: 2008-03-29 02:35 am (UTC)taken()
:D
no subject
Date: 2008-03-29 02:41 am (UTC).good()
.kosher()
no subject
Date: 2008-03-29 02:45 am (UTC)no subject
Date: 2008-03-29 02:49 am (UTC)no subject
Date: 2008-03-29 03:01 am (UTC)no subject
Date: 2008-03-29 03:01 am (UTC)no subject
Date: 2008-03-29 03:13 am (UTC)sepulka.here()
2)
sepulka.ThereIs()
no subject
Date: 2008-03-29 03:18 am (UTC)no subject
Date: 2008-03-29 03:48 am (UTC)no subject
Date: 2008-03-29 04:01 am (UTC)Я, кстати, всегда стараюсь выносить все эти предикаты в глобальные функции, потому как обилие строковых типов и способов их проверки задалбывает. Проще всегда и везде писать if (empty(str)) { ... } не заботясь о реальном типе строки.
no subject
Date: 2008-03-29 04:04 am (UTC)no subject
Date: 2008-03-29 04:05 am (UTC)Привычка просто, что хороший годный для дальнейшей работы объект - не нуль. Для строк это часто тоже так.
Можно ещё .solid()
no subject
Date: 2008-03-29 04:09 am (UTC)no subject
Date: 2008-03-29 04:13 am (UTC)no subject
Date: 2008-03-29 04:14 am (UTC)Ну или abissel(). Ой!
no subject
Date: 2008-03-29 04:28 am (UTC)no subject
Date: 2008-03-29 04:38 am (UTC)На стандартные стринги обычно делают обёрточку (чтоб менше об стенку, да), и вот там-то имплементируют IsEmpty(), IsNotEmpty() и кого ещё хотят. Написал такое один раз, и уже гораздо реже хочется повесится :)
no subject
Date: 2008-03-29 05:12 am (UTC)сепулька.foo()
cепулька.bar()
no subject
Date: 2008-03-29 05:40 am (UTC)no subject
Date: 2008-03-29 05:40 am (UTC)no subject
Date: 2008-03-29 05:48 am (UTC)I have more
Date: 2008-03-29 05:50 am (UTC)Anything else?
You mean
Date: 2008-03-29 05:52 am (UTC)Of course, in C# it becomes Oy().ToString()
Тогда уж
Date: 2008-03-29 05:53 am (UTC)сепулька.yok()
no subject
Date: 2008-03-29 06:54 am (UTC)