Подтвердить что ты не робот

Стиль кодирования: как улучшить стиль и стандарты кодирования в компании

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

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

Как оправдывается то, что что-то есть над чем-то другим?

Один человек может сказать: "Я двигаю своим телом туда, где я зарабатываю деньги с помощью своего 4-колесного автомобиля". Так почему же более "правильно" сказать "я еду на работу в свою машину"?

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

// Explicit
string text = defaultValue;
if (string.IsNullOrEmpty(text)) {
   text = fallbackValue;
}
// Tighter
string text = defaultValue ?? fallbackValue;

Или старый защитный стиль программирования, где вы проверяете ошибки в начале и не обертываете тело всего метода внутри положительного if-clause:

public string ChangeText(string text)
{
    if (!string.IsNullOrEmpty(text))
    {
        // Do a lot of stuff 
    }
    else {
        throw new Exception();
    }
}
// vs.
public string ChangeText(string text)
{
    if (string.IsNullOrEmpty(text)) {
        throw new Exception();
    }
    // Do a lot of stuff
}

Является ли старый "У меня проблемы с чтением этого кода" здесь? В той же ситуации, когда Generics был представлен С#, у людей была начальная проблема с ее чтением.

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

Какая часть Фила Хаакса " 7 Этапов нового языкового горящего ключевого слова" имеет здесь действительные баллы?

Есть ли какие-либо простые способы установить стандарты кодирования и поддерживать их в компании?

ОБНОВЛЕНИЕ. Учитывайте такие вещи, как имя переменной, которая не может быть определена в документе. Или может это?

4b9b3361

Ответ 1

Самый простой способ установить стандарты кодирования в компании:

Создать документ стандартов и обеспечить его выполнение.

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

Ответ 2

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

Вы можете отключить или изменить правила, которые вам не нравятся

Ответ 3

Существуют две основные стороны стиля кодирования:

  • "Где я могу положить открытую скобу?" типа - это, как правило, неважно, т.е. нет реальных причин предпочесть один стиль над другим.
  • Фактические правила кодирования, как мы используем return в середине функции.

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

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

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

Например, даже как совершенно новый Java-программист, я знал, когда в верхнем или нижнем регистре мои идентификаторы просто потому, что Eclipse позволяет мне (тихо, ненавязчиво) знать, что такое стандарт.

Ответ 4

Во-первых, вам всегда нужно будет применять стили кодирования - никогда не будет согласия.
Вот почему я бы попытался автоматизировать проверку на согласованность. В зависимости от вашего языка вы можете использовать StyleCop (для .Net) или что-то вроде отступа под Linux.

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

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

Ответ 5

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

Существует множество инструментов для (автоматического) проверки и обеспечения соблюдения стиля кодирования. (Примером для java-мира является checkstyle, который может быть интегрирован в eclipse, а также в непрерывное интеграционное решение, такое как "hudson".)

Ответ 6

Как оправдывается то, что прямо над чем-то еще?

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

Ответ 7

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

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