Как стать автором
Обновить

Комментарии 193

Теперь я знаю варианты названий «хорошего» кода написанного знакомыми :)
Это для тех кто пропустил старую статью ;)
Во-во… Каждые пол-года теперь будем перепощивать?
Нада бы это распечатать и повесить на стену
Чудесно, хоть и не всегда переводимо.

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

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

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

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

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

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

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

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

(< 4 variable 8)
Недостаток, но всё же не такой фундаментальный. Хотя я бы с радостью писал везде 4 &lt variable &lt 8
В Питоне так можно.
Посмотрел документацию. У них сравнения реализованы через нерекурсивное правило. Это сработает, но простыми LL/LR парсерами такой синтаксис уже не разобрать без серьёзных костылей. А ещё говорят, в питоне простой синтаксис. :]
И главное аватар при этом такой хитро-довольный))
НЛО прилетело и опубликовало эту надпись здесь
Функция < определятся как «возвращает true, если аргументы упорядочены строго по возрастанию, flase в других случаях».
Нужно уточнять что Yoda Conditions актуальны только для C/C++.
PHP?
Для C и языков с C-подобным синтаксисом.
Не совсем так, скорее для языков, в которых в блоке if может быть не только булевское выражение.
Просто такое есть и в не с-подобных языках, и в некоторых с-подобных напротив, такого нет.
Тут есть более фундаментальное описание, чем «для языков, в которых в блоке if может быть не только булевское выражение»

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

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

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

там в = ошибка, против которой собственно YC и направлен. Впрочем пофиг, ибо там _eq(8, ....) из nose везде.
if bla = bla1 then begin
bla1:=bla2;
end;

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

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

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

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

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

См. также Ajax VS Comet
«эксгибиционисты» = «фашисты» = флэшисты
НЛО прилетело и опубликовало эту надпись здесь
А ещё удобно писать 0 == strncmp(«какие-то очень длинные параметры»).
Удобнее воспринимать, когда 0 и strncmp рядом.
Не пойму кто назвал K&R (так же он известен как «The One True Brace Style») египетскими скобками Х_х
Computronium из Австралии
Близким термином к «рефукторинг» является «рехакторинг».
реФАКторинг
факапторинг.
Рефакинг, помоему, лучший вариант.
ретрахторинг
Ретракторинг — это когда в очередной раз переезжаешь на зарубежный хостинг.
> Ошибка в приложении, которая существовала так долго, что теперь является частью ожидаемой функциональности.
О да, это явно про WinAPI (:
хоть один пример можно?
про Jimmy порадовало :)
А я давным давно пишу Египетскими скобками )
Я болел этим. И излечился.
а чем это плохо? по мне так удобней тем что освобождается строка
Я не могу читать такой код. Просто не могу, не получается. Он ужасен. Не могу по другому объяснить. А еще когда скобки на одной вертикали проще издалека увидеть кусок кода %)))
Я тоже пишу египитскими скобками и ничего плохохо в этом не вижу, наоборот больше строк помещается на экране
хм… для меня такой кусок кода:

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

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

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

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

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

А вообще в человеческих редакторах есть как подстветка парных скобок, так и индикаторы отступов, так что блоки прекрасно видно вне зависимости от того, как поставлены скобки.
а я код, написанный иначе, не могу читать. не получается.
в java — это стандарт, а например в c# — нет. лучше пользоваться стандартным форматированием в среде. ведь расположение скобок не дает никаких преимуществ
я бы «кислотный» отчет всеже переименовал в «наркоманский»
НЛО прилетело и опубликовало эту надпись здесь
«Феншуй» — неопределенный набор правил, подходов и методов, не задукоменнтированный, но неосознанно принятый большинством команды разработчиков. Традиционно хранитель феншуя — архитектор. Новые члены команды, даже опытные и технически грамотные, по-определению феншуя не знают.

Например, по феншую отступы в процедурах надо делать в 4 пробела, имена переменных начинать с маленькой буквы и т.п. Если новый разработчик начнет добавлять процедуры с отступами табами и переменными с большой буквы — такой код будет работать, но смотреться инородно в общем проекте. Осторожно, от фразы «а у меня свой феншуй» изменяется форма лица.
Феншуй — это классный термин!
Часто сталкиваюсь с багзонами хиггса и разговариваю с уткой.
А как назвать полезную фичу, которую находит пользователь и успешно использует ее, но при этом программист ее не залаживал явно?
«Залаживал» — это вы что сейчас сказали? В смысле «закладывал» или в смысле «лажа»?
Точнее было бы «не залаживал» или «не закладывал»
Багофича, очевидно же.
Может быть, но все же это не баг, так как не нарушает работу, а наоборот ускоряет
Зачем нам ее как-то называть, если мы об этой фиче так и не узнаем? :)
Вы дали мысль для ее названия — «Случайная фича», так как о ней узнаем случайно :)
А как насчет «Удачная находка»?
Шорткат )
Каличный ответ
FxCop тоже для C# (для .NET вернее).
Я бы Refuctoring перевел как ретрахторинг — и по сути и по названию подходит.
Мне больше нравится «рефакинг». Вроде как и слово не сильно меняется и все понимают :)
Рефакинг больше смахивает на «перетрахивание», что имеет несколько другой смысл, чем в оригинале.
"(примеры сложно переводимые)"

ninja-examples? )
На старой работе всё ещё популярно выражения:
«подкостылить», «забить костыль», «подпереть костыликом» — срочно решить проблему любым доступным способом.

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

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

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

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

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

«Покемонные» эксепшны тоже необходимы, когда при отлове любого эксепшна нужно сначала выполнить общий кусок кода, а затем частные действия.
В случае, когда для некоторых видов исключений есть общие действия, а потом rethrow, я предпочитаю использовать boolean-переменную, а блок обработки выносить в finally. Ибо очень не люблю дублирование кода, даже если это один вызов метода и следующий за ним rethrow.
А в ругаемом всеми 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
}


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

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

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

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

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

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

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

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

NewEraCracker, к большому счастью Анонимусов, занимался только багфиксами и однострочными улучшениями. Что получается от его попыток сделать что-то побольше, вы можете видеть в конце github.com/NewEraCracker/LOIC/blob/master/Program.cs
Стильные бородатые админы любого возраста скрасят ваш вечер и проведут лечебную профилактику ваших серверов. Только у нас за 99.99$/час вы получите: нежное поднятие nginx, стимуляция exim, озорные игры в teeworlds втроем. Для любителей доминирования настройка squid. Поклонникам S&M — man sendmail =)
В «Тупить», когда увидел цитату, подумал что %username% сделали.
Костыльно-Ориентированное Программирование (КОП)
Форкеры — воркер-процессы созданные методом fork
Портянка — длинный, не читаемый код
Брут Условие (или БрутФорс Условие) — ()длинное условие цель которого перебрать значения: if(a == 5 || a == 10 || a ==45 ...)
Хех… Помнится, после анекдота про программерские машины у меня в голове родился термин Wheel catcher или ловец колёс — специальный костыль, отлавливающий и правящий последствия бага, а не его самого. Нескольких товарищей уже заразил этим словечком.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Отличная иллюстрация примера к Костыльно-Ориентированному Программированию (КОП).
Всё равно смешно.
Counterbug: не знаю, как перевести коротко, поэтому будет длинно.
Когда кто-то приходит к вам и показывает вам ваш баг, вы в ответ показываете ему его баг. Этот последний и есть counterbug.
Контрбаг — вполне читаемо и понятно как контраргумент.
Кстати, цитата почти в тему: bash.org/?334331
А баг-репорты в оригинале все названы созвучно — Smug, Drug, Chug, Shrug!
И в этом свой прикол был. Жаль, при переводе скис…
Common Law Feature отсылает к гражданскому браку (Common Law Marriage)
оригинальная ссылка не открывается — http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined — Page Not Found
Хорошо, что сделал перевод в своё время! Останется для потомков.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории