Является ли стиль кодирования в организациях необязательной вещью?

30

Этот документ стиля программирования имеет общее правило, которое гласит:

Правила могут быть нарушены, если против них есть серьезные личные возражения.

Это противоречит тому, как я думаю, и есть много статей, в которых говорится, что стиль кодирования действительно важен. Например, это говорит:

Документ о стандартах кодирования говорит разработчикам, как они должны писать свой код. Вместо того, чтобы каждый разработчик писал свой собственный предпочтительный стиль, он будет писать весь код в соответствии со стандартами, изложенными в документе. Это гарантирует, что большой проект закодирован в едином стиле - части не пишутся по-разному разными программистами. Это решение не только облегчает понимание кода, но и гарантирует, что любой разработчик, который просматривает код, будет знать, чего ожидать от всего приложения.

Итак, я что-то неправильно понимаю из этого документа и цитаты в верхней части этого вопроса? Могут ли люди просто игнорировать стиль кодирования?


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

Я пишу документ о стиле кодирования для нашей команды и хочу проверить стиль с помощью некоторых статических анализаторов. Если это не удастся, Дженкинс отправит электронные письма. И я хочу пропустить проверку кода, если стиль не совпадает. Это явно противоречит первой цитате.

Но тогда, если цитата верна, какая польза от документа в стиле кодирования, если кто-то может делать что хочет?

BЈовић
источник
Ответ, очевидно, таков: это зависит. Все приведенные ниже ответы подходят для разных команд в разных компаниях с разными культурами. Все, что вы предлагаете, должно соответствовать цели команды - и вы должны иметь представление об этом, потому что вы, конечно, обсудили это в неформальной обстановке с членами команды, индивидуально или в небольших группах. Лично я предпочитаю а) все, для чего я могу просто установить параметры в Emacs, Visual Studio и IntelliJ IDEA, и б) абсолютно никаких жестких вкладок в файлах ни при каких обстоятельствах! Для всего остального, что хочет команда, это нормально.
Давидбак
На мой взгляд, если вы пишете руководство, то вы уже проиграли битву. Ни в коем случае нельзя создавать авторитетные документы, которые разработчики действительно будут читать. Современные IDE поставляются с набором стилей. Выберите один и назовите это ссылкой.
Cerad
Документ, связанный с стилем, который вы указали, является "a" предложенным документом о стиле кодирования; это не "док" стиль документа. Если вы создаете документ для своего сайта, используйте его настолько, насколько он вам подходит. Если у вас есть возражения, то изменить свой документ соответственно. Например, пропустите утверждения, которые вам не нравятся.
user2338816
«Правила могут быть нарушены, если против них есть серьезные личные возражения». Иногда это политическое соображение: фаза 1 является обязательной. Без этого старший сотрудник старой школы мог бы полностью убить идею стандартов кода.
brian_o

Ответы:

12

Насколько я могу судить, заявление, которое вас смутило, является прагматическим компромиссом, сделанным для того, чтобы руководящие принципы служили максимально широкой аудитории. В зависимости от вашего конкретного контекста (подробнее об этом ниже) у вас может быть возможность изменить его и более эффективно использовать рекомендации.

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

Заметьте, что эти возражения могут быть неверными, но (и это очень ОЧЕНЬ БОЛЬШОЕ, НО) они также могут указывать на то, что конкретное правило неверно - либо в целом, либо в контексте конкретного проекта (один пример несоответствия правила - это требование предоставить детальная регистрация в критичном к производительности коде).

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

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

Возможно, вам понравится вышеупомянутое, и вы можете пожелать, чтобы это было так везде, для всех, но посмотрите ближе на эту часть «вызов поднят / оставьте без внимания / отрегулируйте» и спросите себя, как это можно реализовать. Спросите себя, сколько времени это может занять в зависимости от проекта и команды. Если это займет час, это приемлемо? Что если это займет день, или неделя, или ... месяц?

Видите ли, этот подход «вызов и игнорирование до разрешения» может открыть широкую дверь для злоупотреблений, если он будет представлен в качестве руководства для любого проекта. «Да, да, мы вас слышим, давайте сделаем так, как говорится в руководстве. Сначала заполните эту форму запроса и получите одобрения генерального директора / финансового директора / технического директора; ожидайте, что это займет неделю или две. После этого подождите, пока мы не обновим наши проверки кода. Это может занять еще неделю или две. Между тем, пожалуйста, убедитесь, что ваш критичный к производительности код рвет правильно отформатированные операторы регистрации каждого перемещения регистра. "

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


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

Если вы придумали способ заставить этот процесс работать, не создавая много препятствий в вашем рабочем процессе разработки, тогда стоит рассмотреть формализованный и легко отслеживаемый подход «вызов / разрешение», а не хаотичное «нарушать, если вы кричите достаточно громко».


В качестве примечания я хотел бы остановиться на том, что вы написали в другом комментарии : «Предположим, что стиль кодирования идеален, а если это не так, и т. Д.»

Это действительно опасное предположение. Я сломал ему нос (дважды! В одном проекте! Где у меня был огромный опыт и я подумал, что я все знаю об этом, пойди разберись), и я настоятельно рекомендую тебе бросить его. Безопаснее предположить, что в руководстве по стилю могут быть ошибки, и попытаться подумать о том, что делать в случае обнаружения таких ошибок.

комар
источник
Скажем так: наша команда небольшая, и в нашем процессе нет никого выше моего босса (который является просто руководителем команды). Таким образом, игры, как вы объяснили выше, не произойдут.
BЈовић
@ BЈовић в этом случае подход вызов / разрешение выглядит явным победителем
комнат
53

Позволять людям игнорировать стили кодирования из-за личных предпочтений - плохая идея.

Цитата в вашем вопросе, кажется, позволяет любому разработчику просто сказать: «Я не собираюсь использовать этот стиль, потому что он мне не нравится».

Это противоречит всему, что заставляет всех в команде делать то же самое для согласованности и читабельности.

Я согласен, что стиль документа с таким утверждением, вероятно, бессмысленно.

Тем не менее, некоторая гибкость в соблюдении правил стиля рекомендуется:

  • Рабское следование рекомендациям может помешать лучшему способу написания определенного фрагмента кода . Разработчики должны иметь возможность игнорировать руководящие принципы и приводить доводы в пользу того, что то, что они сделали, является лучшим, наиболее читабельным способом достижения чего-либо в этом случае.
  • Работа с устаревшим кодом может потребовать гибкости. Вероятно, не стоит тратить свое время на перестройку существующей базы кода. Если вы существенно переписали определенный раздел, вы можете переформатировать его в предпочтительный стиль. Однако, если вы просто сделаете небольшое изменение, может быть лучше использовать существующий стиль кода.
  • Упоминание о каждом небольшом нарушении руководства по стилю не является хорошим использованием времени. Обзор кода - хорошее время, чтобы выделить любой код, который значительно не соответствует стилю команды. Тем не менее, обнаружение и исправление небольших «ошибок» в стиле, вероятно, станет занятой работой, которая фокусируется на неправильных вещах. Конечно, провалите проверку кода, если стиль был явно проигнорирован. Но мне не нравится идея запустить анализатор и указывать на каждую неуместную скобку или отступ, не говоря уже о том, чтобы кого-то подвести.

В заключение: предоставьте гибкость в соблюдении правил стиля, чтобы наилучшим образом удовлетворить потребности вашей команды, но не по произвольным причинам, таким как личные предпочтения.


источник
4
Было бы лучше сказать, что если есть веская причина нарушать правила, то нарушайте их. Невозможно перечислить все веские причины, но я бы сказал, что личное предпочтение - это не одно. В руководстве по стилю Python есть продуманный раздел о том, когда следует нарушать правила.
Майкл Хоффман
1
Автоматическая проверка придирки к стилю может быть полезной: но только в сочетании с простой кнопкой, чтобы применить все рекомендуемые изменения, и способом сказать: «Нет, я нарушил это правило по причине». В зависимости от вашего уровня процесса последнее может быть чем-то, что должно быть обосновано в обзоре кода / и т.д.
Дэн Нили
1
Соблюдение стиля кода настолько важно для моей компании, что PyLint применяет стандарты PEP8 в нашем коде как часть нашего конвейера сборки. Подтверждает, что снижение работоспособности кода автоматически отклоняется.
sethmlarson
1
Проверьте достаточно правил, чтобы получить результат, который вам нужен. Проигнорируйте, обновите или отмените любые, которые вызывают проблемы. Примените подходящее количество здравого смысла для обмена счастья и продуктивности
Шон Хоулихейн
2
За прошедшие годы я пришел к выводу, что единственной действительно полезной частью руководств по стилю является правильное отступление кода. Вам даже не нужно делать одинаковые отступы - просто правильно делать отступы. Руководства по стилю, которые я написал, обычно содержат не более 3 правил (обычно только одно правило - правильно сделайте отступ, чтобы он не выглядел уродливо). Если я захожу в магазин и вижу, что код уже выглядит нормально, я даже не рекомендую использовать стиль кодирования.
slebetman
13

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

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

Помните, что все, и я подчеркиваю, ВСЕ, от ОО-программирования до функциональных парадигм, до различных моделей параллелизма, существует только для того, чтобы помочь людям справиться со сложностью.

Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям. - Мартин Фаулер, 2008

treecoder
источник
Ваш ответ не ясен ДА или НЕТ. Итак, вы говорите, что это действительно необязательно? С отдыхом - согласен.
BЈовић
3
Да, это необязательно, если нарушение действительно помогает (подумайте об унаследованном коде). Нет, если вы делаете это только потому, что вам это нравится, и это не приносит разумной выгоды. Так что я говорю, что ничто не установлено в камне. Сломайте что-нибудь или ничего для конечной цели уменьшения сложности.
Treecoder
3
@ BЈовић Древовидный код по сути говорит о том, что у вас неправильный фокус. Правила не волшебные. Вы не собираетесь волшебным образом делать все лучше, строго придерживаясь правил. Таким образом, вы должны подумать о том, «Что эти правила должны выполнять?» вместо этого, и вы работаете для достижения этой цели вместо этого. Правила сообщают вам, каким должно быть ваше значение по умолчанию; если соблюдение правил работает против цели, которой они были поставлены, то в этом случае им не стоит следовать .
jpmc26
6

Является ли стиль кодирования в организациях необязательной вещью?

Организации предпочитают иметь стили кодирования - нет необходимости иметь их в первую очередь.

Таким образом, цитата, которую вы читаете, касается самой большой проблемы, которую я вижу в кодировании «стиля» и настоящих суперзвезд «хакеров»: вы привели нового парня на борт, и он написал код, который будет сбрасывать зомби и заставлять ваши старые серверы быстро кричать. ... но его стиль кодирования отличается от вашего "принятого организационного стиля". Он отказывается меняться, и процесс для того, чтобы заставить всех соответствовать его определенному стилю, будет трудоемким и дорогим. Что теперь?

Большинство известных мне супер-хакеров имеют такие же эго, как и их навыки, и они хотят, чтобы организация адаптировалась к ним , а не наоборот. Так что, возможно, ваш стандарт стиля кодирования должен быть больше похож на руководство по стилю кодирования, чтобы вы могли позволить этому хакерскому парню-убийце продолжать писать потрясающе быстрый и удивительный код с некоторым отклонением стиля, но будьте уверены, что все остальные понимают это, пока не дойдут до своего эпического хакера статус, они должны следовать правилам (или даже помочь убирать за ним).

Конечно, это управленческий кошмар, но в целом управление техническими людьми немного походит на выпас кошек. Таким образом, у большинства компаний есть «правила стиля», а не «стандарты стиля». И сборки не терпят неудачу, и обзоры кода не терпят неудачу автоматически из-за нарушений стиля во всех компаниях. Вы решаете проблему управления, которую хотите иметь, - позволяете хакерам суперзвезд и иметь «руководящие принципы», или теряете суперзвезд и более согласованное стилевое оформление кода.

Джим
источник
1
Re: «Большинство известных мне супер хакеров приходят с такими же эго, что и их навыки»: я не думаю, что это правда. Может показаться, что у них есть большое эго, потому что они не подчиняются автоматически мнению других, но те, кого я знаю , были очень непредубежденными, если вы можете обосновать то, что вы делаете. (Хотя я не уверен, что "эго" в любом случае является
полной
2
«Большинство известных мне супер-хакеров имеют такое же большое эго, как и их навыки, и они хотят, чтобы организация адаптировалась к ним, а не наоборот». Я сомневаюсь, что любой разработчик настолько хорош, что перевесит такое отношение, и сомневаюсь, что такой инженер будет работать очень долго.
Энди
1
«И сборки не терпят неудачу, и проверки кода не завершаются автоматически из-за нарушений стиля во всех компаниях». На самом деле я работал на компанию, которая действительно пошла по этому пути, и результат был объективно лучше, чем до слабого применения стандарты.
Энди
3

Итак, я что-то неправильно понимаю из этого документа и цитаты в верхней части этого вопроса? Могут ли люди просто игнорировать стиль кодирования?

Это зависит.

В том месте, где я сейчас нахожусь, нет руководства по стилю, и это не имеет большого значения. Между программистами есть некоторые небольшие различия, но не настолько, чтобы влиять на читабельность, обнаруживаемость или согласованность каким-либо значимым образом. И у нас достаточно большая группа и достаточно сильная культура, чтобы обеспечить, что любой новый член команды попадет в линию (или еще).

В предыдущих компаниях мы быстро росли, и у нас были люди, незнакомые с языком и его идиомами. В этой компании приток людей означал, что не было культуры, которая навязывала бы хорошее письмо. И люди, плохо знакомые с языком, означали, что нужно было многое изменить. Там автоматические проверки стиля были наиболее эффективным способом внесения корректировок, а фактическое письменное руководство было лучшим способом обучить новых людей нашим ожиданиям.

Лично мне не очень важны руководства по стилю, и еще меньше меня волнует автоматизированное применение стилей. Если человек не может даже усвоить основные идиомы, почему вы используете их как программиста? И если они настолько плохой командный игрок, что постоянно пишут код, с которым другим трудно работать, почему вы вообще их используете?

Telastyn
источник
1
Просто чтобы ответить на последнюю часть: это было решение высшего руководства передать некоторые библиотеки. И моя команда не имеет никакого влияния на то, кто там работает. Их стиль кодирования совершенно другой.
BЈовић
«У нас достаточно большая группа и достаточно сильная культура, чтобы заставить любого нового члена команды встать в линию». Похоже, у вас есть хотя бы некоторые рекомендации по стилю, они просто не записаны?
@ dan1111 - конечно? Я имею в виду, что они, вероятно, сводятся к тому, чтобы «не разозлить ваших товарищей по команде», но вопрос, заданный специально о документах и ​​публикации.
Теластин
2

Это скорее психологическая уловка вместо некоторой буквальной интерпретации того, как лучше всего управлять стилями кодирования. Это делает команду / компанию / менеджера / лидера менее авторитарной. Я бы сосредоточился на ситуационных исключениях, а не на личных. Независимо от документа кодирования, цель состоит в том, чтобы сделать вещи легкими для чтения. Запутанный код должен быть исправлен и изменен в случае необходимости. Есть много инструментов, чтобы позаботиться о маленьких утомительных вещах, так что используйте их.

Есть исключения из каждого правила. Дайте людям "некоторую" комнату для маневра. Чем меньше всех принимают правила стиля кодирования (добро пожаловать, новый парень), тем больше они склонны сопротивляться. Многие вещи черно-белые, но некоторые открыты для интерпретации.

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

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

JeffO
источник
Итак, вы предлагаете развернуть задание в jenkins, которое собирается переформатировать файл, как только кто-то проверяет что-то? Кстати, «комната для маневра», я думаю, что-то похожее в этом ответе.
BЈовић
Если он выполняет свою работу и не позволяет в течение часа обсуждать что-то, что можно исправить без каких-либо усилий, то почему бы и нет. Ответы схожи, но я думаю, что это больше связано с моральным духом и мышлением команды. Вы можете иметь анархию без стандартов кодирования так же легко, как иметь слишком много.
JeffO
2

Исходя из ваших правок, вы стремитесь к правильной цели.

Использование руководства по стилю имеет много преимуществ, но, на мой взгляд, два наиболее важных - это удобочитаемость кода между членами команды и отсутствие «глупых» коммитов (например, только пробел или дополнительные строки и т. П.).

Чтобы достичь своей цели, выбранное (или созданное) руководство по стилю должно быть простым и легким для соблюдения. Постарайтесь действительно сосредоточиться на том, что вам нужно. Никому не нравится возвращаться и переписывать огромный код, чтобы осчастливить линтера. Но все еще может быть какая-то выгода.

Убедитесь, что члены вашей команды одобряют руководство по стилю. Вы собираетесь придерживаться их, убедитесь, что они согласны, или это будет вечная борьба.

Убедитесь, что нарушения стиля являются «предупреждением», а не «неудачей», пусть человек решает, встречается ли нарушение с ошибкой. Причина этого проста. Я верю в простой рабочий процесс. Если где-то на этапе «тестирования» происходит «сбой», то вы не можете подтолкнуть к производству. Я использую это как безопасность. Даже исправления должны пройти этап тестирования (хотя и более короткий). Неужели вы действительно можете сказать, что вы не будете выдвигать это критическое исправление ошибки в производство, потому что кто-то использовал «вместо»? Как насчет использования цикла for вместо каждого? Что, если цикл for имеет некоторое улучшение по сравнению с каждым? Это решения, которые машина (линтер) не может принять, поэтому убедитесь, что у вас есть человек, судите предупреждение, а не машина выдает сбой.

Что касается игнорирования руководства по стилю, вам придется судить об этом в каждом конкретном случае. Убедитесь, что у «отклонения» есть реальная причина. Они придут. Работа рецензентов заключается в том, чтобы убедиться, что для отклонения есть веская причина, а не тривиальная.

coteyr
источник
0

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

Следует также отметить, что стандартные правила принудительного применения кода прошлых лет, как правило, не так, как сейчас.

В старые времена вы просто держали том в конце рабочего стола разработчиков и цитировали главу и стих, почему его код нарушает раздел 34.5.5767.

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

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

Робби Ди
источник
Предположим, что стиль кодирования идеален, и если это не так, то люди могут изменить его. Разрешено ли людям даже в этом случае игнорировать это?
BЈовић
Сложно сказать - особенно если нет общего консенсуса. Я думаю, что стаж работы разработчика и / или посредничество вступят в игру здесь ...
Робби Ди
0

Ваш вопрос сосредоточен вокруг согласования двух цитат. Я думаю, что написанный древовидный код отвечает на ваш вопрос в целом. Он представляет ваш руководящий принцип в написании руководящих принципов стиля.

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

Таким образом, вы можете примирить два кажущихся противоречия, как это:

Подумайте о первой цитате, адресованной вам как лицу, принимающему решения о стиле, до того, как документ с инструкциями будет завершен. Если определенный стандарт стиля не работает для вашей команды, это считается «сильным личным возражением», и ваши рекомендации будут отражать его.

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

Прайс Джонс
источник
0

Не имеет большого значения, какой стиль кодирования у людей, если у них есть стиль кодирования. Если компания настаивает на стиле кодирования, она сильно наступает на ноги примерно 49% своих разработчиков.

Проблема состоит в том, что большое количество разработчиков не возражают против того, чтобы адаптировать свой стиль кодирования к какому-либо распространенному стандарту в компании, но они очень возражают, когда им говорят те, кто лучше (или просто больше заботится) о политике компании.

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

gnasher729
источник
0

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

Корпорация извлекает выгоду из общего стандарта кодирования. При разработке программного обеспечения для компании необходимо учитывать много важных моментов, например, как мы будем обучать новых разработчиков воспринимать код предыдущего поколения. Когда вы пишете код, вы не всегда думаете об этом. Фактически, многие кодеры предпочитают даже не задумываться о том, как другие захотят подойти к коду через 5 или 10 лет после того, как они ушли. Руководство по стилю кодирования - это способ, с помощью которого корпорация может сосредоточиться на этих 5 и 10-летних целях, упрощая разработчикам возможность работать в более широком плане.

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

Если бы мы «навязали» стиль кодирования, мы бы сейчас пожертвовали ценностью ради ценности позже. Это можно было бы назвать «инвестицией», если бы мы могли быть уверены, что получим отдачу от наших усилий, но любой разработчик, работавший с плохо написанным руководством по стилю кодирования, может засвидетельствовать, что эти «читабельные» выгоды дорого оплачиваются отвлекающими разработчиками. подальше от их кода. По моему опыту, есть только очень небольшое количество случаев, когда применение стилей принудительного кодирования имеет смысл, как правило, для программного обеспечения для уникальных клиентов, где программное обеспечение может использоваться в течение 30 или 40 лет!

Вместо этого я считаю, что наиболее эффективно рассматривать руководство по стилю кодирования как манифест: «Это то, что мы считаем лучшим стилем кодирования для нашей группы». Это куча текучих мыслей, задокументированных словами. Слово «верить» важно: если верования меняются, то вместе с ним должны меняться и руководства по стилю кодирования.

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

Думайте о всей системе как о поле для гольфа. Стиль кодирования прокладывает легкий путь по фарватеру. Если вы придерживаетесь стандарта кодирования, мы позаботимся о том, чтобы жизнь была как можно проще. Чем дальше вы начнете работать, используя свои собственные стандарты кодирования, тем больше вам придется доказать свою ценность в команде.

Если я приеду утром в понедельник и обнаружу, что все выходные вы потратили на решение проблемы, которую мы мучили в течение года, и вы сделали это в своем собственном «специальном» стандарте кодирования, я не собираюсь говорить вам почини это. Я скажу тебе пойти принять душ. Если ваш «специальный» стандарт кодирования является исключительно «особым», я мог бы даже предложить разработчику начального уровня «пересмотреть» код, чтобы распространить знания о том, как работает ваш код, и безоговорочно упомянуть, что если что-то кажется трудным для чтения, он / она должен убери это. В эти выходные вы предоставили компании достаточную ценность, так что не стоит даже упоминать о вопиющих нарушениях стандартов кодирования, которые вы совершили.

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

( Отказ от ответственности: я полностью написал эту реализацию, is_base_ofчтобы решить черную задачу, и заработал каждый бит ада, который я получил за это от старших разработчиков. Я говорю, что оно того стоило. Я все еще получаю веселый пузырь смеха каждый раз, когда я посмотрите, как этот шаблон вклинивается в 7 несвязанных частей спецификации C ++, чтобы сделать что-то удивительное. Примите это, старшие разработчики! Это то, что вы получаете за запрет boostна этот конкретный проект! )

Корт Аммон - Восстановить Монику
источник
-1

Лучше всего использовать автоматический форматировщик кода, который является встроенной функцией практически любой спускаемой IDE и должен существовать практически для любого более или менее распространенного языка программирования. Это незаметно устраняет ненужную работу и трения во время проверки кода.

Вполне разумно требовать от всех разработчиков выработать привычку применять средство форматирования к вновь созданному разделу кода.

Худшее, что вы можете сделать, это потребовать некоторый пользовательский стиль кодирования, который не поддерживает существующий форматировщик кода.

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

Это могут быть некоторые полезные правила, которые форматер не может поддерживать (например, как называть переменные), но если только они остаются, их относительно легко соблюдать.

h22
источник
к сожалению, это не отвечает на вопрос напрямую . +1 в любом случае, за полезные советы и практическое решение о бессмысленном обсуждении стиля. настройте форматтер и покончите с этим.
Бруно Шеппер
Я все еще думаю, что наличие только средства форматирования является лучшим решением для проблемы стиля кодирования, так как оно обеспечивает некоторый согласованный стиль и исключает возможность моббинга без необходимости для всех новых разработчиков неправильно размещать пробелы и концы строк. Я видел, как это действительно хорошо работает в реальных ситуациях, поэтому я рекомендую это решение и не сниму вопрос.
h22
-1

Актуальное решение (не только философия)

Разрешить комментариям кода переопределять пометку и составлять списки этих комментариев, если хотите (как это часто делается с комментариями todo)

Дайте вашим разработчикам возможность работать вне соглашения явно и по причине - и во время проверки кода людьми это может быть исследовано по мере необходимости.

Адам Толли
источник