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

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

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

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

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

Править:

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

8
задан Ben 7 December 2013 в 10:02
поделиться

14 ответов

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

К счастью, гораздо проще составить набор стандартов для именования.

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

14
ответ дан 3 November 2019 в 12:49
поделиться

Решение сводится к следующему:

<style>
.rowon {
 background-color:#dedede;
}

.rowoff{

}
</style>

В шаблоне:

<#list items as item>
    <tr  class="<#if item_index % 2 ==0>rowon<#else>rowoff</#if>"><td>${item}</td></tr>
</#list>

Однако, как указано в предыдущем ответе, это можно сделать с CSS, без этого решения freemarker (см. http://www.w3.org/Style/Examples/007/evenodd ):

<style>
.striped tr:nth-child(odd) {background: #eee}
.striped tr:nth-child(even) {background: #fefefe}
</style>

А затем просто использовать обычную таблицу без классов на строках:

<table class="striped">
 <tr><td>hello</td></tr>
 <tr><td>hello</td></tr>
 <tr><td>hello</td></tr>
 <tr><td>hello</td></tr>
</table>

ИЛИ с freemarker сгенерированной таблицы:

<table class="striped">
<#list items as item>
    <tr><td>${item}</td></tr>
</#list>
</table>

Так что это

-121--3760516-

Флаг СРОЧНЫЙ можно установить с помощью send () с установленным флагом MSG _ OOB . Как следует из этого, передаваемые данные являются внеполосными, что означает, что они обычно не принимаются вызывающей стороной, просто вызывающей read () . Приемная сторона получает некоторую индикацию данных OOB, например, сигнал SIGURG , или разъем становится исключительным и может быть проверен с помощью select () .

Чаще всего вы не хотите устанавливать флаг СРОЧНЫЙ.

-121--4268346-

В зависимости от языка, который вы используете, вы можете купить интеллектуальные переформататоры, которые будут брать исходный код и массировать его, НЕ изменяя действительное значение (DUH!), как раз на любой «стандарт кодирования» (читать: произвольные правила об отступе, стиль скобки и все такое), что вы хотите.

Один из них, на который я смотрел на днях, стоит около 35 000 долларов США 1, 1000 долларов США для лицензии сайта. Это куриный корм. Ты, наверное, тратишь больше, чем на туалетную бумагу.

Запустите модуль переформатирования в рамках процедуры проверки исходного кода и не беспокойтесь об этом.

1
ответ дан 3 November 2019 в 12:49
поделиться

Может быть, вы могли бы иметь что-то вроде getView () в документе , переопределяя его в каждой реализации?

-121--2948908-

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

Представьте, что на более позднем этапе добавляется новый тип Документ (например, Электронная таблица ). Требуется только добавить объект Электронная таблица (наследующий от Документ ), чтобы все работало. Следовательно, Электронная таблица должна обеспечивать возможность отображения самой себя.

Возможно, он может сделать это автономно. Например,

new Spreadsheet().display();

Возможно, он может сделать это в сочетании с представлением, например, механизмом двойной отправки

new Spreadsheet().display(view);

. В любом случае электронная таблица/письмо/электронная почта будет внедрять этот метод view () и отвечать за дисплей. Ваши объекты должны говорить на каком-то видовом агностическом языке. например, в документе написано «отобразить это полужирным шрифтом». Затем представление может интерпретировать его в соответствии с его типом. Должен ли ваш объект знать о представлении? Возможно, ей нужно знать возможности, которыми обладает эта точка зрения, но она должна уметь говорить таким агностическим образом, не зная деталей точки зрения.

-121--2948906-

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

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

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

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

0
ответ дан 3 November 2019 в 12:49
поделиться

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

0
ответ дан 3 November 2019 в 12:49
поделиться

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

К счастью, гораздо проще составить набор стандартов для именования.

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

-121--3438958-

Существует стандарт для PHP?

(Cue понижает количество)

-121--3438969-

Я согласен с тем, что должны быть стандарты. Я выбрал определенный набор параметров автоматического форматирования в Visual Studio 2008, и все остальные разработчики импортировали эти параметры настройки.

Среди проблем, с которыми можно легко столкнуться с различными стилями, - печально известные места и вкладки. В VS 2008 иногда возникает ситуация, когда смешанные стили отступов и нажатие Ctrl-E, D для форматирования всего документа могут привести к сбою VS.

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

Изменить: Что касается широты, у меня есть некоторые рекомендации для моих разработчиков относительно правил именования и удобочитаемости, но не строгие правила, кроме форматирования (какая линия фигурной скобки продолжается и так далее). Я бы не возражал, если бы один из них поставил частные поля внизу или наверху. Если бы я добавил новый, я бы подражал.

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

0
ответ дан 3 November 2019 в 12:49
поделиться

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

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

0
ответ дан 3 November 2019 в 12:49
поделиться

Во-первых, раз уж вы заговорили о венгерской нотации, вот обязательная ссылка на статью Joel's Making Wrong Code Look Wrong. :-) В ней обсуждается использование венгерского языка в том, что Джоэл считает хорошим и плохим способами.

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

2
ответ дан 3 November 2019 в 12:49
поделиться

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

0
ответ дан 3 November 2019 в 12:49
поделиться

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

редактировать, чтобы отразить OP править

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

для (int i = 0; i

vs

для (int count = 0; count .

Последний вариант более читабелен и нагляден, чем первый.

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

3
ответ дан 3 November 2019 в 12:49
поделиться

Есть стандарт для PHP?

(Cue downvotes a-plenty)

4
ответ дан 3 November 2019 в 12:49
поделиться

Что бы вы ни называли своими стандартами, ваши фактические стандарты - это то, что вы обеспечиваете.

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

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

Вы этого не хотите.

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

8
ответ дан 3 November 2019 в 12:49
поделиться

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

Похоже, что вы уже используете zsh; пару дней назад я помог обновить поддержку Mercurial для встроенного VCS _ INFO для размещения информации VCS в вашем запросе. Для следующей версии предусмотрена поддержка отображения изменений в рабочем каталоге (среди прочего). Если вы не хотите ждать, вы можете получить необходимые файлы из CVS .

На данный момент мое приглашение включает следующее (используя только встроенную функциональность zsh):

   (hg)[1801+ branchname somemq.patch, anycurrentbookmarks]
-121--3279109-

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

-121--3311415-

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

1
ответ дан 3 November 2019 в 12:49
поделиться

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

1
ответ дан 3 November 2019 в 12:49
поделиться

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

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

  1. Табуляторы, а не пробелы.
  2. Стиль крепления C ++ (отдельные строки)
  3. Всегда помещайте фигурные скобки для блоков кода.
  4. Функция имеет название Module_VerbObject [прилагательное], например GraphicsContext_DrawRectangle ()
  5. включает операторы в определенном порядке
  6. Комментарии, в которых функции содержат более 10 строк
  7. Определенные ключевые слова в комментариях (OPTIMIZE, DONOTTOUCH и т. Д.)
  8. Никаких ругательств, именования / осуждения / обвинения в коде или комментарии

Преимущества были:

  1. Гармония - каждый мог прочитать код любого другого.
  2. Новые сотрудники могли начать работу с любой частью кода, а не только с «хорошими вещами».
  3. Мы могли бы использовать ловушки для контроля версий, чтобы искать проблемы на нескольких платформах (это было за несколько дней до непрерывной интеграции).
  4. Лучшее время сборки (включая упорядочение операторов и т. Д.)
  5. Выглядел замечательный фрагмент Perl-скрипта для распространенных ошибок, таких как отказ от проверки на сбой malloc () и т. д. Это было бы невозможно без согласованных стилей кодирования.

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

2
ответ дан 3 November 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: