Однажды у нас в институте уволился завкафедры программирования. Пока искали ему замену, я услышал разговор на другой кафедре, занимающейся подготовкой специалистов в области информационных систем в экономике. Собеседники обсуждали предложение одному из их коллег стать новым завкафедры и горячо поддерживали его нежелание. В разговоре часто проскальзывали фразы: «Он так хорошо разбирается в программировании»; «Он такой хороший преподаватель»; «Что ему делать на этой разгильдяйской кафедре?»
Попросила одна знакомая помочь с лабораторкой по программированию на C++, занятия по которому вёл тот самый бесценный препод. Тема лабораторной: «Массивы и работа с динамической памятью». Подчёркиваю, ни слова про классы. Задание: ввести с клавиатуры массив произвольной длины и отсортировать чётные строки по возрастанию, а нечётные по убыванию.
Через 15 минут была готова программа из 10 строк. Никаких лишних условий. Если номер строки был чётным, то происходила сортировка по элементам строки. Если нечётным, то по этим же элементам, умноженным на −1. Программу препод забраковал, так и не сумев внятно объяснить, что не так, но принял другую, сдутую у кого-то из соседей. Что было в той программе:
— класс «строка», где имелся массив конечной длинны (да-да, если пользователь хотел больший массив, то программа не работала) и переопределённые операторы [] и =;
— класс «массив», состоящий из статического массива объектов класса «строка» и переопределённых операторов [] и =;
— куча функций непонятного предназначения c неведомыми параметрами;
— куча глобальных переменных, в том числе и сортируемого массива.
Но больше всего убило то, что автор сего творения не удосужился никуда инкапсулировать сортировку. Сортировка происходила в цикле, как с обычным массивом. При этом на каждом шаге внутреннего цикла (когда сравнивались элементы строки) происходила проверка на чётность строки и вызов кучи тех самых непонятных функций.
Эту программу препод принял без вопросов с оценкой «отлично». Слава тебе, Господи, что этот человек не стал нашим завкафедрой.