Эпиграф.
Анекдот: Сидят три гражданина: русский, француз и англичанин... Не, это баян.
Вот лучше другой: Сидят три программиста: русский, китаец и индей... Хотя... Это мегабаян.
Как всегда, в этой стране за все в ответе товарищ Сталин. Это он нагнул кибирнетику так, что она русский язык позабыла навсегда. И после 55-го примерно года она разговаривала только по-английски. А английский нам ни разу не родной. Но как-то надо русскому парню или украинской дивчине кормить семью, выходить из ситуации и со смутным знанием грамматики и ограниченным словарным запасом писать там что-то замысловатое. Вы не задумывались, почему русские так любят экстрим програминг? Там коментарии не обязательны, типа код самодокументированный. До изобретения этой отмазки порог вхождения в оутсорс был куда выше - нужно было писать НА английском. В аджайльные времена стало достаточно овладеть английским акцентом и, вуаля... вот и вышел человечек.
Давайте для разминки возьмем булевы переменные. Вообще-то, по правилам хорошего тона, их имена отвечают на "йес-но квесчен" (как, кстати, вам мой акцент?). Ага IsEnabled - гуд, позитивненько, это индусы из микрософт нак назвали. IsDisabled - прочуствуете разницу, уже помрачнее, это уже Бангалор. IsNotEnabled - русский, из города милионника, ему неуютно. Но и тем кто это будет читать, им тоже жизнь малиной не показалась. IsNotDisabled - беспощаден русский бунт, но не бессмысленнен, человека плюнул в вечность и его чуток отпустило.
Уровень повыше - IsManagerCanComment. Вас не шокирует? Зря, случай-то висельный, как if(i=0) на Си. Вы среди тех кто подумал - понял-понял-понял, здесь опечатка IfManagerCanComment = CanManagerComment? Типа тру - он кан, а не тру то не кан. Не в сысле банка, а в смысле нельзя! На-ив-няк. Кто ж его посадит, это ж менеджер! В данном конкретном случае переменная ни в коем разе не запрещала менеджеру комментировать, но если она была false, то вообще любой мимо проходивший неменеджер, тоже был волен писать всякую фигню. После таких веществ уже IsSomethingHave или IsSomethingIs весьма милы.
На закуску IsCriteriasEqual. Criterion единственное число от более употребительного Criteria. Criterias замечательный монстр. Как баксы. Типа много множеств денег, как бы миллиард. Или в нашем случае много всяких критериев, как при выборе жениха для принцессы. При чем тут тогда is, нужен Ares или AreAre.
Однажды расстроенный моими подколками девелопер решает - ну их нафиг все эти селфексплэйнинг имена. И породжает такую готчу.
for(int i = l; i <= 12; i++) {
//тут пишем номера месяцев
}
Попробуйте углядеть, что тут не цифра 1 а другая переменная, l. Человек слаб, копипаст силен. Последний и победил. В данном конкретном случае l была чаще всего равна единце и только ей. Это был номер отчета в коллекции отчетов и лишь в продуктиве пользователи стали замечать, что январь куда-то исчезает на втором отчете, на пару с февралем они прогуливают на третьем и т.д. Какое-то время саппорту удавалось убеждать пользователей, что это фича. Просто нет данных за этот месяц. Но и саппорт не всесилен, пришлось плакать, колоться, но лезть на этот кактус.
Индусу в этом плане должно быть легче. С английским письменным они на ты. Хотя у них есть дикая привычка капитализировать двусложные слова. BackUp - безобидно, "спиной вверх". TransForm - уже поэзия серебрянного века. FallBack - тут уже нужно погадать. Это может быть капитализированное существительное fallback "резерв" или глагольная фраза fall back - "отступить". Крайний, клинический заскок, это InFormation. Для сохранения своего психического здоровья, хотя бы на сегодняшнем уровне, мне хочется думать, что это результат массового реплэйса.
Но это мелочь, повторюсь, не в английском проблема. Ибо джуниоры бывает такого сорта, что не способны возвращать ресурсы. Ну там открытые ридеры или соединения с базой данных. Будучи трахнутыми за это на код ревью, они пугаются до диареи и быстро добавляют close и dispose всюду и везде. Но диарея - это спешка и про try - finally они иногда, а точнее в 75% случаев забывают. Та-да-та-там случается при какой либо безобидной ошибке, например при отказе записи из-за коллизии оптимистической конкуренции. Но исключение тянет са собой ресурсы. Те, не будь дуракими, тянут блокировки. Дальше идет классическая сцена из вестерна, под названием "драка в салуне". Все при деле, потные, никто уже ничего не понимает, и присесть нельзя ибо у каждого торчит сломанный кий из попы. Продолжается это до тех пор, пока самый синиор из них не заметит - сначала была ошибка конкуренции. А Эту Херь писали чуть более грамотные славяне. Значится, это их вина. Стрелка переводится и таким способом подобные ошибки попадают в Рашу. Поскольку к этому времени шит хитс зе фан, то отмыться уже нельзя. Починить - значит показать, что ошибка была здесь. Не починить - показать, что ошибка точно здесь, но русские парни к сожалению попались идиоты.