Считаете ли вы, что компания-разработчик программного обеспечения должна навязывать разработчикам стиль кодирования?[закрыто]

StackOverflow https://stackoverflow.com/questions/145508

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Если да, то насколько глубокими, по вашему мнению, должны быть руководящие принципы?Например, должен быть включен отступ в коде?

Это было полезно?

Решение

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

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

Другие советы

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

  1. Клонируйте одного разработчика несколько раз и убедитесь, что все они проходят одинаковое обучение.Надеюсь, все они смогут написать одну и ту же кодовую базу.
  2. Дайте вашим существующим разработчикам четкие инструкции о том, что вам требуется.Символы табуляции или пробелы для отступов.Где сидят брекеты.Как прокомментировать.Рекомендации по фиксации в системе управления версиями.

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

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

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

Если вы в сети .Загляните в stylecop, fxcop и Resharper

Считаете ли вы, что компания-разработчик программного обеспечения должна навязывать разработчикам стиль кодирования?

Не по принципу "сверху вниз".Разработчики в компании-разработчике программного обеспечения должны договориться об общем стиле кодирования.

Если да, то насколько глубокими, по вашему мнению, должны быть руководящие принципы?

Они должны описывать только отличия от хорошо известных конвенций, стараясь, чтобы отклонения были минимальными.Это легко для таких языков, как Python или Java, несколько размыто для C / C ++ и почти невозможно для Perl и Ruby.

Например, должен быть включен отступ в коде?

Да, это делает код намного более читабельным.Поддерживайте согласованность отступов с точки зрения пробелов и табуляции и (если вы выбираете пробелы) количества символов пробела.Кроме того, договоритесь о марже (например,76 символов или 120 символов) для длинных строк.

Да, но в пределах разумного.

Все современные IDE предлагают вывод кода одним нажатием клавиши, поэтому пункт "отступ", на мой взгляд, совершенно неуместен.

Что еще более важно, так это внедрение передовой практики:например, используйте как можно меньше параметров "out" или "ref"...В этом примере у вас есть 2 преимущества:улучшает читаемость, а также исправляет множество ошибок (многие исходящие параметры имеют неприятный запах кода и, вероятно, должны быть переработаны).

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


Хорошее замечание Хэмиша Смита:

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

Я не верю, что у команды разработчиков должны быть рекомендации по стилю, которым они должны следовать как общему правилу.Есть исключения, например использование <> против"" в #включить инструкции, но эти исключения должны исходить из необходимости.

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

for( int n = 0; n < 42; ++42 ) {
 // blah
}

...когда они привыкнут видеть это:

for(int n = 0; n < 42; ++42 )
{
 // blah
}

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

Наконец, если Джо потребовалось 10 минут на отступы и перемещение фигурных скобок, чтобы Билл мог потратить на просмотр кода на 3 секунды меньше, действительно ли это сэкономило время, заставив Билла сделать что-то, что для него не естественно?

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

Кроме того, это не так уж и сложно, учитывая современные IDE и их возможности автоформатирования.

P.S:У меня есть эта раздражающая привычка ставить фигурные скобки на следующую строку :).Похоже, больше никому это не нравится

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

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

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

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

В качестве дополнительного примечания, вот почему я люблю Python;потому что это уже налагает довольно много правил о том, как структурировать ваши приложения и тому подобное.Сравните это с Perl, Ruby или чем-то еще, где у вас есть крайняя свобода (что не так уж хорошо в данном случае).

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

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

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

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

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

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

Лучшим вариантом (опять же, IMO) является выдача предупреждений во время компиляции (или что-то подобное), если ваша среда сборки поддерживает это.Настроить это несложно в VS.NET, но я не знаю о других средах разработки, которые имеют аналогичные функции.

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

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

Как и закон.Или английский язык.

Руководства по стилю должны быть настолько глубокими, насколько они хотят быть - если это всплывет во время мозгового штурма, оно должно быть включено.Странно, как вы сформулировали вопрос, потому что, в конце концов, нет никакого способа "навязать" руководство по стилю, потому что это всего лишь РУКОВОДСТВО.

RTFM, затем соберите все хорошее и продолжайте в том же духе.

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

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

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

ДА.

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

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

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

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

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

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

Важные рекомендации включают (в произвольном порядке):

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

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

Я бы согласился, что последовательность - это ключ к успеху.Вы не можете полагаться на IDE pretty-printing, чтобы спасти положение, потому что некоторым вашим разработчикам может не понравиться использование IDE, и потому что, когда вы просматриваете кодовую базу из тысяч исходных файлов, просто невозможно распечатать все файлы pretty, когда вы начинаете работать над ними, и выполнить откат после этого, чтобы ваш VCS не пытался зафиксировать все изменения (засоряя репозиторий ненужными обновлениями, которые обременяют всех).

Я бы предложил стандартизировать, по крайней мере, следующее (в порядке убывания важности)::

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

Мое мнение:

  • Некоторые основные правила хороши, поскольку это помогает каждому читать и поддерживать код
  • Слишком много правил - это плохо, поскольку это мешает разработчикам внедрять инновации, предлагая более четкие способы компоновки кода
  • Индивидуальный стиль может быть полезен для определения истории файла кода.Можно использовать инструменты Diff / blame, но подсказка все равно полезна

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

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

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

Магазин, в котором я работаю, не имеет единого стандарта кодирования, и я могу сказать, что мы (как команда) сильно страдаем от этого.Когда нет воли отдельных сотрудников (как в случае с некоторыми моими коллегами), руководителю группы приходится стучать кулаком по столу и навязывать ту или иную форму стандартизированных рекомендаций по кодированию.

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

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

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

Стандарты кодирования:ДА.По причинам, уже описанным в этой теме.

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

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

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

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

Существует два типа соглашений.

Соглашения типа А:"пожалуйста, сделай это, так будет лучше".

и Тип B:"пожалуйста, езжайте по правой стороне дороги", в то время как можно ехать по другой стороне, при условии, что все делают то же самое.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top