Я годами разбирался с рекомендациями по стилю кода, как и многие другие на этом форуме. Это включает в себя как руководства по стилю борьбы, которые я нахожу ненавистными, так и попытки побудить других использовать руководства по стилю, чтобы обуздать их стиль, чтобы он мог быть более читабельным в целом.
Корпорация извлекает выгоду из общего стандарта кодирования. При разработке программного обеспечения для компании необходимо учитывать много важных моментов, например, как мы будем обучать новых разработчиков воспринимать код предыдущего поколения. Когда вы пишете код, вы не всегда думаете об этом. Фактически, многие кодеры предпочитают даже не задумываться о том, как другие захотят подойти к коду через 5 или 10 лет после того, как они ушли. Руководство по стилю кодирования - это способ, с помощью которого корпорация может сосредоточиться на этих 5 и 10-летних целях, упрощая разработчикам возможность работать в более широком плане.
С другой стороны, руководства по стилю кодирования общеизвестно несовершенны, поскольку невозможно разработать идеальный стиль кодирования и записать его. На самом деле вы начинаете сталкиваться с забавными угловыми случаями, когда математические доказательства начинают терпеть неудачу, если вы пытаетесь сделать их совершенными. Итак, мы знаем, что руководства по стилю кодирования несовершенны. Они могут не полностью сосредоточиться на том, что нам нужно, через 5-10 лет.
Если бы мы «навязали» стиль кодирования, мы бы сейчас пожертвовали ценностью ради ценности позже. Это можно было бы назвать «инвестицией», если бы мы могли быть уверены, что получим отдачу от наших усилий, но любой разработчик, работавший с плохо написанным руководством по стилю кодирования, может засвидетельствовать, что эти «читабельные» выгоды дорого оплачиваются отвлекающими разработчиками. подальше от их кода. По моему опыту, есть только очень небольшое количество случаев, когда применение стилей принудительного кодирования имеет смысл, как правило, для программного обеспечения для уникальных клиентов, где программное обеспечение может использоваться в течение 30 или 40 лет!
Вместо этого я считаю, что наиболее эффективно рассматривать руководство по стилю кодирования как манифест: «Это то, что мы считаем лучшим стилем кодирования для нашей группы». Это куча текучих мыслей, задокументированных словами. Слово «верить» важно: если верования меняются, то вместе с ним должны меняться и руководства по стилю кодирования.
Вот тут и вступают ваши цитаты из «сильных личных возражений». В том, что я бы назвал «идеальным» миром, вы пишете любой код, который считаете лучшим, и вы живете с последствиями. Нам часто нравится игнорировать «мягкие» последствия при программировании, но в этом случае они важны. У меня нет проблем с тем, что ты пишешь в своем собственном стиле, если ты не возражаешь, чтобы я никогда не давал тебе ничего важного и надолго развивающегося.
Думайте о всей системе как о поле для гольфа. Стиль кодирования прокладывает легкий путь по фарватеру. Если вы придерживаетесь стандарта кодирования, мы позаботимся о том, чтобы жизнь была как можно проще. Чем дальше вы начнете работать, используя свои собственные стандарты кодирования, тем больше вам придется доказать свою ценность в команде.
Если я приеду утром в понедельник и обнаружу, что все выходные вы потратили на решение проблемы, которую мы мучили в течение года, и вы сделали это в своем собственном «специальном» стандарте кодирования, я не собираюсь говорить вам почини это. Я скажу тебе пойти принять душ. Если ваш «специальный» стандарт кодирования является исключительно «особым», я мог бы даже предложить разработчику начального уровня «пересмотреть» код, чтобы распространить знания о том, как работает ваш код, и безоговорочно упомянуть, что если что-то кажется трудным для чтения, он / она должен убери это. В эти выходные вы предоставили компании достаточную ценность, так что не стоит даже упоминать о вопиющих нарушениях стандартов кодирования, которые вы совершили.
Конечно, эта метафора игры в гольф не имеет границ. Если я попрошу вас выполнить какую-то задачу ранга и файла, возможно, добавив новые поля в какую-либо форму, и вы решите использовать возможность реорганизовать весь код заполнения формы в соответствии с вашим конкретным стилем, используя набор теневых символов, таких как определение макросов и какую-то ужасную технику метапрограммирования шаблонов, которую вы только что узнали из обмена стека, вас попросят вернуться и исправить это. Вы решили действовать, это последствия.
( Отказ от ответственности: я полностью написал эту реализацию, is_base_of
чтобы решить черную задачу, и заработал каждый бит ада, который я получил за это от старших разработчиков. Я говорю, что оно того стоило. Я все еще получаю веселый пузырь смеха каждый раз, когда я посмотрите, как этот шаблон вклинивается в 7 несвязанных частей спецификации C ++, чтобы сделать что-то удивительное. Примите это, старшие разработчики! Это то, что вы получаете за запрет boost
на этот конкретный проект! )