Качество кода? Миф!

Предлагаем Вашему вниманию презентацию и запись нашего выступления на тему «Качество кода? Миф».

В этом докладе мы утверждаем, что качественного кода не существует. Наша позиция основывается на следующих рассуждениях.

Существующие определения понятия качества ПО, например, ISO 9126, рассматривают качество как соответствие заданному набору характеристик. Выявление же требуемого набора характеристик и оценка степени значимости каждой из них целиком зависит от опыта тех людей, которые принимают участие в разработке проекта. Качество ПО носит целиком субъективный характер. Более того, оценка качества одного и того же продукта может меняться с течением времени из-за приобретения нового опыта. Это происходит по следующим причинам:

  • Человеку свойственно абстрактное мышление. А это значит, что важные на данный момент характеристики принимаются во внимание, а все остальные игнорируются.
  • Проблема индукции. Данная проблема заключается в том, что человек вынужден принимать свои решения лишь на основе конечного опыта, а знания носят предельный характер.

    Классический пример, который иллюстрирует проблему индукции – курица Рассела: фермер каждый день кормит и поит курицу. Так происходит изо дня в день. И чем дольше происходит, те больше курица убеждается, что фермер ее друг и его единственное предназначение в том, чтобы заботиться о ней. Но однажды фермер приходит и вместо еды и воды отрубает курице голову. Это неожиданное событие никак нельзя было предвидеть на основе предыдущего опыта, но тем не менее оно является определяющим в жизни курицы.

  • Искажение нарратива. Заключается в неспособности воспринимать факты без их интерпретации. Например, разные модели солнечной системы и земли, которые существовали в истории человечества, объясняли одни и те же наблюдаемые явления – восхода и захода солнца, смены времен года и т.д.
  • Ареал-специфичность. Использование тех или иных абстракций и связей между ними зависит от контекста. Например, когда родитель учит ребенка, как правильно надо переходить улицу, но сам, на глазах ребенка, нарушает данные правила.
  • Одна из причин, которая порождает некачественный код – копи-паст. А победить копи-паст невозможно, так как часто
  1. Дублирование выходит за рамки используемой платформы. Например, несколько веб-сервисов или сайтов, сделанных как под копирку.
  2. Дублирование выходит за рамки понимания программиста. Если Вы боролись с копи-пастом и он, вдруг исчез, то это не значит, что его нет – просто Вы его теперь не можете увидеть, так как не считаете полученный код некачественным.

Почему же так много внимания уделяются качеству кода:

  • Одну и ту же задачу можно решить разными способами. Без метрик качества кода трудно было бы объяснить, почему был сделан выбор в пользу определенного решения.
  • Россияне склонны к рефлексии и самокопанию. Многие советские фильмы учили, что если у тебя много денег, то ты занимаешься чем-то неправильным, конъюктурщиной, размениваешь талант на деньги. Достаточно вспомнить такие фильмы, как “Приходите завтра”, “Я иду, шагаю по Москве“, где данная мысль является одной из сюжетных линий, или “Бриллиантовую руку” со знаменитой фразой “Наши люди в булочную на такси не ездят”. Качественный код служит моральным оправданием себе, что занимаешься правильным делом.

Можно ли писать качественный код? На наш взгляд – нет. Когда Вы напишите “качественный код”, то приобретете новый опыт, который скажет Вам, что у Вашего “правильного кода” есть изъяны. И так будет с каждым новым кодом. Рано или поздно он покажется Вам “плохими”. Но не все так мрачно, именно этот эффект заставляет нас развиваться и расти.

Оставить ответ