?

Log in

No account? Create an account
программистское (из пустого в порожнее) - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программистское (из пустого в порожнее) [мар. 29, 2008|05:26 am]
Anatoly Vorobey
Будет интересно только программистам, знакомым с C++.

Кроме обычных вещей, которых мне не хватает, когда я пишу на C++ (ну, типа, защитного шлема, чтоб биться головой об стенку было не так больно) мне очень не хватает метода std::string, который был бы точной противоположностью empty(). Потому что писать в двухтысячный раз if (!сепулька.empty()) подзадолбало, если честно. Ведь дело не в том, что этот ! - лишний знак на экране, а в том, что это пусть крохотный, но каждый раз дополнительный логический прыжок в голове.

Любопытно: я, конечно, понимаю, что можно написать if(сепулька.size()) и это будет правильно работать, но что-то мне не позволяет так писать - видимо, ощущение того, что это слишком C-шная идиома. Ну а написать if(сепулька.size() > 0) - это уже выйдет лекарство хуже болезни.

Нет, хочется именно метода, возвращающего bool и в точности обратного empty(). Но вот незадача - размышляя об этом, я осознал, что не понимаю даже, как он должен называться. Не назвать же его, в самом деле, full(). Понятно, что nonempty() - это опять-таки схоластика. А что тогда? Кажется, тут не только в стандарте C++, тут в языке налицо определенная дырка.
СсылкаОтветить

Comments:
Страница 1 из 3
<<[1] [2] [3] >>
[User Picture]From: xirax
2008-03-29 02:35 am
occupied()
taken()
:D
(Ответить) (Thread)
[User Picture]From: moon_aka_sun
2008-03-29 02:41 am
.ok()
.good()
.kosher()
(Ответить) (Thread)
[User Picture]From: avva
2008-03-29 02:45 am
Ну это просто какая-то дискриминация пустых строк получается.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: wat
2008-03-29 02:49 am
Лучше fullofit
(Ответить) (Thread)
[User Picture]From: johnnywoo
2008-03-29 03:01 am
filled()
(Ответить) (Thread)
[User Picture]From: akuklev
2008-03-29 03:01 am
Эта проблема красиво решается Перловым оператором unless(str.empty()). Особые извращенцы даже вводят его «в язык» подходящим #define'ом.
(Ответить) (Thread)
[User Picture]From: moon_aka_sun
2008-03-29 04:09 am
Unless, по-моему, это вообще ужас. Не знаю, как у тех, кто впитал это с молоком матери, а мне всегда приходится переводить это в уме в "если не" и проводить дальнейшие преобразования.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: samlazy
2008-03-29 03:13 am
1)
sepulka.here()

2)
sepulka.ThereIs()
(Ответить) (Thread)
[User Picture]From: max630
2008-03-29 03:18 am
я обычно пишу x == "", x != ""
(Ответить) (Thread)
[User Picture]From: a_bronx
2008-03-29 03:48 am
some()
(Ответить) (Thread)
[User Picture]From: a_bronx
2008-03-29 04:01 am
или defined()

Я, кстати, всегда стараюсь выносить все эти предикаты в глобальные функции, потому как обилие строковых типов и способов их проверки задалбывает. Проще всегда и везде писать if (empty(str)) { ... } не заботясь о реальном типе строки.
(Ответить) (Parent) (Thread)
[User Picture]From: cema
2008-03-29 04:13 am
А пусть как в лиспе, сепулька в булевом контексте означает истину, если она не пустая (так, увы, нельзя: нету булевого контекста). Т.е. было бы if (сепулька).
(Ответить) (Thread)
[User Picture]From: a_konst
2008-03-29 05:40 am
и в перле, и в руби, вроде бы :)
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: kisalex
2008-03-29 04:14 am
nonempty() всё-таки будет лучше всего.
Ну или abissel(). Ой!
(Ответить) (Thread)
[User Picture]From: cema
2008-03-29 05:52 am

You mean

Oy()

Of course, in C# it becomes Oy().ToString()
(Ответить) (Parent) (Thread) (Развернуть)
From: (Anonymous)
2008-03-29 04:28 am
existed()
(Ответить) (Thread)
[User Picture]From: roza
2008-03-29 04:38 am
Использовать empty() а не size() это хорошая привычка, не надо её менять.
На стандартные стринги обычно делают обёрточку (чтоб менше об стенку, да), и вот там-то имплементируют IsEmpty(), IsNotEmpty() и кого ещё хотят. Написал такое один раз, и уже гораздо реже хочется повесится :)
(Ответить) (Thread)
[User Picture]From: cema
2008-03-29 05:50 am

I have more

IsAlmostEmpty(), HasAFew(), HasALot(), NotTooFull(), AboutRightSize()

Anything else?
(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
From: qaraabayna
2008-03-29 08:01 pm
идиосинкратично
(Ответить) (Parent) (Thread)
[User Picture]From: gaus
2008-03-29 05:12 am
Очевидного не предложили.

сепулька.foo()
cепулька.bar()
(Ответить) (Thread)
[User Picture]From: cema
2008-03-29 05:53 am

Тогда уж

сепулька.bir()
сепулька.yok()
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: a_konst
2008-03-29 05:40 am
Cast to bool?
(Ответить) (Thread)
Страница 1 из 3
<<[1] [2] [3] >>