Pull to refresh

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Website development *CSS *Perfect code *HTML *IT Standards *
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

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

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Total votes 335: ↑318 and ↓17 +301
Views 306K
Comments 244

Пора завязывать использовать символы табуляции в коде

PVS-Studio corporate blog

единорог и табуляции


Многие могут счесть спор, о том, что лучше пробелы или табуляции в коде за holy wars. Однако нет, я не хочу устраивать дискуссию на эту тему. Я однозначно утверждаю, что в обязательном порядке следует использовать пробелы. И разговор и «предпочтении того или иного» здесь не уместен. Как не уместно в наше время обсуждать, что удобнее, компьютер или печатная машинка. Поскольку печатные машинки закончили свое существование, ориентироваться в дальнейшем на их использование, по меньшей мере, нерационально. А если ещё учесть, сколь удобнее пользоваться компьютером для набора текста, то вопрос выбора просто отпадает.



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


Читать дальше →
Total votes 492: ↑258 and ↓234 +24
Views 40K
Comments 217

Пора завязывать использовать пробелы вместо табуляции в коде

Programming *

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

Читать дальше →
Total votes 513: ↑389.5 and ↓123.5 +266
Views 86K
Comments 407

Умный хак об употреблении пробела после имени функции (перед последующей скобкою)

Programming *
Как известно, в употреблении пробела после имени функции (перед последующей скобкою) есть два пути во всех тех языках, в которых после имени функции бывают скобки (например, в Си, в Си++, в PHP, в JavaScript…).

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

Руководствуясь соображениями экономии пробела, большинство авторов стилей и стандартов кодирования приходят к представлению о правильности первого из этих путей. Можно убедиться в этом на примере стандартов кодирования PHP: стандарты PEAR ([1], [2]), Zend, Symfony, CakePHP, DB Medialab, evolt.org, GForge, а также nIx0iDовский собственный стандарт все, все они своим примером рекомендуют воздерживаться от пробела.

Однако сравнительно недавно я увидал в Интернете (не то на Хабрахабре, не то на другом подобном сайте) проповедь третьего пути: ставить пробел после имени функции (и перед последующей скобкою) только в определении этой функции, однако не ставить пробел при вызове функции. Автор этого рецепта догадался (и вполне справедливо), что следование этому третьему пути открывает перед программистом возможность набрать в поиске строку «имяФункции (» с пробелом для того, чтобы тотчас найти в исходном коде определение функции, не продираясь через чащи и дебри её вызовов.

Со временем я пришёл к выводу, что такой умный хак будет неизменно полезен всегда, когда IDE нет под рукою, а есть простой текстовый поиск — или когда IDE недостаточно разумна для того, чтобы ей самóй уметь разыскивать именно определение желаемой функции. Лишний пробел позволяет программисту и без того невозбранно достигнуть желаемого.

Увы, к этому выводу я пришёл слишком поздно. Впервые завидев этот рецепт, я позволил всплыть из ленивых глубин подсознания вопросу «Это ж сколько пробелов понарасставлять придётся?!» — вопросу, который тогда мне показался достаточно риторическим и запретительным. С тех пор я поспел воочию убедиться в том, что этот рецепт на деле экономит куда больше времени при поиске, чем пришлось бы затратить времени на расстановку пробелов в заголовках функций; а значит, экономия на этих пробелах — не менее ложная экономия, чем экономия на комментариях или чем буказоидное документирование (от англ. «bukazoid documentation pattern»; в моём переводе, если угодно — «будланýтое документирование», по фразе Щербы «глокая куздра штеко будланула бокра…»). Проблема в том, что пока я в этом убеждался, всецело запамятовал и автора, и источник рецепта.

Читатель! он тебе не попадался?
Total votes 43: ↑20 and ↓23 -3
Views 1.3K
Comments 23

JSDuck — генератор документации

JavaScript *ExtJS/Sencha *
Sandbox
Документирование является неотъемлемой частью хорошего кода и проекта в целом. Хорошие разработчики тратят много времени на поддержку документации, но в дальнейшем это окупается с лихвой: экономит время на поддержке кода, его расширении и исправлении багов, позволяет сократить время на погружение в проект новых разработчиков и т.д. Так же, хорошо документированный код неявно стимулирует разработчика к применению стандартов кодирования.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 19K
Comments 4

Подводные камни Bash

VK corporate blog Perfect code *IT Standards *Debugging *
Translation


В этой статье мы поговорим об ошибках, совершаемых программистами на Bash. Во всех приведённых примерах есть какие-то изъяны. Вам удастся избежать многих из нижеописанных ошибок, если вы всегда будете использовать кавычки и никогда не будете использовать разбиение на слова (wordsplitting)! Разбиение на слова — это ущербная легаси-практика, унаследованная из оболочки Bourne. Она применяется по умолчанию, если вы не заключаете подстановки (expansions) в кавычки. В общем, подавляющее большинство подводных камней так или иначе связаны с подстановкой без кавычек, что приводит к разбиению на слова и глоббингу (globbing) получившегося результата.


Читать дальше →
Total votes 143: ↑141 and ↓2 +139
Views 86K
Comments 63

Контроль качества кода в перспективе развития проекта

SECL Group corporate blog High performance *Website development *PHP *Programming *
Tutorial
Наверняка всем знакома ситуация, когда развитием проекта упирается в какую-то стену, внедрение новых функций становится все более затратным по времени и финансам. И, к сожалению, нередки такие моменты, когда чаша весов с ценой, начинает значительно перевешивать возможную выгоду от реализации той, или иной функции.

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

Мы разработали автоматизацию по контролю качества кода, которая уже работает в нашей компании и в некоторых других. Данная реализация создана для языка PHP. Ранее она была только для Java и C#. Однако принципы и подходы применимы ко всем современным языкам, поэтому приглашаем к обсуждению этой важной темы.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 12K
Comments 14

Фишинг с символами из других раскладок в URL не уходит

Information Security *
Фишинг существует уже давно. Невозможно подсчитать, какое количество людей предоставило мошенникам на блюдечке пароли от социальных сетей и почтовых сервисов, данные своих кредитных карт и банковских счетов, не удостоверившись в том, что в адресной строке в момент ввода логина и пароля был именно Vkontakte, а не Vkontaktle. Один из способов, с помощью которого можно замаскировать адрес, это использовать символы из других алфавитов.


Среди примеров фишинговых сайтов — страница polonìex.com, копирующая биржу криптовалют poloniex.com
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 14K
Comments 31

PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++

PVS-Studio corporate blog C++ *C *Programming microcontrollers *
PVS-Studio, MISRA C, MISRA C++

Начиная с версии 6.27 статический анализатор кода PVS-Studio может классифицировать свои предупреждения согласно стандартам MISRA C и MISRA C++. Благодаря поддержке этих стандартов анализатор стало возможным эффективно использовать для улучшения безопасности, переносимости и надежности программ для встраиваемых систем.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Views 6.1K
Comments 41

Группа разработчиков предлагает перейти на UTF-8

1cloud.ru corporate blog Website development *System Analysis and Design *Development of mobile applications *IT Standards *
Недавно на Hacker News опубликовали манифест программистов из Тель-Авива. Они предложили сделать UTF-8 решением по умолчанию для хранения текстовых строк в памяти и коммуникации.

Материал породил активную дискуссию, и мы решили разобраться в ситуации, рассмотреть аргументы ИТ-экспертов — в том числе инженеров IBM и специалистов консорциума W3C.

Читать дальше →
Total votes 33: ↑28 and ↓5 +23
Views 13K
Comments 69

readable — еще один линтер для PHP

Open source *PHP *JavaScript *

Хочу представить линтер для PHP readable. Сейчас в нем 16 правил, которые должны улучшить читабельность кода. К основным преимуществам можно отнести:


  • скорость — меньше секунды на 1000 файлов
  • настройка baseline — можно не исправлять все ошибки в проекте сразу, а создать конфигурацию с текущими ошибками. И игнорировать их, но реагировать на новые.
  • правила писать проще чем в аналогах (субъективно)


Важные два дисклаймера:


  1. Я основной контрибьютор, поэтому могу быть субъективным. Изначально, readable написан для бельгийской компании officient. Они уже некоторое время его используют у себя внутри, и решили сделать readable открытым проектом.
  2. Он написан на JS.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 3.4K
Comments 15

Let's Go! Три подхода к структурированию кода на Go

Издательский дом «Питер» corporate blog Programming *IT Standards *Go *
Translation
Привет, Хабр! Не так давно у нас вышла новая книга по Golang, и успех ее настолько впечатляет, что мы решили опубликовать здесь очень важную статью о подходах к проектированию приложений на Go. Идеи, изложенные в статье, очевидно не устареют в обозримом будущем. Возможно, автору даже удалось предвосхитить некоторые гайдлайны по работе с Go, которые могут войти в широкую практику в ближайшем будущем.
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 10K
Comments 16

Анализ открытых архитектур систем авионики

Programming *System Analysis and Design *System Programming *
Translation

Сегодня я публикую перевод доклада «An Examination of Open System Architectures for Avionics Systems– An Update» сделанного Joyce L. Tokar, PhD, Pyrrhus Software, LLC, в марте 2017.

Признавая необходимость доступных и эффективных решений для развития систем авионики, Министерство обороны США (Department of Defense, DoD ) в указаниях по повышению эффективности военных расходов (Better Buying Power 3.0, BBP), Инструкции 5000.02 и Руководстве по оборонным закупкам (Defense Acquisition Guidebook, DAG) призывает к использованию решений на базе Систем с отрытой архитектурой (Open System Architecture, OSA ). Цели руководства и указаний - избежать привязки к одному поставщику, сделать доступными развитие возможностей и /продвижение инноваций. В настоящее время осуществляются несколько инициатив по разработке стандартов OSA для использования в системах военной авионики. В этой статье будут рассмотрены три таких направления: Управление беспилотными системами (UxS ), Архитектура сегмента управления (UCS ), инициатива Открытые системы управления полетом (Open Mission Systems, OMS ) и реализация Перспективной среды авиационных бортовых систем (FACE​) выполненная открытой группой (Open Group). Эта статья начнется с уточнения определения систем с открытой архитектурой в понимании Министерства обороны США. Далее будет краткое описание этих трех стандартов OSA, мероприятий, которые проводятся в соответствии с указаниями Министерства обороны США. Документ затем представит анализ этих OSA на основе рекомендаций Министерства обороны США. И наконец, в документе будет обобщено состояние этих OSA и даны рекомендации для дальнейшей работы.

Читать далее
Total votes 2: ↑1 and ↓1 0
Views 1.8K
Comments 0