- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
if c = 'y' then
begin
Writeln('Yes');
end else
if c = 'n' then
begin
Writeln('No');
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
if c = 'y' then
begin
Writeln('Yes');
end else
if c = 'n' then
begin
Writeln('No');
end;
Вот это кака... http://delphisources.ru/forum/showthread.php?t=19000
TarasB 23.11.2011 14:24 # +2
guestGovno 23.11.2011 14:42 # −1
TarasB 23.11.2011 14:51 # 0
HEMECTHblu_nemyx 20.08.2019 02:12 # 0
guest8 20.08.2019 02:14 # −999
bormand 20.08.2019 08:16 # 0
guest8 20.08.2019 08:54 # −999
bormand 20.08.2019 11:03 # 0
new_user 23.11.2011 14:52 # 0
if, конечно, в данном случае прокатит, но что будет, когда проверок >=3, больше 10?
roman-kashitsyn 23.11.2011 15:16 # 0
oh, shi
new_user 23.11.2011 15:32 # +1
Для большей доходчивости: проверок >=3, или даже >10?
Если совсем по-русски: а если проверок будет больше трёх или даже больше десяти, так и будем if'ы лепить?
roman-kashitsyn 23.11.2011 15:42 # +2
new_user 23.11.2011 15:44 # +1
guestGovno 23.11.2011 16:35 # 0
Или тогда не выводить результат нужно, а возвращать. Вдруг надо будет куда-нибудь его передать, сложить с другой строкой, отрендерить красиво?
new_user 23.11.2011 18:17 # 0
Нормальные герои всегда идут в обход?
"Вдруг надо будет куда-нибудь его передать, сложить с другой строкой, отрендерить красиво?"
А чем вам begin-end/return внутри case не угодили?
guestGovno 23.11.2011 18:47 # 0
Представлен код, по нему видно, чего хотел добиться автор. Есть иные варианты?
> А чем вам begin-end/return внутри case не угодили?
Вот и я про то же. Сначала добавить кейс на случай "мало ли чего", потом выделим пиксельный кусок в отдельную функцию по той же причине. А автор даже и не думал, что ему это может понадобиться.
Оверинжиниринг, вот что.
При двух вариантах большой разницы между ифом и кейсом нет. При 100 вариантах и кейс будет не в тему, давайте сразу на такой случай рассчитывать?
new_user 23.11.2011 19:03 # 0
Хорошая привычка для программиста думать о том, что этот код придётся менять и поддерживать, но это понимаешь только побившись головой об стенку. If-else естественен для простых операций типа да/нет, а тут ещё возможны другие варианты: a-z. Это явно больше, чем да/нет.
"При 100 вариантах и кейс будет не в тему"
Как это не в тему?
roman-kashitsyn 23.11.2011 19:07 # 0
new_user 23.11.2011 19:12 # 0
А ведь есть ещё cancel, help="Я ничего не понял" и "Да пошли вы все нафиг".
roman-kashitsyn 23.11.2011 19:13 # +1
selffix
Govnocoder#0xFF 23.11.2011 19:08 # 0
?
Сомневаюсь.
new_user 23.11.2011 19:16 # 0
Govnocoder#0xFF 23.11.2011 18:55 # 0
Ну тогда баз второго if`а можно обойтись.
roman-kashitsyn 23.11.2011 16:19 # 0
greno 23.11.2011 16:43 # 0
-- just for fun
expand :: Char -> Maybe String
expand = flip lookup [('y',"Yes"), ('n',"No")]
3.14159265 23.11.2011 16:48 # +4
А нужны они, чтобы решать такие вот задачи.
greno 23.11.2011 16:53 # 0
Pandoc, Gitit, парсеры, математика (если есть биндинги)... Есть даже утилита типа socat (только базовый функционал) для 0MQ.
roman-kashitsyn 23.11.2011 17:11 # 0
greno 23.11.2011 17:21 # 0
К тому же, его все равно нельзя назвать уникальным, есть же git/hg (и много проектов на github). Ограничения компиляторов на архитектуру (не под все есть) - тоже не в плюс портабельности.
roman-kashitsyn 23.11.2011 17:00 # +1
Назвать, к примеру, Erlang не промышленным язык не поворачивается...
roman-kashitsyn 23.11.2011 19:19 # +2
3.14159265 23.11.2011 19:24 # 0
это переписывание данных из одного места в другое, с другого в третье итд
(с формы в переменные js, c переменных js переписать в xml, передать постом на страницу, из страницы передать в интерфес, из интерфейса данные xml переписать в сущность, из сущности скопировать в базу, из базы обратно переписать в сущность, потом скопировать в другую сущность, далее переписать из этой сущности в json итд),
В итоге выдача их (с необходимыми проверками доступа и валидности).
roman-kashitsyn 23.11.2011 19:29 # +2
Люди, не изучайте ФЯП - от них баттхёрт
3.14159265 23.11.2011 19:30 # 0
Именно!
Причем ООП зачастую еще усложняет и добавляет ненужные промежуточные стадии.
А чем больше в проекте абстракций, тем проще вводить новые, ненужные паттерны, которые снова просто копируют данные - всякие там декораторы, фасады итд..
roman-kashitsyn 24.11.2011 09:20 # +1
Вот об этом всё ФП. Оно как бэ говорит нам "Да вы ебанулись все с этими объектами и новыми абстракциями". Тут главная идея: пиши простые маленькие независимые (желательно, чистые) функции, а язык позволит тебе комбинировать их бесчисленным количеством способов.
Взять, к примеру, шаблонизаторы для html. В Java желательно использовать jsp, а чтобы комбинировать view нужно прикручивать Tiles/переходить на jsf с facelets.
В Lisp тебе достаточно написать десяток макросов (страница кода) для удобных генерации и вывода тегов в поток, и вуаля, у тебя есть язык шаблонов. Который на самом деле - обычный Lisp, со всеми вытекающими.
View - это функция, принимающая на вход таблицу параметров (и, быть может, поток). Хочешь композитный view - напиши простую функцию, принимающую на вход помимо таблицы параметров ещё и таблицу функций, отрисовывающих отдельные области.
В результате - никаких лишних абстракций, обошлись функциями + микро DSL для отрисовки html-тегов.
TarasB 23.11.2011 20:39 # 0
roman-kashitsyn 23.11.2011 23:08 # 0
lucidfoxGovno 23.11.2011 23:52 # 0
Почему не стоит?
lucidfoxGovno 24.11.2011 13:08 # 0
roman-kashitsyn 24.11.2011 13:20 # 0
3.14159265 24.11.2011 13:46 # 0
Не всегда. Если вынести работу с рефлексией в библиотечный класс с удобными обертками.
>рефлективные вызовы методов гораздо медленнее обычных
Груви медленей жавы в 100 раз (вполне возможно и из-за рефлексии), скала в 5 раз.
Короче спорное утверждение.
Злоупотреблять однозначно не следует.
roman-kashitsyn 24.11.2011 13:56 # 0
invokedynamic нас всех спасёт, если не успеет утянуть на дно бремя обратной совместимости.
> скала в 5 раз
"спорное утверждение"
http://shootout.alioth.debian.org/u32/scala.php
Памяти обычно больше требует, это да.
3.14159265 24.11.2011 14:18 # 0
Насколько я знаю тулзы для работы с бинами больше используют не рефлексию, а интроспекцию - она быстрее (возможно потому что где-то в недрах явы хитро кешируется).
roman-kashitsyn 24.11.2011 14:52 # 0
Однако в конечном счёте всё равно придётся делать тормозной Method.invoke().
lucidfoxGovno 23.11.2011 20:45 # −2
+100500
Писал на няшной сишечки и батхерта не ведовал. Но только стоило... Ну ты понел.
lucidfoxGovno 23.11.2011 20:52 # −2
TarasGovno 23.11.2011 22:40 # −2
HEMECTHblu_nemyx 20.08.2019 08:26 # 0
Именно поэтому я за «PHP».
guest8 20.08.2019 13:51 # −999
HEMECTHblu_nemyx 20.08.2019 13:55 # 0
guest8 20.08.2019 14:02 # −999
HEMECTHblu_nemyx 20.08.2019 14:09 # 0
guest8 20.08.2019 14:10 # −999
lucidfoxGovno 23.11.2011 20:42 # −1
Меня тоже от них тошнит. Достала эта императивщена.
Govnocoder#0xFF 23.11.2011 20:47 # 0
lucidfoxGovno 23.11.2011 20:49 # −2
roman-kashitsyn 23.11.2011 16:58 # 0
greno 23.11.2011 17:05 # 0
Govnocoder#0xFF 23.11.2011 18:56 # +2
roman-kashitsyn 23.11.2011 18:59 # +1
3.14159265 23.11.2011 19:12 # 0
lucidfoxGovno 24.11.2011 13:07 # +1
Плюсую пост.
lucidfoxGovno 23.11.2011 18:56 # −2
Фууу. Турнирный оператор.
roman-kashitsyn 23.11.2011 18:59 # 0
lucidfoxGovno 23.11.2011 19:01 # −3
Nikitiy_II 23.11.2011 14:44 # 0
bugmenot 23.11.2011 15:23 # 0
TarasB 23.11.2011 15:29 # +6
Nikitiy_II 23.11.2011 15:59 # −1
guest8 20.08.2019 02:04 # −999
guestGovno 23.11.2011 17:54 # +1