среда, 18 августа 2010 г.

8/97: Правило бойскаутов

Это перевод The Boy Scout Rule. Автор: Uncle Bob.

Из "97-ми вещей, которые должен знать каждый программист".

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

Что, если мы будем следовать похожему правилу в нашем коде: "Всегда делайте код для commit чище, чем он был, когда вы брали его из репозитория". Не важно, кто был автором этого кода, что если мы всегда будем вкладывать немного усилий, не важно, насколько малых, в улучшение модуля: что мы получим в результате?

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

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

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

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

4 комментария:

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

    ОтветитьУдалить
  2. Ну кто-то пытается конечно воспитывать своих детей, мол вот не делай как дядя, допил бутылку пива, затушил в ней окурок и ушёл, оставив за собой на лавочке кучу "семокo-кожурок" и харчков. Имхо, в России, такого скаутства никогда не будет.

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

    Эге-ге-ей, приежай к нам, в Россию, мужик!

    ОтветитьУдалить
  3. ну я живу в России и для меня "выкидывать ваш мусор в мусорное ведро, а не кидать на пол" тоже является правилом. И среди моих знакомых принято вести себя подобным же образом.
    Это я к тому, что не надо так обобщать на всю страну

    ОтветитьУдалить
  4. Мда, коммитишь "улучшения" в чужих модулях, а потом к тебе вваливается автор и гневно вопит "Кто копался в моём коде?!".
    Лучше уж предложение автору оставлять

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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