Как протестировать на внимательность вашу команду программистов. Или можно ли писать код на русском языке?

Дорогой друг, ты знаешь, что в Visual Studio можно писать программы на C# на кириллице? Знал?! Хорошо) Но надеюсь не писал такие программы. А если не знал, то сейчас я тебя научу как это делать но после прочтения этой статьи немедленно забудь про эту возможность)

Также после прочтения данной заметки ты узнаешь при чем тут тест на внимательность. Заинтриговал?

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

public void ЭтоМойМетодНаРусском(var аЭтоПеременная){
ВызовЕщеОдногоМетода();
}

Такой код замечательно компилируется. И виной тому кодировка UTF-8 . Она включается в себя символы национальных алфавитов.

Но не нужно так делать, так уж повелось, что программирование построено на латинице. Анархия и бунтарство как в 1С не для нас.

Тест на внимательность для программиста

//получить клиента
public void СlientGet(){
return new Сlient();
}
//что-то сделать с клиентом
public void UseClient(){
var client = ClientGet();
}

Будет ли работать это код? Все ли с ним в порядке? В обычно случае ответ «Да». Но если с кодом работал невнимательный программист (далее его я буду звать для краткости «рукожоп», это вполне кратко и поясняет суть проблемы)? Так вот если писал его рукожоп может и не работать это зависит… от того как он переключал раскладку клавиатуры во время создания этого шедевра.

//получить клиента
public void СlientGet(){ //тут первая буква болеет
return new Сlient();
}
//что-то сделать с клиентом
public void UseClient(){
var client = ClientGet();
}

Тут я для наглядности показал, что буква C зачеркнутая на самом деле написана на русском. Так происходит когда переключаясь человек начинает набирать Client , но печатает Сдшуте. Видя такое недоразумение, рукожоп стирает все буквы кроме русской С и переключает раскладку и дописывает используя латиницу ient. Визуально такую больную букву C никак не отличить от английской. При этом метод ClientGet() работать не будет если его набрать на английском. А если копипастить то все работает).

Хотите больше Ада на работе делаете так и всем будет весело)

Так вот вы можете даже и не подозревать, что у вас в коде уже заложены такие вот приколы.

Итак для теста кода вашей команды делаем поиск по всему решению (solution). Используя регулярное выражение (С)([a-zA-Z]+) .Внимание тут буква C русская..

Если тебе повезет и ты найдешь в решении своей команды такой код, то для фикса нужно использовать регулярку «C$2». Тут C уже английская.

Осторожно! Регистр в регулярке следует обрабатывать для строчной и заглавной буквы отдельно.

Надеюсь этот материал был полезен для тебя мой друг. Если ты не нашел такую шутку с буквой С у себя в коде. Можешь ее туда поселить и тогда твои коллеги потом ее с тобой вместе обсудят за чашечкой пива. Ну и вы все весело посмеетесь.

А у вас в коллективе бывали такие «шутки»?

Как протестировать на внимательность вашу команду программистов. Или можно ли писать код на русском языке?: 2 комментария

  1. Веселая статейка ). Но по идее когда мы обратимся к методу var client = ClientGet(); написанному по английски, компилятор скажет, эй парень, я не знаю такого метода, и подчеркнет его ругательной волнистой линией. Но вообще в проекте может такое произойти и с яваскрипт кодом. Тогда регулярка из статьи воистину спасение.

    1. Да, все правильно. Компилятор напишет, что метода такого нет. И тут уж как повезет, но вряд ли сразу начнешь подозревать, что дело в неправильном названии. Скорее всего будешь искать причину в другом. Например не подключен неймеспейс или еще что-то. Вынос мозга гарантирован. История из реального проекта.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *