Ads
Comments 193
+6
Теперь я знаю варианты названий «хорошего» кода написанного знакомыми :)
+2
Чудесно, хоть и не всегда переводимо.

Мои термины:
«расшаблонивание» — инстанциация шаблона C++.
«завиртуалить» — превратить в виртуальный метод.
«аниматорщина» — анимация, пристроенная настолько не к месту, что мешает играть. Обычно долгая анимация там, где реакция должна быть мгновенной.
«недоаниматорщина» — плохая анимация, которая ещё и играть мешает.
«кофеиновая бомба» — то, что проггер пьёт литрами, когда кодит.
+10
Дальше…
«сбросить бомбы» — сдать код на svn в конце дня.
«сточная канава» — трейдеры (почему-то именно они) предъявляют к ПО кучу специфических требований, которые очень муторно программировать. От «stock exchange».

Не моё, но нравится.
«кавалер ордена Флюгера» — начальник, который вечно меняет требования.
+17
Ваши издевательства над русским языком вызывают отвращение. Особенно попытки скрестить его с английским такими способами, какие и в «Камасутре» не встретить…
+10
Ради интереса залез глянуть вашу карму, и поразился. Вот оно, истинно нейтральное мировоззрение (true natural alignment), при почти 2500 голосов, карма около 0.
+17
Зато весьма и весьма приличный рейтинг.
Довольно часто это признак оригинально и независимо мыслящего человека на Хабре, давно заметил.

Нулевая сумма при таком количестве задетых за живое — далеко, очень далеко не нейтральность, зря вы так. Это буйство стихий в гармоничном равновесии :)

Когда Mithgol только появился на Хабре, я сгоряча поставил ему плюс. Потом пожалел, что поставил. Потом пожалел, что пожалел. Потом пожалел, что нельзя ему ставить все имеющиеся у меня плюсы, чтобы его не затоптали. Потом понял, что его есть кому пожалеть. Сейчас начинаю понимать, что он в жалости не нуждается. Начинаю жалеть себя :)

Мы привыкли говорить «сделай морду попроще, и люди к тебе потянутся». Но разве плохо, что кто-то имеет своё лицо среди простых морд? Пусть даже и не слишком привлекательное :)
+2
Обычно таких людей называют маргиналами :)
Я тоже сначала с ним согласился, затем не согласился, в итоге мне пофиг :).
+2
Скорее правильнее называть таких людей девиантами. Маргинал скорее отрицательное обозначение отбросов общества, а Сергей Юрьевич, несмотря на свою эксцентричность и некими кардинальными взглядами, таковым не является.
0
Да про девиантов тоже хорошего мало говорят. Впрочем, что девиант, что маргинал — и то, и другое может иметь как отрицательные, так и положительные последствия. Маргиналы не обязательно на дно опускаются. Если их много, так они вообще до революции могут докатиться. Монархическая революция — это было бы круто. А там и реформа языка, как же без неё :)
0
Интересное понятие, благодарю за наводку, я как-то давно его уже подзабыл… а может и не знал никогда толком :)

Ну что ж, согласен, Mithgol у нас межкультурный феномен. Не сказать, что взял из двух культур лучше, но что взял, то взял :) Сплав-то интересный получился. Судьба только у маргиналов не сахер. Свой среди чужих, чужой среди своих, да и хрен из знает, где тут свои. Зато жить нескучно.

Интересно ещё и то, что одна культура как бы искусственная, расконсервированная из пыльных томов. Практически вымершая, как латынь. Островки ещё наверное остались за рубежом, но вряд ли Mithgol из бывших дворян-островитян.
0
Про типы багов отдельное спасибо. Раньше думал что их 3, оказывается больше.
+11
Между прочим «Yoda Conditions» — таки неплохая вещь. В этом случае можно забыть про ошибки, когда вместо проверки "==" случайно пишешь присваивание "=". И хоть большинство компиляторов ругается на присваивание в качестве условия, все же не лишне подстраховаться
+17
Мне больше нравится её использование в другом кейсе:
По аналогии с математической записью предпочитаю писать:
if (4 &lt variable && variable &lt 8)

Хотя такая вещь на любителя.
+1
Отличный пример фундаментального недостатка инфиксного синтаксиса. Несколько лет назад в рассылке языка D пытались заставить работать запись 4 < variable < 8, но так и не придумали как. А с префиксной всё просто:

(< 4 variable 8)
+1
Недостаток, но всё же не такой фундаментальный. Хотя я бы с радостью писал везде 4 &lt variable &lt 8
0
Посмотрел документацию. У них сравнения реализованы через нерекурсивное правило. Это сработает, но простыми LL/LR парсерами такой синтаксис уже не разобрать без серьёзных костылей. А ещё говорят, в питоне простой синтаксис. :]
UFO landed and left these words here
+3
Функция < определятся как «возвращает true, если аргументы упорядочены строго по возрастанию, flase в других случаях».
+1
Нужно уточнять что Yoda Conditions актуальны только для C/C++.
0
Не совсем так, скорее для языков, в которых в блоке if может быть не только булевское выражение.
Просто такое есть и в не с-подобных языках, и в некоторых с-подобных напротив, такого нет.
0
Тут есть более фундаментальное описание, чем «для языков, в которых в блоке if может быть не только булевское выражение»

Суть в том, что в некоторых языках операция присваивания возвращает какое-то значение (обычно значение самой левой переменной от знака присваивания, а в некоторых не возвращает.

Т.е. в PHP (C, JS etc) например код
print $a="Привет, Мир";
напечатает приветствие, а в Python
print a="Привет, Мир"
ничего не напечатает.
+6
Не только: if ("text".equals(str)) {...} актуально в Java на случай, если str окажется null.
0
Не только. Присваивание в условии можно, например, в перле поставить.
0
В тестах у меня кругом:
assert 8 = some.cryptic['interface'](doing="stuff") in line

Чтобы сразу видеть ожидаемое значение без проглядывания всего кода.
0
python.

там в = ошибка, против которой собственно YC и направлен. Впрочем пофиг, ибо там _eq(8, ....) из nose везде.
0
В том-то и дело, что Yoda Conditions актуальны только для C/C++, но люди зачем-то используют их и в других языках, в частности, в Java.
0
ну, с небольшой модификацией они более чем актуальны в Java:
if(«Tommy».equals(name)){...}
+2
Еще в яве имеет явный смысл использовать обратный порядок для equals — исключает null pointer exceptions.
0
Это в вас говорят рефлексы не запускать exe из интернета.
+5
>Squizzle-giz

Мы это на одной конторе часто называли «Мускул-гусь». ))
+3
«Залипуха» — фикс, который написан для быстрого решения какой-то муторной проблемы и (по идее) должен быть в скором времени заменен на вменяемое решение (чего почти никогда не происходит). «Заглушка», в какой-то мере.
+3
Полностью термин звучит как «Имплементировать интерфейс залипуха»
+2
«ойка» — ойгукн, т.е. jquery. Появилось из-за лени менять раскладку.
Странно, но больше почему-то в голову сейчас не приходит, хотя наверное 3 часа ночи, без кофе мозг уходит в сон
+1
Наколбасить — написать кучу кода, потенциально содержащего множество ошибок, и не протестировать его.
+8
Workaroundability — возможность/невозможность подпереть что-либо ещё одним костылём.
+5
>>Код-пахлава (Baklava code)
лучше называть лазанья код, как родственник спагетти кода.
0
У лазаньи слоёв в самый раз для хорошей архитектуры. Вот у пахлавы — слишком много и они *прозрачные*.
+2
Workaroundability — свойство кода, когда в случае обнаружении в нем ошибки, можно найти простой способ обойти ее, в случае обнаружения ошибки в обходном пути можно обойти и эту ошибку, причем наткнувшись на ошибку в этом обходном пути, ее можно легко обойти…
0
Свойство кода, при котором любая возможная ошибка может быть обойдена — так короче.
+5
«вибрировать» — про манагеров, которые переживают насчет сроков
«подземный стук» — невоспроизводимый баг
«заоопешить» — переписать, согласно ООП-парадигме
«пхпшер» — пренебрежительное название php-программиста
+8
Ошибка, которую вы вы представляете, когда встречаете ошибку, вызванную человеком, представляющим ошибку.

+10
Rubberducking +1…
У меня была собака, которая умела слушать, кивать и издавать звуки в нужных местах. После его смерти я до сих пор не могу полностью «войти в струю» — не могу найти настолько же благодарного слушателя :-(
+4
Reality 101 failure — несовместимость с жизнью.

<Название предметной области> 101 — вводный курс в <предметную область>.
+6
костылезация — кастомизация, сделанная через одно место

но вижу, что гугл уже наслышан об этом слове :(
0
«Пахлава код» еще где-то называли как «лазанья код». Может и в оригинале :)
0
Лазанья лучше имх т.к. обыгрывает другой тип того же самого (VS спагетти).

См. также Ajax VS Comet
UFO landed and left these words here
0
А ещё удобно писать 0 == strncmp(«какие-то очень длинные параметры»).
Удобнее воспринимать, когда 0 и strncmp рядом.
+7
Не пойму кто назвал K&R (так же он известен как «The One True Brace Style») египетскими скобками Х_х
0
Близким термином к «рефукторинг» является «рехакторинг».
+1
Ретракторинг — это когда в очередной раз переезжаешь на зарубежный хостинг.
+9
> Ошибка в приложении, которая существовала так долго, что теперь является частью ожидаемой функциональности.
О да, это явно про WinAPI (:
+2
а чем это плохо? по мне так удобней тем что освобождается строка
0
Я не могу читать такой код. Просто не могу, не получается. Он ужасен. Не могу по другому объяснить. А еще когда скобки на одной вертикали проще издалека увидеть кусок кода %)))
+1
Я тоже пишу египитскими скобками и ничего плохохо в этом не вижу, наоборот больше строк помещается на экране
+3
хм… для меня такой кусок кода:

someName (bla,bla) { // тут иногда вставляю однострочные комментарии
lala;
lulu;
}

выглядит из далека как цельный кусок кода =)
причем цельным именно потому что не просто скобки видны и нужно на строку вверх смотреть чтобы увидеть весь кусок, а в него сразу входит и функция/оператор, т.е. с него и начинается, а закрывающей скобкой собственно завершается.
+1
блин там пробелы вырезались правда… в общем перед lala и lulu есть отступы )
-14
Я еще пишу так:

void someName()
           { bla = 0;
              bla2 = 0;
           }

но только в хедерах при объявлении класса и для инлайн функций, очень удобно и наглядно
+1
На ЛОРе однажды был замечательный топик где человек выбирал на всю жизнь язык исключительно по стилю именования идентификаторов. Поржали. :)
+2
>А еще когда скобки на одной вертикали проще издалека увидеть кусок кода %)))

А зачем смотреть на код издалека? :)

А вообще в человеческих редакторах есть как подстветка парных скобок, так и индикаторы отступов, так что блоки прекрасно видно вне зависимости от того, как поставлены скобки.
0
а я код, написанный иначе, не могу читать. не получается.
+2
в java — это стандарт, а например в c# — нет. лучше пользоваться стандартным форматированием в среде. ведь расположение скобок не дает никаких преимуществ
UFO landed and left these words here
+9
«Феншуй» — неопределенный набор правил, подходов и методов, не задукоменнтированный, но неосознанно принятый большинством команды разработчиков. Традиционно хранитель феншуя — архитектор. Новые члены команды, даже опытные и технически грамотные, по-определению феншуя не знают.

Например, по феншую отступы в процедурах надо делать в 4 пробела, имена переменных начинать с маленькой буквы и т.п. Если новый разработчик начнет добавлять процедуры с отступами табами и переменными с большой буквы — такой код будет работать, но смотреться инородно в общем проекте. Осторожно, от фразы «а у меня свой феншуй» изменяется форма лица.
+3
Часто сталкиваюсь с багзонами хиггса и разговариваю с уткой.
+1
А как назвать полезную фичу, которую находит пользователь и успешно использует ее, но при этом программист ее не залаживал явно?
0
«Залаживал» — это вы что сейчас сказали? В смысле «закладывал» или в смысле «лажа»?
0
Может быть, но все же это не баг, так как не нарушает работу, а наоборот ускоряет
0
Зачем нам ее как-то называть, если мы об этой фиче так и не узнаем? :)
0
Вы дали мысль для ее названия — «Случайная фича», так как о ней узнаем случайно :)
+10
Я бы Refuctoring перевел как ретрахторинг — и по сути и по названию подходит.
+2
Мне больше нравится «рефакинг». Вроде как и слово не сильно меняется и все понимают :)
0
Рефакинг больше смахивает на «перетрахивание», что имеет несколько другой смысл, чем в оригинале.
+2
На старой работе всё ещё популярно выражения:
«подкостылить», «забить костыль», «подпереть костыликом» — срочно решить проблему любым доступным способом.

и это, пожалуй, единственное слово в той компании…
+2
Бесконечный цикл — программа «залупилась».
Повторять выполнение какой-то функциональности (например, проиграть звук) — «залупить».
+6
классовый террор — когда для оперирования одной простой сущностью человек пишет семь разных классов: сам объект, коллекция объектов, загрузчик (можно два — из базы данных, из массiва), модель, валидатор, визуализатор и т.п., когда можно было обойтись одним классом с пятком методов

0
Так же можно назвать использование классов там, где было бы достаточно структуры, т.е. где у «класса» нет поведения. Повсеместно встречается в таких языках как Java и C#. :)
0
В Java так повелось из-за JavaBeans. А теперь уже настолько распространено, что без следования этому стандарту с тебой ни один framework дружить не будет :-)

Кстати, дружить с чем-либо = уметь правильно использовать.
0
В Java структур в принципе нет. А в плюсах емнип разница между классом и структурой только в дефолтной видимости членов. Так что неясно, что плохого в использовании классов в качестве структур.
0
В концептуальности. :) Класс — это *совокупность* данных и методов их обработки.

Ну и тот факт что в плюсах структура внезапно может заиметь vtbl — это исключительно проблемы плюсов и тех, кто на них пишет. В D разделение более логичное.
+11
Интеграционный сервер для разработчиков (обычно называем dev.<основной домен>) — «девочка» ( — выкатил на девочку, доступно на девочке)
«Впохыпах» — код на PHP.
0
Это классика :)

В оригинале статьи встречаются крайне забавные комментарии. Мне, например, нравятся подходы вроде Frank Sinatra Development или Acronym Driven Development.
UFO landed and left these words here
0
Наш лектор в шутку классифицировал «плохие» архитектуры КИС на архитектуры типа «Шанхай», «Спагетти», «Маруся отравилась» :)
UFO landed and left these words here
0
Всё-таки, Drug report, я бы перевел как «Нарко-отчет», ну или что-то в этом духе. Но никак не кислотный)
UFO landed and left these words here
+7
фубля — некий предмет, скажем, фигурка какого-нить чудовища, которая ставится на стол разработчику завалившему тесты.
+1
В Java условия Йоды употребляются повсеместно со строками:
if ( «OK».equals( str ) )…
вместо
if ( str != null && str.equals( «OK» ) )…
Если str == null, NPE не выскочит, а условие обработается корректно.

«Покемонные» эксепшны тоже необходимы, когда при отлове любого эксепшна нужно сначала выполнить общий кусок кода, а затем частные действия.
0
В случае, когда для некоторых видов исключений есть общие действия, а потом rethrow, я предпочитаю использовать boolean-переменную, а блок обработки выносить в finally. Ибо очень не люблю дублирование кода, даже если это один вызов метода и следующий за ним rethrow.
+3
А в ругаемом всеми PHP «Покемонные исключения» гораздо красивее выглядят:
try {
	//Do something
}
catch (Zend_Controller_Request_Exception $e) {
	//Request exceptions
}
catch (Zend_Controller_Action_Exception $e) {
	//Controller exceptions
}
catch (Zend_Db_Exception $e) {
	//Database exceptions
}
catch (Zend_Exception $e) {
	//Zend framework exceptions
}
catch (Exception $e) {
	//All other exceptions
}


Без кучи вложенных условий
+2
в неругаемом всеми питоне примерно так же

try:
    //Do something
except ExceptionType1 as e:
    //process ExceptionType1
except ExceptionType2 as e:
    //process ExceptionType2
.....
Без кучи ненужных скобочек
+1
В используемой всеми Джаве как бы тоже так можно.
+3
По-моему вы не поняли основную фишку «покемонных исключений».
То, что приводите вы — это то, как правильно и как обычно принято писать (вне зависимости от языка). А «покемонные» — это когда «ловим всех подряд, а уж потом разберёмся кто есть кто». Тоже вне зависимости от языка.
UFO landed and left these words here
0
хм… в части except разве можно сначала общий код а потом частные обработчики on do с конечным else? Кажись, таки нельзя…
UFO landed and left these words here
0
Это ж ответы на фразу "«Покемонные» эксепшны тоже необходимы, когда при отлове любого эксепшна нужно сначала выполнить общий кусок кода, а затем частные действия."…
Хотя, я присмотрелся — тут про все языки так же невпопад отвечено…
+3
сепулькарий — документация с рекурсией, которая ничего не объясняет
зоопарк — инструмент, собранный из разных, зачастую противоречивых частей и технологий (например — программа ПРФ — XML + FoxPro)
юра (ударение на последний слог) — невыразимо древний код (или готовая программа), обновить которую невозможно, так как поддержки нет, а переписать — слишком долго (как вариант — никому не нужно)
0
Угу. Геологи любят сокращать периоды до ключевого признака — Мел, Триас, Юра.
+1
> Бикремент (Bicrement)
> Добавление 2 к значению переменной.

А парную обратную операцию как правильно назвать? Дебилкремент или Бидэкремент? (сорри за очепятки :) )
+1
про утку вспомнилось: «была гениальная история про известного старинного художника, который рисовал портреты всякой знати на заказ. и задолбали они его в конец, ибо принять сразу работу им было западло и они придирались, просили вдруг переписать их в другом костюме поверх старого и т.п. И художник придумал фишку — он в углу каждой картины рисовал маленькую зеленую собачку жутко противного вида, когда приходили заказчики, они первым делом замечали собачку и начинали орать „Что это за жуткая зеленая тварь?!“ и художник говорил — »Ок, собачку убираем, все остальное в порядке, да?" Ну и они уже обессиленные и охреневшие от собачки соглашались".
+1
У нас иногда встречаются:
Грабельки — код, которым подтыкают код, чтобы он заработал. Не дай бог о них забыть.
Есть также
Грабельки на грабельки — код, которым подтыкают код, который служит для подтыкания кода. Такое иногда бывает, когда кто-то не заметил первого варианта, побил себе лоб и грабельки поломал.
+2
Костыль опасный для того, кто ним пользуется. А грабельки — для всех.
Хотя — да. Вы правы. Как жопу не обзови — все-равно это жопа=)
0
Граблями, помнится, называют любые ошибки в программе.
Попробуйте поискать «Компьютерное граблеведение» (с).
0
Багзон Хиггса — отличная замена «да не могу я понять что не так, работает через раз, а когда проверяю — работает!»
0
«Строкотипизированный (Stringly Typed)» охохо. В PHP без этого никак))
+3
у нас закрепилось:
throw new Exception('йобаная неведомая хуйня happend');
извините за русский…
+4
> Оформление Doctype (Doctype Decoration)
Лучше перевести как «Декоративный Doctype»
+2
Я в свое время придумал выражение «играть в луноход»: давать пошаговые инструкции пользователю по телефону. (Типа как с Земли посылались команды Луноходу).

0
А, еще выражение «Акын-программирование». Как акын, который что видит, о том и поёт, акын-программист пишет программу подряд, не задумываясь о структуре и дизайне.
0
Не смейтесь над творческими людьми, лучше дайте им Хаскель. ;)

Знакомый хаскель-кодер говорит, что программы на Хаскеле нисколько не страдают от написания подряд. Сам не пробовал.
0
Я в основном применял это выражение к горе-программистам на VB, которые валили в одну кучу всё — UI, бизнес-логику, доступ к данным… Ощущение было именно такое: прочитал в ТЗ «должна быть кнопка...» — поставил кнопку, читаем дальше — "… при нажатии на которую данные извлекаются из базы..." — тут же рядом лезем в базу — "… и обрабатываются." — и пишем тут же обработку.

Поможет ли таким деятелям Хаскелл, право, не знаю :)
0
Сорцы официальнй утилиты Анонимусов читали?

praet0x сделал почти нормально.

newfag: «Надо добавить hivemind. Сделаем вот здесь кнопки и текстовые поля. При включении вызывается обработчик. Куда положим? А прямо сюда — в frmMain.cs» В итоге там сейчас кроме UI достались сбор статистики от praet0x'а и IRC-бот от newfag'а.

NewEraCracker, к большому счастью Анонимусов, занимался только багфиксами и однострочными улучшениями. Что получается от его попыток сделать что-то побольше, вы можете видеть в конце github.com/NewEraCracker/LOIC/blob/master/Program.cs
+3
Стильные бородатые админы любого возраста скрасят ваш вечер и проведут лечебную профилактику ваших серверов. Только у нас за 99.99$/час вы получите: нежное поднятие nginx, стимуляция exim, озорные игры в teeworlds втроем. Для любителей доминирования настройка squid. Поклонникам S&M — man sendmail =)
0
В «Тупить», когда увидел цитату, подумал что %username% сделали.
+2
Костыльно-Ориентированное Программирование (КОП)
Форкеры — воркер-процессы созданные методом fork
Портянка — длинный, не читаемый код
Брут Условие (или БрутФорс Условие) — ()длинное условие цель которого перебрать значения: if(a == 5 || a == 10 || a ==45 ...)
+2
Хех… Помнится, после анекдота про программерские машины у меня в голове родился термин Wheel catcher или ловец колёс — специальный костыль, отлавливающий и правящий последствия бага, а не его самого. Нескольких товарищей уже заразил этим словечком.
+7
Чтобы понять, почему переадресация SMS так плохо приживается у наших операторов, стоит вспомнить, как собственно работает сервис SMS в классическом варианте. Вкратце, передача SMS состоит из двух фаз: MO-SMS – это передача SM отправителя в SMS-центр своего оператора и MT-SMS – доставка SM к получателю.



Ключевой момент в том, что задача доставки возложена на SMSC отправителя. Именно он хранит SMS, «разыскивает» HLR получателя, запрашивает у HLR адрес MSC, в котором в данный момент находится получатель и в финале – отправляет SMS напрямую в этот MSC.

Из-за того, что вопросами доставки ведает SMSC отправителя, тупо «намутить» на нем переадресацию нельзя. Ведь переадресация – это услуга получателя. Конечно, нет ничего невозможного и некоторые операторы как-то выкручиваются. Можно использовать CAMEL и запускать различные сценарии уже в момент доставки SMS в MSC получателя. Можно пропускать весь сигналлинг через какие-нибудь умные STP или шлюзы, которые будут с одной стороны прикидываться абонентом-получателем, а с другой стороны – выполнять роль второго SMSC. В любом случае, это все ужасные костыли, которые стоят оператору немалых денег и доставляют кучу геморроя.

Если почитать условия предоставления переадресации SMS у тех операторов, где это реализовано, можно увидеть, что там тоже не все гладко. Например, у МТС Новосибирска услуга работает, только если отправитель – тоже абонент МТС Сибири. У Скайлинка при получении переадресованной SMS адресом отправителя является не отправитель, а тот, кто ее переадресовал. Киевстар не умеет переадресовывать SMS, отправленные НЕ абонентом. В общем, похоже, по-человечески это ни у кого и не работает.
+2
Отличная иллюстрация примера к Костыльно-Ориентированному Программированию (КОП).
0
Counterbug: не знаю, как перевести коротко, поэтому будет длинно.
Когда кто-то приходит к вам и показывает вам ваш баг, вы в ответ показываете ему его баг. Этот последний и есть counterbug.
0
Контрбаг — вполне читаемо и понятно как контраргумент.
0
А баг-репорты в оригинале все названы созвучно — Smug, Drug, Chug, Shrug!
И в этом свой прикол был. Жаль, при переводе скис…
0
оригинальная ссылка не открывается — http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined — Page Not Found
0
Хорошо, что сделал перевод в своё время! Останется для потомков.
Only those users with full accounts are able to leave comments.  , please.