Новый программерский жаргон

:

Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.


Условия Йодa (Yoda Conditions)
написание условия в виде if(constant == variable) вместо естественного if(variable == constant), например, if(4 == foo). Потому что это похоже на „если голубое — это небо“ или „если высокий — это человек“.
if (5==count)



Покемонная обработка ошибок (Pokémon Exception Handling)
Когда вы ловите все ошибки и потом пытаетесь их как-то анализировать.
        try{
            //code
        }catch ( Exception ex){
            if( ex instanceof SubException){              
                //code
            }else if(ex instanceof SubSubException){
                //code
            }else{
                //code
            }
        }

Обсуждения примера здесь.



Египетские скобки (Egyptian brackets)
Это тот стиль скобок, когда открывающая скобка ставится в конце текущего ряда:
if (a == b) {
    printf("hello");
}

Почему мы назвали этот стиль „Египетскими скобками“? Сравните расположение скобок с расположением рук на этой картинке:

(Этот стиль скобок использовался в известной книге Кернигана и Ричи (Kernighan and Ritchie) „C Programming Language“, поэтому он также известен как стиль K&R).



Различные виды баг-репортов (отчётов об ошибках)

Самодовольный отчёт (Smug Report) — ошибка, присланная пользователем, который думает, что знает о системе немножко больше, чем он на самом деле знает. Как правило, такой отчёт наполнен техническими деталями, не относящимися к делу, и несколькими предположениями (всегда неправильными) о том, что может быть причиной ошибки и как это исправить.

Кислотный отчёт (Drug Report)
Настолько непонятный/непостижимый отчёт, что тот, кто его писал, должно быть, чего-то не того покурил. Более сильная вариация — пыхтотчёт (Chug Report), создатель которого, должно быть, перекурил.

Безразличный отчёт (Shrug Report) — отчёт, не содержащий никаких деталей ошибки или шагов для воспроизведения, а только расплывчатое описание проблемы. Обычно содержит фразу „не работает“.



Утка (A Duck)
Функциональность, добавленная с одной-единственной целью: привлечь внимание руководства и быть удалённой, что позволяет избежать ненужных изменений в других частях системы.

Этот термин изначально появился как часть корпоративной культуры компании Interplay. Было хорошо известно, что продукт-менеджеры непременно хотели внести изменения абсолютно во всё, что производилось компанией — иначе они чувствовали себя так, будто они не приносили пользы.

Художник, работающий над анимацией шахматной королевы, знал об этой тенденции, и придумал гениальное решение. Он сделал анимацию королевы так, как считал нужным, но с одним дополнением: он дал королеве ручное животное — утку. Он анимировал эту утку через все анимации королевы. Он также позаботился о том, чтобы утка никогда не перекрывала „фактического“ анимацию королевы.

Когда пришло время сдачи, продукт-менеджер просмотрел всю анимацию и сказал: „Выглядит отлично. Только одно замечание — уберите утку.“



Рефукторинг (Refuctoring)
Это когда вы берёте хорошо продуманный кусок кода и с помощью последовательности небольших обратимых преобразований превращаете в нечто абсолютно непонятное никому, кроме вас.

Строкотипизированный (Stringly Typed)

Отсылку к термину „строготипизированный“ (Strongly typed).
Используется для описания имплементации, которая напрасно использует строки, в то время как есть более подходящие типы, которые удобнее использовать для программирования и рефакторинга.

Бывает, что в некотором методе действительно необходимо использовать строковой параметр (например, при вызове сетевого сервиса). Но затем строка передаётся и используется во всей последующей цепочке вызовов вместо того, чтобы сначала трансформировать строку в более подходящее внутреннее представление — например, создать перечисление (enum).

Массовая „стринготипизация“ обычно приводит к трудночитаемому коду, который „детонирует“ во время исполнения, хотя обычно такую ошибку сразу находит компилятор.



Оформление Doctype (Doctype Decoration)
Это когда веб-дизайнер добавляет в начало страницы объявление DOCTYPE, но не заботится о том, чтобы сделать HTML действительно корректным.

Гейзенбаг (Heisenbug)
Ошибка, которая — по аналогии с принципом неопределённости Гейзенберга в квантовой физике — исчезает или видоизменяется при попытке ее выявления.



Джимми (Jimmy)
Обобщенное название для невежественного / нового разработчика.

Мы старались разрабатывать компоненты системы так, чтобы они требовали от других разработчиков минимальных знаний о том, как они работают. Мы всегда формулировали наш вопрос в духе: „Что если Джимми забудет задать значение атрибута?“

Так появился термин: „Джимми-стойкий“ (Jimmy-proof), описывающий хорошо продуманной код.



Багзон Хиггса (Higgs-Bugson)
Гипотетическая ошибка, существование которой предсказано на основании небольшого числа (возможно) связанных записей в логе и расплывчатых анекдотичных сообщений от пользователей, но которую трудно (если вообще возможно) воспроизвести на машине разработчика, потому что невозможно узнать, существует ли она на самом деле, и существует ли то, что её вызвало.

Отсылка к Бозону Хиггса — теоретически предсказанной элементарной частице.



Тупить (nopping)
Сложнопереводимая игра слов на английском. Nopping происходит от команды ассемблера NOP, означающей „пустую“ (ничего не делающую) операцию. Похоже на „nap“ (вздремнуть), но не обязательно означает спать, а всего лишь „отключаться, становиться невнимательным, рассеянным“.

Пример: Некоторое время Стас сидел, пялился в скринсейвер и тупил (nopping).



Другие виды ошибок
Гинденбаг (Hindenbug)

Ошибка, вызывающая катастрофическое разрушение данных — »О человечество!"
Отсыл к дирижаблю Гинденбурга (нем. Hindenburg), взорвавшемуся в воздухе.

Counterbug

Ошибка, которую вы представляете, когда встречаете ошибку, вызванную человеком, представляющим ошибку (?).

Блумбаг (Bloombug)

Ошибка, которая случайно генерирует деньги.
Возможно, это отсылка к компании Блумберг.



Единороговый (Unicorny)
Прилагательное для описания функции, которая находится в настолько ранней стадии планирования, что может быть мнимой. Мы подсмотрели это слово в речи Yehuda Katz, который использовал ее в своем заключительном докладе на прошлогодней Windy City Rails для описания некоторых будущих особенностей Ruby on Rails.

Барак Обама (Barack Obama)
Аккаунт в системе учёта тасков, на который что мы записываем все тикеты (таски), которые мы очень хотели бы сделать, но на которые мы вряд ли когда-нибудь получим разрешение.



Лохнесский баг (Loch Ness Monster bug)
Ошибка, которая не повторяется, и которую видел только один человек.


Код-пахлава (Baklava code)
Код, в котором слишком много слоёв.
alt text

Обходимость (Workaroundability)
Это чувство, когда уже взломанный подход всё еще может или не может быть взломан дальше. (кто может предложить лучший перевод?)

Разработка, основанная на страхе (Fear Driven Development)
Когда менеджмент усиливает давление (увольняет кого-нибудь).
alt text



Общеправовая функциональность (Common Law Feature)
Ошибка в приложении, которая существовала так долго, что теперь является частью ожидаемой функциональности.

Видимо, отсыл к " общему праву", основанному на прецендентах.



Бикремент (Bicrement)
Добавление 2 к значению переменной.

Термины, образованные от еды:
Программерское топливо (Programmer fuel)
Лимонад Mountain Dew, кофе — в общем, всё, что наполняет вас кофеином.

По понедельникам я не начну соображать, пока не закинусь программерским топливом

Горячая картошка / горячие картошки (Hot potato / Hot potatoes)
Соответственно Http и Https (как вы понимаете, это чисто английская игра слов). То же количество слогов, но произность проще и веселее.

Посылать всю информацию о клиенте через сервис авторизации по адресу «hot potatoes»://имя-компании.com/auth

Торт (Cake)
Зависит от контекста, обычно обозначает какое-то действие над существительным. Это существительное должно состоять из одного слога для облегчения общения.

(примеры сложно переводимые)

Бананы, бананы, бананы (Banana banana banana)
Текст, который пишут в том месте, где документация должна быть, но ещё не написана. В основном используется для борьбы с такими тулами, которые проверяют обязательное наличие документации (например, SVNStyleCop в C# или FxCop в C++).

/// <summary>
/// banana banana banana
/// </summary>
public CustomerValidationResponse Validate(CustomerValidationRequest request, bool useStrictValidation, bool throwIfSessionExpired)

Сальса Чанки (Chunky salsa)
Произошло от правила сальсы чанки. Одна-единственная ошибка, которая делает всю систему неработоспособной.

Вся система превратилась в сальсу чанки после того, как Боб изменил страницу логина, обломав всем возможность войти под своим аккаунтом.



Squizzle-giz
Ужасно произносимое расширение файла .sql.gz

Когда мы настраивали сервер, мы задолбались произносить сто раз «дот эс кью эл дот гэ зэ» и решили придумать слово, которое произносилось бы легче и веселее.
(Если я правильно понимаю, «Squizzle-giz» дословно переводится как «хромые объятия» или «объятия сексуального парня»).



Бл#дский код (Hooker Code)
Проблематичный код, который является причиной нестабильности приложения: приложение часто «падает». Английская игра слов: выражение «go down», помимо «падать», имеет также смысл «оральный секс».


Реальная ошибка 101 (Reality 101 failure)
Программа делает в точности то, что требовалось, но когда её начинают использовать реальные клиенты, выясняется, что постановку задачи понимали неправильно, и программа в принципе бесполезна.

Гидрокод (Hydra Code)
Код, который не может быть исправлен. На месте одной исправленной ошибки вырастают две новые.


Протодукция (Protoduction)
Прототип, который дошёл-таки до конечного пользователя.


Комментарии ниндзя (Ninja Comments)
То же, что отсутствие комментариев

Мне всё-таки пришлось написать реальный комментарии, так как моих комментариев-ниндзя было недостаточно.



Разговоры с резиновой уткой (Rubberducking)
Иногда вам просто нужны выговориться, чтобы решить проблему. Лично я в таких случаях шёл к начальнику и объяснял суть проблемы, сам задавал вопросы, сам на них отвечал, и выходил из кабинета начальника с готовым решением. При этом начальник мог так и не сказать ни слова.

Я читал, что некоторые люди для этой цели приклеивали резиновую утку к своему монитору и разговаривали с ней. Итак, Разговор с резиновой уткой — это разговор вслух с самим собой, чтобы выговориться и найти решение.

Базаданново (Databasically)
Используя базу данных для хранения информации.
«Давай я занесу имена всех клиентов в вордовский документ» — «Нет, мы должны сделать это базаданново, чтобы мы смогли постоянно обновлять эти данные».

Автор этого термина утверждает, что назвал так свою компанию.



Смурфовые правила наименования (Smurf Naming Convention)
Когда почти все классы имеют один и тот же префикс. Например, когда пользователь нажимает кнопку, класс SmurfAccountView передаёт объект SmurfAccountDTO классу SmurfAccountController. Используя иждентификатор SmurfID, из базы загружается объект SmurfOrderHistory, который в свою очередь передаётся классу SmurfHistoryMatch и далее либо в SmurfHistoryReviewView, либо в SmurfHistoryReportingView. Если случается событие SmurfErrorEvent, то оно логируется с помощью SmurfErrorLogger в файл ${app}/smurf/log/smurf/smurflog.log

Мегамот (Megamoth)
Расшифровывается как МЕГА МОнолитный меТод.
Часто содержится в Богообъекте (God Object) и обычно переваливает за два экрана по высоте. Встречаются даже мегамоты в 2 тысячи строк. Берегитесь мегамотов!



apt-got и wgot
обозначает программы, инсталлированные (в Unix) с помощью команды apt-get и файлы, скачанные с помощью команды wget.

Приверы адекватны только по-английски:
«I apt-got 100MB of updates this morning»
«Once this loop has wgot that file, it takes the md5 hash»

Это часть первая. Продолжение следует.
Осталось ещё много интересных терминов. Не переключайтесь!