Comments 55
Во-первых, если человек использует способ оформления кода отличный от вашего, то не стоит его называть говнокодером.
Во-вторых, все эти стандарты, не более чем условность, а в случае с phpcs это в двойне условность, потому что никто не гарантирует соответствие его самого каким-то стандартам. К примеру, пользовался им в плоть до версии 1.3 после обновления, на которую код, который был валидным в 1.2 вдруг стал не валидным.
>«самые умные» просто используют git commit --no-verify, потому что сейчас им не до ошибок
Самые умные создают алиас для этой команды и вообще забывают об этом недоразумении, и имхо правильно делают.
По-моему лучше, периодически выделять время на чистку кода, чем задалбывать всех каждый раз, при комите.
Во-вторых, все эти стандарты, не более чем условность, а в случае с phpcs это в двойне условность, потому что никто не гарантирует соответствие его самого каким-то стандартам. К примеру, пользовался им в плоть до версии 1.3 после обновления, на которую код, который был валидным в 1.2 вдруг стал не валидным.
>«самые умные» просто используют git commit --no-verify, потому что сейчас им не до ошибок
Самые умные создают алиас для этой команды и вообще забывают об этом недоразумении, и имхо правильно делают.
По-моему лучше, периодически выделять время на чистку кода, чем задалбывать всех каждый раз, при комите.
+1
>По-моему лучше, периодически выделять время на чистку кода, чем задалбывать всех каждый раз, при комите.
К сожалению, такой подход обычно порождает «синдром разбитых окон», о чем хорошо написано в книге «Программист-прагматик» Соблюдать конвенцию — не слишком сложно, и стоит просто приучится делать это на автомате.
К сожалению, такой подход обычно порождает «синдром разбитых окон», о чем хорошо написано в книге «Программист-прагматик» Соблюдать конвенцию — не слишком сложно, и стоит просто приучится делать это на автомате.
+10
> Соблюдать конвенцию — не слишком сложно, и стоит просто приучится делать это на автомате.
Мы уже используем это средство в нашей компании. И то что я регулярно вижу ошибки и тут же исправляю их привело к тому что я стал очень редко допускать их ) Остальные сотрудники отмечают примерно тоже самое.
Мы уже используем это средство в нашей компании. И то что я регулярно вижу ошибки и тут же исправляю их привело к тому что я стал очень редко допускать их ) Остальные сотрудники отмечают примерно тоже самое.
+5
>в плоть до версии 1.3 после обновления, на которую код, который был валидным в 1.2 вдруг стал не валидным.
Ну это нормально произошло ужесточение стандарта в следующей версии.
стандартизация идет шаг за шагом
мы в свое время вводили стандарты кодирования в крупном проекте там тоже все было более сурово с каждым нововведением.
Стандарты нужны и соблюдать и надо перманентно для того чтоб была высокая читаемость кода.
Сколько у вас людей работает одновременно над одним проектом?
Ну это нормально произошло ужесточение стандарта в следующей версии.
стандартизация идет шаг за шагом
мы в свое время вводили стандарты кодирования в крупном проекте там тоже все было более сурово с каждым нововведением.
Стандарты нужны и соблюдать и надо перманентно для того чтоб была высокая читаемость кода.
Сколько у вас людей работает одновременно над одним проектом?
+2
Я использовал стандарт Zend. Там ситуация немного другая, автора снифера и зенды не поделили лицензии и послали друг друга на 3 буквы, в итоге поддержка этого стандарта, является номинальной. В одном проекте использовал анонимные функции, так и не нашел способа их объявления чтоб снивер не ругался, потому что стандарт написан под первый ZF1, а он под PHP 5.2.
Кстати что произойдет, если кто-то добавит в код, к примеру, трит из PHP5.4 или еще что-нибудь новенькое? Он наверное долго будет пытается его закомитить с проверкой на стандарты.
Кстати что произойдет, если кто-то добавит в код, к примеру, трит из PHP5.4 или еще что-нибудь новенькое? Он наверное долго будет пытается его закомитить с проверкой на стандарты.
+1
Что вам мешает написать свой снифер (правила для проверки)? Это не сложно.
+1
Во-первых, если человек использует способ оформления кода отличный от вашего, то не стоит его называть говнокодером.
В проекте может быть только один способ форматирования, так что если разработчик в команде использует своё форматирование, отличное от принятого в проекте, то да — он говнокодер.
+13
что вообще за манера лепить слово говнокодер где не попади?!
В моем понимании это человек, который:
— пишет код, который работает в зависимости от фазы луны;
— не обрабатывает ошибки;
— пишет не семантичный код ( когда метод getObject возвращает к примеру число).
Если вы будете за каждый пробел, человека называть говнокодером, то ваша команда долго не протянет, либо вам устроят темную.
В моем понимании это человек, который:
— пишет код, который работает в зависимости от фазы луны;
— не обрабатывает ошибки;
— пишет не семантичный код ( когда метод getObject возвращает к примеру число).
Если вы будете за каждый пробел, человека называть говнокодером, то ваша команда долго не протянет, либо вам устроят темную.
0
UFO just landed and posted this here
Возьмем, к примеру, меня, я предпочитаю зендовый стандарт, при этом я не могу сказать что человек использующий, к примеру пировский стандарт как вы выразились «срет на меня». У меня есть проекты, написанные в разных стилях, и если мне приходиться там что-то разгребать то не, потому что они оформлены в не моем стиле, а потому что код кривой.
Имхо хороший не зависит от какогото стандарта, количества коментариев, это код который интуетивно понятен и логичен. Ну нравится человеку открывать фигурную скобочку на новой/тойже строке, помоему это не большая проблема, и уж точно неповод для открытых конфликтов
Имхо хороший не зависит от какогото стандарта, количества коментариев, это код который интуетивно понятен и логичен. Ну нравится человеку открывать фигурную скобочку на новой/тойже строке, помоему это не большая проблема, и уж точно неповод для открытых конфликтов
+1
Код в разных стилях в рамкох одного проекта просто мозолит глаза, и лично я всегда использую стиль проекта в котором учавствую. Но есть и более существуенные проблемы. Я, на самом деле, вообще не слежу за тем сколько пробелов я поставил и где — ИДЕЯ за меня все и так автоматически реформатит. Так вот, когда я начну пользоваться этим в чужом файле — она отреформатит весь файл, в результате маленькие изменения првевратятися в большие, что совершенно не удобно.
+1
Лучше делать code review глазами, чем проверять на несущественные ворнинги роботами.
0
Это совсем не условность, а острая необходимость, если над проектом работает больше 1 человека и хоть кого-то заботит будущая поддержка продукта. Ваше отношение подходит только к работе в одиночестве. Тем более, что если уж лень тратить время на соблюдение стандарта, то на «периодическую чистку кода» его не будет совсем.
0
> Во-первых, если человек использует способ оформления кода отличный от вашего, то не стоит его называть говнокодером.
А какой стиль правильный? Вы никогда никому не докажете что ваш стиль лучше чьего-то. Для этого и есть стандарты и их следует соблюдать.
А какой стиль правильный? Вы никогда никому не докажете что ваш стиль лучше чьего-то. Для этого и есть стандарты и их следует соблюдать.
0
причем тут стиль оформления кода к говнокодерству?
Нельзя человека, который пишет натюрморты называть плохим художником, только по тому, что вы предпочитаете пейзажи.
Нельзя человека, который пишет натюрморты называть плохим художником, только по тому, что вы предпочитаете пейзажи.
0
Особенно весело, когда каждый разработчик генерирует 100500 изменений, потому что его стиль кодирования ему больше нравится. Т.е. вместо правки 1 строки трогает либо сам либо своим IDE весь файл, что конечно же не облегчит code review и будет загрязнять проект лишними данными
0
UFO just landed and posted this here
>Нельзя человека, который пишет натюрморты называть плохим художником, только по тому, что вы предпочитаете пейзажи.
Правильно, нельзя. Но я напрямую никого не обвиняю в своем посте. Просто это наболело и те кому приходилось столкнуться с этим наверняка поймут меня.
Правильно, нельзя. Но я напрямую никого не обвиняю в своем посте. Просто это наболело и те кому приходилось столкнуться с этим наверняка поймут меня.
0
> Просто это наболело и те кому приходилось столкнуться с этим наверняка поймут меня.
Из личного опыта могу сказать, что с годами приходит понимание и терпимость. И неправильный перенос строки уже не вызывает такого желания размозжить человеку голову.
Из личного опыта могу сказать, что с годами приходит понимание и терпимость. И неправильный перенос строки уже не вызывает такого желания размозжить человеку голову.
0
неправильный перенос — возможно. А вот множество однострочных конструкций, отсутствие коментариев ко всему что только можно, именование методов и классов, табы вперемешку с пробелами, 10-20 ретурнов в одном методе и тому подобные красоты, вызывает множество свойких желаний…
Так что CodeSniffer — это TRUE
Так что CodeSniffer — это TRUE
0
Для того чтобы наказать говнокодеров
Думаю говнокодеров не стоит брать на работу вообще…
А вот новичкам проекта полезно будет чтобы запомнить code-style проекта
-1
Все замечательно, только хук надо вешать не на pre-commit, а на update в мастере.
0
не совсем понял? в локальном репозитории или удаленном? и почему именно в мастере?
0
Под мастером я подразумевал не ветку, а удаленный репозиторий в который отправляют свои комиты (куда делается git push).
0
У меня две проверки, при коммите на локальном и при добавлении на удаленный. На удаленном отправляется email старшему разработчику.
0
На локальном, ИМХО, хук вообще не нужен:
- можно проскипать при помощи --no-verify
- можно его вообще снести или временно отключить
- мешает быстренько закомитить локально (например, в конце рабочего дня, а завтра причесать)
- сложнее поддерживать, если пишете свои правила для проверки
0
так идея не в том чтобы отловить ошибки а чтобы их не было. Каждый за собой следит локально, а для нарушителей есть проверка удаленно.
>сложнее поддерживать, если пишете свои правила для проверки
Да в этом есть сложность. У нас в офисе на каждой машине есть папка смонтированная с сервера, для самых разных нужд. В ней же и лежат правила проверки. Таким образом все смотрят в одно место.
Вроде есть какая то возможность настроить PEAR чтобы он искал правила удаленно — это может понадобиться для распределенной команды. Но я пока с этим не разбирался.
>сложнее поддерживать, если пишете свои правила для проверки
Да в этом есть сложность. У нас в офисе на каждой машине есть папка смонтированная с сервера, для самых разных нужд. В ней же и лежат правила проверки. Таким образом все смотрят в одно место.
Вроде есть какая то возможность настроить PEAR чтобы он искал правила удаленно — это может понадобиться для распределенной команды. Но я пока с этим не разбирался.
0
1 и 3 пункты немного противоречат друг другу :)
0
А ещё можно этот шаг добавить в пайплайн Continuous Integration сервера
+1
Да, интересная тема.
Что то видел об этом в PHPUnderControl. Есть примеры готовых связок сервера CI и скриптов проверки?
Что то видел об этом в PHPUnderControl. Есть примеры готовых связок сервера CI и скриптов проверки?
0
jenkins-php.org/ — я такой вот конфиг юзаю в качестве базового
0
btw, вот ещё интересный набор снифоф для юнит тестов: github.com/elblinkin/PHPUnit-CodeSniffer
руки пока не дошли, но вообще по статьям — вполне интересные
руки пока не дошли, но вообще по статьям — вполне интересные
0
На маджентовском проекте подобное хотели заимплементить, только в связке с гиториусом. Так как проект уже не новый (~25к комитов в истории). Идея была в том, чтобы запускать checkstyle только для того кода, который пушается, но потом сбились на проверку только тех файлов, которые затрагивает пуш. Когда были ошибки — не давали сделать пуш, но это как-то неправильно оказалось. Идея с письмом намного интереснее, спасибо вам.
0
>>Сравнительно недавно появился набор правил для проверки стандартов кодирования Drupal
пфф лучше б эти идиоты ядро нормальное запилили.
пфф лучше б эти идиоты ядро нормальное запилили.
-1
UFO just landed and posted this here
Интересно, как быть если в проекте с одним стилем, понадобилось подключить библиотеку из проекта с другим стилем.
Например в Drupal сделан модуль с кусками Zend. Получается код модуля должен быть оформлен в одном стиле, Zend классы при этом оформлены в другом, все это идет скопом в коммит, на что естественно в ответ будут матюки от hook'ов.
Интересно если подключить сторонник классы как модуль, git вызовет для них эти hook'и и если не вызовет (то есть все ок и так и надо делать) то как быть если сторонник классы хостятся не на git, а к примеру на svn
Например в Drupal сделан модуль с кусками Zend. Получается код модуля должен быть оформлен в одном стиле, Zend классы при этом оформлены в другом, все это идет скопом в коммит, на что естественно в ответ будут матюки от hook'ов.
Интересно если подключить сторонник классы как модуль, git вызовет для них эти hook'и и если не вызовет (то есть все ок и так и надо делать) то как быть если сторонник классы хостятся не на git, а к примеру на svn
0
для этого, хук должен быть настроен так, что сторонние либы не проверялись. Так же как и устаревшие, архивные проекты например.
0
Для этого я хочу в следующем обновлении сделать конфиг, который возможно стоит добавлять в контроль версий, чтобы он был доступен для локального и удаленного скриптов проверки и был общим для каждого из разработчиков.
В этом конфиге, можно будет указывать файлы и папки которые не нужно проверять, например ядро Drupal, сторонние модули и features.
В этом конфиге, можно будет указывать файлы и папки которые не нужно проверять, например ядро Drupal, сторонние модули и features.
0
Хук вызовется при любом комите.
Надо PHP Code Sniffer скармливать только то, что нужно проверять, а не все, что есть в комите.
Насколько просто это сделать зависит от архитектуры.
Надо PHP Code Sniffer скармливать только то, что нужно проверять, а не все, что есть в комите.
Насколько просто это сделать зависит от архитектуры.
0
А лучше расположить на сервере и не post-receive, а pre-receive, чтобы вообще не давать коммитить нестандартный код.
Мы в наших проектах успешно используем подобный хук, но с настройками для игнора некоторых файлов и каталогов. Планирую его доработать, чтобы можно было настраивать уровень «фашизма» при проверке стандарта, т.к. иногда нужно быстро запушить код для фикса ошибки, а причесать его можно и потом.
Мы в наших проектах успешно используем подобный хук, но с настройками для игнора некоторых файлов и каталогов. Планирую его доработать, чтобы можно было настраивать уровень «фашизма» при проверке стандарта, т.к. иногда нужно быстро запушить код для фикса ошибки, а причесать его можно и потом.
0
Так это замечательная вещь!!! Ведь соблюдения единого стиля кода на проекте очень важно! У меня раз человек на проекте 10 раз переписывал свой код, потому что мне по стилю не нравилось, но для этого мне приходилось проверять, что он коммитил. Так намного легче! Спасибо!
0
Или т.н. «стандарты кодирования» описаны их автором в виде настроек для IDE которой пользуется вся команда или это потеря времени, а т.н. «лиду» рановато пока быть «лидом».
-1
Статья обновлена. Добавлена возможность исключить файлы и директории из проверки используя конфигурационный файл.
0
Ссылки в статье не кликабельные. Печаль.
0
Извиняюсь что так получилось, я добавил рабочую ссылку на скрипты. Надеюсь вам это будет полезно.
0
Sign up to leave a comment.
Проверка соблюдения стандартов кодирования РHP через git