- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
func (svc *UserSvc) isEmptyName(name model.User_Name) bool {
if name.First.RU == "" {
if name.First.EN == "" {
if name.First.TR == "" {
if name.First.IT == "" {
if name.Last.RU == "" {
if name.Last.EN == "" {
if name.Last.TR == "" {
if name.Last.IT == "" {
return true
}
}
}
}
}
}
}
}
return false
}
HIV 01.06.2020 13:34 # 0
anon007 01.06.2020 13:48 # 0
phpBidlokoder2 01.06.2020 13:58 # +1
anon007 01.06.2020 21:31 # 0
MAKAKA 01.06.2020 20:20 # +1
Автор нескалярные структуры данных еще не проходил?
Fike 01.06.2020 21:19 # +3
anon007 01.06.2020 21:29 # 0
guest8 01.06.2020 21:42 # −999
anon007 01.06.2020 21:44 # +1
guest8 02.06.2020 02:31 # −999
anon007 02.06.2020 07:57 # 0
Да и кто на JS пишет названия методов в стиле snake_case?
666_N33D135 02.06.2020 17:32 # +2
guest8 02.06.2020 02:38 # −999
guest8 02.06.2020 02:53 # −999
guest8 02.06.2020 03:32 # −999
anon007 02.06.2020 08:00 # 0
gost 02.06.2020 08:49 # +2
- enum languages {RU, EN, IT};
- #define LAST_LANG IT
+enum languages {RU, EN, IT, LAST_LANG};
guest8 02.06.2020 11:43 # −999
bormand 02.06.2020 12:22 # +2
guest8 02.06.2020 12:26 # −999
bormand 02.06.2020 12:28 # +3
И там и там LAST_LANG == 3. Но обычно все пишут по гостовски.
> #define LAST_LANG IT + 1
#define LAST_LANG ((IT) + 1)
Когда уже заповеди макроёбства выучишь?
guest8 02.06.2020 12:31 # −999
bormand 02.06.2020 12:36 # +1
Но в общем случае ты не знаешь, в каком контексте будет юзаться этот LAST_LANG. Может быть я захочу массив завести для переводчика и напишу LAST_LANG * LAST_LANG?
Поэтому expression-like макросы всегда, сука, ВСЕГДА, надо писать со скобками как вокруг каждого аргумента, так и вокруг всего выражения.
guest8 02.06.2020 12:41 # −999
bormand 02.06.2020 12:46 # +1
Это наименьшее зло. Все так пишут, т.к. остальные варианты ещё хуже. В твоём варианте, к примеру, надо не забывать обновлять LAST_LANG когда новый язык добавляется.
> шуточный
С макросами не шутят. Риск залёта очень высокий. Уже на банальном LAST_LANG * LAST_LANG всё ломается.
guest8 02.06.2020 12:47 # −999
bormand 02.06.2020 12:48 # 0
guest8 02.06.2020 12:53 # −999
666_N33D135 02.06.2020 17:28 # 0
MAKAKA 02.06.2020 17:34 # 0
bormand 02.06.2020 12:40 # +2
1) Не пиши макросы
2) Если ты всё-таки решил запилить макрос, называй его капсом
3) Если ты используешь аргумент макроса, заключи его в скобки
4) Если ты пишешь expression-like макрос, оберни его в скобки
5) Если ты пишешь statement-like макрос, оберни его в do { ... } while (0)
666_N33D135 02.06.2020 17:27 # +2
#undef FALSE
#undef int
#undef main
#undef void
#undef return
...
guest8 02.06.2020 17:29 # −999
MAKAKA 02.06.2020 17:34 # 0
Fike 02.06.2020 17:47 # +1
Noodles 03.06.2020 02:42 # 0
Так что ещё одно правило: надо точно помнить, во что раскрывается макрос, и стараться не передавать туда выражения с побочкой (еще как пример можно вспомнить макрос MAX). раскрылось в какое-то говно по аналологии с i = i++ + i++, но чуть посложнее и с массивами.
gost 02.06.2020 12:58 # 0
guest8 02.06.2020 13:11 # −999
666_N33D135 02.06.2020 17:30 # 0
MAKAKA 02.06.2020 17:35 # +2
anon007 02.06.2020 19:00 # 0
Или brainfuck на худой конец....
bormand 02.06.2020 19:03 # 0
KOPOHABuPYC 02.06.2020 21:57 # 0
guest8 02.06.2020 03:52 # −999
anon007 02.06.2020 07:57 # 0
666_N33D135 02.06.2020 17:25 # +1
MAKAKA 02.06.2020 16:56 # 0
anon007 03.06.2020 07:42 # 0
KOPOHABuPYC 03.06.2020 21:20 # 0
Fike 01.06.2020 22:14 # +1
по рубёвому надо `empty?`. сам долгое время ловил ворнинги от рубимайна.
guest8 02.06.2020 02:26 # −999
Fike 02.06.2020 05:13 # +1
guest8 02.06.2020 05:23 # −999
Fike 01.06.2020 22:14 # +1