- 1
- 2
- 3
- 4
- 5
if ((act_type == 15) || (act_type == 24)) {
} else {
if (duration != null)
dts.setDuration(dts.getDuration().add(duration));
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+78
if ((act_type == 15) || (act_type == 24)) {
} else {
if (duration != null)
dts.setDuration(dts.getDuration().add(duration));
}
Вся пунктуация сохранена и НИЧЕГО НЕ ВЫРЕЗАНО
Волшебный if
Пруф [[ скрыт ]]
строка 112 - 116
с годами все чаще случается, что так и хочется сказать "блять, откуда это в моей голове?"
а ведь еще можно выстрелить контрольными квайном-маккласки и карно
да негде их зздесь применять
КО, не сдержался, увидев говно:
Хотя дизъюнкцию и конъюнкцию запомнил очень хорошо еще в школе, как и абсциссу с ординатой.
Ирод, я до сих пор путаю!
В английском все проще - numerator и denominator
:7
В общем, я в книге "зри в корень" это, кажись, как-то читал и там нашли решение.
Север - с другой стороны
(или описываем юг север через любой другой материк)
встаем так, чтобы смотреть на север, юг у нас за спиной
право там, с какой стороны встанет солнце
Ну или любым другим способом, связанным с вращением планеты (завихрение воздушных потоков, омывание одного из берегов реки...)
PS. А можно сцылочку. Тема-то шибко срачная.
Так это ж древний вопрос.
Кстати давно в книжке какой-то читал, что у Билли Гейтса спейциальное цифровое зеркало в ванной, которое ничего не переворачивает.
Потому он до таких срачей не опускается.
Я бы положил на пол.
replace('альфач', 'Гумно')
Был Т-образный перекрёсток на даче, и когда едешь в город, но в одну сторону - это в город, а в другую - просто переулок с тупиком.
И мы с бабушкой там шли, и какая-то женщина спросила, в какую сторону идти в город, у она ей ответила "направо".
И с тех пор я больше не путаю право и лево.
Я всегда вспоминаю тот перекрёсток, когда надо вспомнить, где право, где лево.
Same shit. Я вообще до 6-го класса путал, лол.
Потом просто заставил себя запомнить.
Тогда слушайте мою. Сначала я ориентировался по пятну, которое было на правой, а на левой, соответственно, нет. Потом - что я этой рукой ем. Сейчас можно ориентироваться по часам, но я уже знаю, где какая сторона.
Делал так же. Только у меня ориентиром был шрам, на другой руке. Еще твердо помнил что слева едут машины.
Но на это нужно пару секунд - посмотреть на руку или задуматься.
Направо - это вдоль бортика, а налево - это надо как-то влезть в дырку во встречном потоке.
интуитивно понятно из названий ведь
кон - аргументы должны быть в согласии (con-, консонанс, консенсус)
диз - разногласие (dis-, диссонанс, дизбаланс)
А дизъюнкция это когда ты падаешь со стула и ломаешь себе руку.
А xor - это когда на стуле сидит кто-то другой?
> дизбаланс / баланс
После этих слов, первое, что пришло в голову это балансировать на ножке стула.
Как упал, пришло озарение.
А вот, что из них конъюнкция, а что дизъюнкция - я уже забыл )
По-моему, конъюнкция - это И (приставка диз- ассоциипуется с разделением, отрицанием, и чем-то в этом духе)
Я-то отличаю, но термины идиотские и окончательно запомнить удалось только за четыре года универа.
Сука, мудаки, И, ИЛИ для них это было слишком просто.
Сука, мудаки, АССЕМБЛЕР, СИ для них это было слишком просто.
Так это более-менее логичные термины.
Хоть и парадигма не очень.
ВЫ ЧТО НЕ СЛУШАЛИ?
Наследование, полиморфизм, инкапсуляция!
Да. Чтобы математика была доступна не каждому.
Ось x, ось y, ось z любой дурак запомнит - назовем их абсциссой, ординатой и аппликатой.
И и ИЛИ понятны любому дураку, назовем их дизъюнкцией и конъюнкцией.
Сфера - футбольный мяч
Эллипсоид - мяч для регби (ну почти)
Гиперсфера - мяч для гиперфутбола
Прямоугольный параллелепипед - пустая комната
Параллелепипед - кривая пустая комната
Правильный тетраэдр - пирамида
Тетраэдр - кривая пирамида
Додекаэдр - лютый пиздец
А икосаэдр тогда что?
1. Натуральные числа (1, 2, ..) - чтобы посчитать пальцы.
2. Ноль (0) - чтобы посчитать сколько у Вас друзей.
3. Неотрицательные числа (0, 1, 2, ..) - чтобы считать одновременно и Ваших друзей и Ваши пальцы, не вспоминая о том, что ноль - не натуральное число.
4. Отрицательные числа (.., -2, -1) - чтобы считать Вашу зарплату.
5. Целые числа (.., -1, 0, 1, ..) - чтобы одновременно считать Вашу зарплату, друзей и пальцы (о да, это нужно очень часто!).
6. Рациональные числа (1/2, 3/5, 12/3, ..) - чтобы посчитать какая доля яблока достанется Вам, если Вы хотите по-ровну разделить его в компании из 10 человек.
7. Трансцендентные числа (pi, e, ..) - специальные числа, для того, чтобы соревноваться кто сколько сколько цифр из них помнит наизусть.
8. Вещественные числа (0.1, 3.5, 12.323, pi, e ..) - чтобы одновременно делить горошину на всю семью и соревноваться в запоминании цифр числа пи.
9. Мнимые числа (i, 2i, 0.1i) - специальные числа, чтобы дураки не понимали, зачем они нужны. (просто притворитесь, что понимаете)
10. Комплексные числа (3 + 2i, pi + ei) - для того, чтобы одновременно делить горошину на всю семью, соревноваться в запоминании цифр числа пи и притворяться, что знаешь зачем нужны мнимые числа.
я продуктивно использовал их на олимпиаде по математике в универе при доказательстве тригонометрических формул. Сводишь синусы с косинусами к комплексным экспонентам, а дальше простая алгебра.
> 9. Мнимые числа ... (просто притворитесь, что понимаете)
Молодец, я чуть не поверил, что ты правда знаешь зачем они.
Для преобразования Лапласа и решения линейных ОДУ, например.
Поздравляю, ты усвоил материал.
В таких-то случаях не надо делать ничего. А иначе как обычно...
А так может зависеть от...
"Если отключат воду, или наступит конец света, или просто будет в лом, то ничего делать не надо. А так - уберись в комнате, пожалуйста."
Короче и понятней ;)
там звучит примерно так:
если это отпуск или отпуск с отработкой то ничего не делаем иначе добавляем отработанное время к отработанному времени(изменяем объект хранящийся в объекте) и устанавливаем объект самому себе.
вот примерно так это звучит, а проблема вскрылась в том что помимо отпусков есть ещё больничные и там время не надо учитывать)
да и естественная формулировка звучит куда лучше:
вот это тоже отдельный огонь)))
Но ведь инкапсуляция, понимаешь, и паттерны!
Всё гораздо банальнее: в жабе нельзя перегружать операторы, а Duration, видимо, BigInteger или BigDecimal
Сравни:
((act_type != 15) || (act_type != 24))
Берем 15 - (false || true) => true
Берем 24 - (true || false) => true
Любое число отличное от 15 и 24 - (true || true) => true
Теперь понятно?
Наверное, можно так
And if my program isn't done I eat parantheses for lunch...
They might look funny but they have semantic power...
That gives your programs lots of brevity and punch.
ПС. Если, duration увеличивается в одном месте - нет смысла выносить метод.
ППС. Схлопывать два if'а в один я бы не стал, т. к. слишком мало данных для принятия такого решения.
2. пустая секция: иногда бывают такие выражения в if, что проще оставить пустую секцию, чем переписывать на отрицание (т. к. выражение вида !(a && b || c && !d) просто взрывает мозг). Сам иногда практикую пустые секции, правда всегда с комментарием:
3. Про второй блок if писали выше - арифметика с BigDecimal. Почему не схлопнуть? Объясню на примере. Допустим есть код:
может показаться, что его можно легко схлопнуть в
и это частенько приводит в ловушку. Пример: потребовалось добавить немного логики
при схлопнутом if код с вероятностью 95% будет добавлен не в ту else ветвь:
if (a && b && c) {
...
} else {
...
foo();
}
А эти два варианта очень даже не тождественны.
Мораль: схлопывать if стоит только в том случае, когда на 100% понимаешь, как именно происходит ветвление.
Если выражение осмысленное - вынеси в отдельную функцию.
Например в таком примере:
Выдели условие в функцию и перепиши так:
И это далеко не самый показательный пример.
я вообще в таких случаях делаю булевые переменные с осмысленными именами
b1 = a && b
b2 = c && d
if (b1 || b2) {}
Только вот если выращение довольно общее и осмысленное, оно может еще где-нибудь пригодиться.
Вообще нужно взять за правило и любое самостоятельное выражение сложнее чем x+y-z выносить в функцию.
Тогда весь код будет состоять из настолько маленьких функций, что одного взгляда на них будет достаточно, чтобы понять, правильно она написана или нет.
А вообще: "Сначала напиши, чтобы работало. Потом сделай красиво. Потом сделай быстро."
... но понять, что же код делает в целом, будет, увы, нереально.
пример:
Разворачивается спокойно, только вместо else внешнего блока будет elseif. И это гораздо лучше, нежели три степени глубины, да ещё и всё действие в ветви else.
воспринимается легче?
Если у автора все настолько печально, что он не сможет вынести if(c) обратно, когда это понадобится, и, вместо этого, захуячит код в первое попавшееся else, то ему и такие приемы не помогут.
Развернутый if служит своего рода меткой - "здесь все не так просто". И такая ситуация встречается редко (один раз из ста, может даже реже). И это признак того, что надо отнестись к этому месту не просто внимательно, а очень внимательно. Таким кодом вы просто помогаете себе в будущем.