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

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/23792

Вопрос

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

Кроме того, хорошее количество кода не является надежным. Много раз код быстро подталкивается к производству более опытными программистами, в то время как код новых программистов сдерживается «обзорами кода», что IMO неудовлетворительные. (Обычно они принимают форму «Это работает, должно быть в порядке», чем серьезная критика кода.) У нас есть довольно много проблем с производством, которые, по моему мнению тестирование.

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

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

Решение

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

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

Что значит для вас чистый код?

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

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

Так что соберите команду и начните работать над общим определением «Чистый код»! В этом нет жестких правил. Вы пытаетесь собрать несколько умов вместе, и это может привести к конфликтам, поэтому вы можете захотеть подготовить почву с положительным заметком, что вы все должны быть уважительными и сохранять непредвзятость (написание кода является личным ...).

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

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

DO CODE Reviews

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

Определите стандарт и придерживайтесь его

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

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

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

Мои статьи уникальны, насколько я знаю, в том, что я охватываю оба Стороны прохода: проведение обзора кода как автор и провести обзор кода как рецензент. Анкет Хотя это связано, навыки для каждого несколько разные. И способность делать оба хорошо будут привести к лучшему качеству кода. Обзор кода так же важен, как и код написания. Действительно. Это способствует передаче знаний, поощряет согласованность команды и общение, помогает вам улучшить ваше ремесло и, наконец, что не менее важно, оно снижает программное обеспечение Buggy очень экономически эффективно-от как можно ближе к созданию.

Первые два предоставляют советы и методы для подготовка Обзор кода. В двух словах:

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

Часть 1: Предварительные комментарии: Обнаружение вашим коллегам дать вам лучшие отзывы о вашем обзоре кода

Часть 2: Лучшие практики: Руководство по подготовке проверки кода

А две другие статьи дают практические советы о том, как стать лучшим рецензентом:

  • Прочитайте Jira/Issue/Ticket/Ticket/Tealtion (как бы вы это ни называли).
  • Убедитесь, что модульные тесты охватывают требования.
  • Просмотрите модульные тесты на класс эквивалентности и полноту граничного значения.
  • Убедитесь, что каждый модульный тест делает достаточно, не тестируя несколько вещей.
  • Просмотрите код для соблюдения солидных принципов.
  • Остерегайтесь повторного изобретательного колеса, чрезмерного кода и просто сложного кода.
  • Уходите к магии (волшебные струны, магии INT и, да, даже волшебные логические).
  • Поймайте эффект бабочки-есть ли множество пропущенных (например, несоответствия именования).

Часть 3: Сказка рецензента: Руководство по проведению проверки кода

Часть 4: Просмотрите, как будто у вас есть код

Подавать пример. Проверьте ваш код.

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

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

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

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

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

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

Моя компания делает это довольно много, и, хотя все еще есть те, кто упорно отказывается быть заинтересованным, общая осведомленность о таких проблемах растут - и общее состояние нашей кодовой базы улучшается. Даже курс «Основной С», который мы провели в течение нескольких раундов, оказался поучительным для разработчиков, которые писали С в течение целых 10-15 лет. Не потому, что они плохие программисты, а потому, что вы склонны впадать в привычки и забывать, почему, и что язык и коллективный опыт о том, как его использовать, тоже медленно меняется.

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