Всегда ли наличие костылей в коде это плохо?

Всегда ли наличие костылей в коде это плохо?

Всегда ли наличие костылей в коде это плохо?Вы когда-нибудь серьезно задумывались над вопросом "всегда ли наличие костылей в коде это плохо?". А быть может существуют ситуации, где костыли серьезно экономят время? И быть может фраза "нет ничего более постоянного, чем временное" не всегда применима и ее стоит рассматривать не как постулат? Как бы то ни было, каждый видит за этими вопросами свои ответы. Однако, в рамках данной статьи я рассмотрю несколько аспектов, которые часто остаются за бортом и возможно покажутся вам познавательными.

Стремление к идеальному коду - это весьма похвальное стремление, но оно не учитывает пару важных факторов - время и силы, а ведь эти вещи в принципе не восстановить. Стоят ли они того, попробуем рассмотреть.

Примечание: Момент рисков не рассматривается в рамках данной статьи, так как иначе она сильно разрастется и превратится в перечисление массы факторов, а суть статьи не в этом.

Ситуация 1. Вам нужно написать небольшой скрипт. Вы точно знаете, что скрипт будет написан один раз и вы его не будете повторно использовать или же наполнять функционалом. К примеру, вам необходимо убедится в какой-то технологии или же проверить js скрипт из консоли браузера. Имеет ли смысл в таком случае писать идеальный и красивый код, снабжая его подробными комментариями? С одной стороны, если задача набить руку, то имеет смысл. С другой стороны, если вам нужно проверить десяток мест, то такая задача становится обременительной и немного бессмысленной, так как потраченное время и силы вы бы могли пустить на что-то более полезное.

Ситуация 2. Вас могут попросить подправить чужой код с костылями. Вы знаете, что в дальнейшем код не будет переделываться, другими словами так и будет кочевать. Человек, который попросил вас подправить код, не рассматривает вариант переделки скрипта/программы, сколько бы вы не убеждали его в необходимости. Не видит человек за этим смысла. Тут важно понимать, что может он и не собирается в дальнейшем поддерживать этот продукт, а просто когда для него ситуация станет лучше, то будет написана программа "с нуля". Другими словами, переписка кода зависит чисто от вашего желания, никто вам за это не скажет спасибо. С одной стороны, вы можете написать этот костыль и свое время направить на что-то другое. С другой стороны, вы можете подправить часть критичных ошибок, не особо увлекаясь полной переделкой, чтобы самому не писать костыль. С третьей стороны, вы можете полностью переписать скрипт. Вот тут важно честно себе ответить на вопрос, а что если у вас времени только на первый вариант?

Ситуация 3. В жизни бывают ситуации, когда ошибки нужно исправлять в срочном порядке. И не всегда бывает время на "качественное" исправление. К примеру, ошибка в системах реального времени. Чтобы немного упростить ситуацию, допустим вы знаете, что в последствии время на переписку этой части с ошибкой будет. С одной стороны, вы можете настоять на своем (или скрыть, что вы не делаете костыль) и тем самым затянуть время исправления. С другой стороны, вы можете спокойно сделать костыль, а уже после этого заняться обдумыванием нормального кода. Какой вариант будет предпочтительнее для вас? А какой вариант был бы оптимальнее для всех сторон?

Ситуация 4. У вас достаточно много времени и поэтому вы постоянно пишите только "качественный" код. Как вы думаете, если возникнет ситуация, где без костыля никак не обойтись, то вы сможете написать нормальный костыль, который в последствии можно будет легко переделать? Или же в спешке вы напишите такой код, что его переделка займет весьма существенное время, так как вы неправильно сэкономили время и действительно важные части были написаны криво? К примеру, поддавшись фразе "все равно пишу костыль" сделали некорректный формат хранения данных, переформирование которого в последствии обойдется весьма существенным временем и силами. Помните, чтобы уметь писать "продуманные" костыли, у вас должен быть опыт написания последних.

Ситуация 5. Представьте себе, что вам нужно написать некоторый функционал. Однако, неизвестно будет ли он полезен или быть может вам придется его вырезать в будущем. Вы знаете, что разница во времени написания существенна. К примеру, на "относительно продуманный" костыль у вас уйдет 1 час, а на нормальное решение уйдет 10. Имеет ли смысл писать нормальное решение в таком случае, особенно, если вы знаете, что если функционал окажется полезным, то времени на него сможете выделить достаточно много?

Существуют и другие ситуации, но даже этих вполне достаточно, чтобы задуматься над вопросом "всегда ли наличие костылей в коде это плохо". Свои мысли по этому поводу можете смело оставлять в комментариях.

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)