Во-первых, я сопровождаю PHP_CodeSniffer, поэтому я явно предвзято отношусь к этому вопросу. Но я также работал над некоторыми большими кодовыми базами за 10 лет работы в качестве разработчика PHP, поэтому я надеюсь, что смогу привести некоторые конкретные причины, по которым стандарты кодирования - это хорошо. Я мог бы написать серию блогов по этой теме, но я просто расскажу вам небольшую историю о том, как появился PHP_CodeSniffer, чтобы вы могли понять проблему, которую инструмент решил за меня.
Я работал над несколькими крупными проектами CMS. У первого была куча кода и относительно небольшая команда разработчиков. У нас не было стандартов. Но настоящих проблем у нас не было. Команда была небольшой и пробыла вместе довольно долго. Мы привыкли друг к другу.
Затем мы создали новую CMS. Мы начали все заново, всего с парочкой разработчиков. Тогда я был частью команды, состоящей всего из двух разработчиков. Опять же, стандарты кодирования не вызывали у нас никаких проблем. Я и другой разработчик пришли из одного и того же опыта и уже установили некоторые правила, которым мы следовали. Тогда нам не был нужен PHPCS.
Но эта команда росла по одному разработчику и в конечном итоге достигла 12 штатных разработчиков, и довольно много пришло и ушло. Некоторые пришли из старой CMS, а некоторые пришли из-за пределов компании. У всех разный опыт и разный подход к развитию. Было очевидно, кто какой код пишет, потому что стили были такими разными. Всякий раз, когда вы работали над чем-то сложным, вам сначала нужно было приспособиться к их стилю, потому что это было не так, как вы привыкли видеть код. Это как впервые прочитать Шекспира. Вам нужно привыкнуть к этому, прежде чем вы сможете читать в своем естественном темпе.
Для разработчиков это дополнительное время, чтобы остановиться и придумать другой стиль программирования, - пустая трата времени. Это шанс для идеи ускользнуть, пока вы увязли в интервалах, отступах и положении скобок. В конце концов, эти вещи просто не имеют значения. Но позвольте мне сказать вам, что они имеют большое значение, если заставляют разработчиков прерывать процесс. Поэтому нам нужен был способ заставить их уйти с дороги и позволить разработчикам делать то, что у них получается лучше всего.
В то же время мы еще больше углубились в JavaScript. Новый язык, в котором стиль вообще был выброшен из окна. Код был скопирован / вставлен с сайтов-примеров и смешан. Когда вы учитесь разрабатывать сложный код на новом языке, имело смысл найти способ сделать наш JS похожим на наш PHP. Мы можем минимизировать это позже, но нам нужно было иметь возможность быстро переключаться между языками, опять же, чтобы сохранить наш поток.
Для этого был создан PHP_CodeSniffer. Это помогает разработчикам работать с одним и тем же стилем кодирования, чтобы полностью избавиться от форматирования и других проблем с флейм-приманкой. Это позволяет вам относиться к вашему JS как к вашему PHP. Я использую его для обнаружения специфических запахов продукта, таких как непереведенные строки или разработчики, не использующие наш правильный код включения класса. Я также использую его для специфичных для языка запахов, например, чтобы убедиться, что запятая JS, убивающая IE, не осталась без внимания. Вы можете использовать его для чего угодно. Он поставляется с кучей сниффов, которые легко объединить вместе с помощью XML-файл набора правил. Вы также можете написать свой собственный. Вы можете интегрировать сторонние инструменты, чтобы сделать его универсальным для статического анализа кода. Вы можете настолько серьезно относиться к стандартам и запахам кода, насколько захотите.
PHP_CodeSniffer, как и любой инструмент разработчика, должен работать на вас. Вы не работаете на это. Если он вызывает слишком много ошибок, которые вам не нужны, настройте стандарт, чтобы удалить те, которые вам не нужны, или превратите ошибки в предупреждения. Но если моя история звучит так, как будто вы переживаете или можете пройти через это в будущем, стоит внимательно изучить PHP_CodeSniffer, чтобы узнать, может ли он вам помочь.
Я надеюсь, что это поможет вам и другим понять, почему стандарты кодирования действительно важны для некоторых проектов и разработчиков. Дело не в деталях. Речь идет об удалении стиля кодирования из списка вещей, которые заставляют разработчиков терять фокус.
person
Greg Sherwood
schedule
12.05.2011