[Перевод] Десять заповедей React компонентов

the-10-component-commandments


Написано Kristofer Selbekk, в сотрудничестве с Caroline Odden. Основано на лекции с таким же названием и с теми же людьми, состоявшейся на встрече ReactJS в Осло в июне 2019 года.

От переводчика — оригинальное название The 10 Component Commandments не упоминает React, но большинство примеров и рекомендаций относятся именно к реакту, к тому же статья выложена под react тэгом и написана реакт разработчиками.

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

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

api


Что такое API?

API — или программный интерфейс приложения — место где встречаются два куска кода. Это контактная поверхность между вашим кодом и остальным миром. Мы называем эту поверхность интерфейсом. Это определенный набор действий или точек данных с которыми можно взаимодействовать.

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

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


Некоторые лучшие практики проектирования API

Итак, какие правила и соображения применяются при разработке API? Что ж, мы провели небольшое исследование, и оказалось что есть много отличных ресурсов на эту тему. Мы выбрали два — Josh Tauberer — «What makes a good API?» и статья Ron Kurir с тем же названием — и пришли к этим четырем практикам.


Стабильные версии

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


Описательные сообщения об ошибках

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

Вместо этого пишите описательные ошибки, которые помогут пользователю исправить то как они используют ваш API.


Минимизировать сюрпризы для разработчиков

Разработчики хрупкие существа, и вам не стоит их пугать когда они используют ваш API. Другими словами — сделайте ваш API как можно более интуитивным. Вы достигните этого если будите следовать лучшим практикам и существующим соглашениям об именах.

Так же, ваш код всегда должен быть последовательным. Если вы используете логические имена свойств с is или has в одном месте, но пропускаете их дальше — это будет сбивать людей с толку.


Минимизировать поверхность API

Ваш API то же нужно минимизировать. Множество возможностей это замечательно, но чем меньше поверхность вашего API (API surface), тем меньше разработчикам придется изучать его для того что бы начать продуктивно с ним работать. Благодаря этому ваш API будет восприниматься как простой в использовании!

Всегда есть способ проконтролировать размер ваших API. Один из них — рефакторинг нового API из старого.


Десять заповедей для веб компонентов

The 10 Component Commandments

Итак, эти четыре золотых правила хорошо работают для REST API и для старых процедурных штук на Pascal —, но как перенести их в современный мир React-а?

Как мы и говорили ранее, у компонентов есть свой API. Мы называем их props, и именно с их помощью данные передаются в компоненты. Как нам структурировать пропсы таким образом, чтобы не нарушать ни одно из приведенных выше правил?

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


1. Документируйте использование компонентов

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

Есть много способов задокументировать ваши компоненты, но мы рекомендуем обратить внимание на эти три:

Первые два дают вам площадку для работы при разработке ваших компонентов, а третье позволяет писать документацию в свободной форме при помощи MDX

Независимо от того что вы выберите, всегда документируйте как сам API, так и то как и когда ваши компоненты должны использоваться. Последняя часть критически важна в библиотеках общего назначения — что бы люди правильно использовали кнопку или сетку макета (layout grid) в заданном контексте.


2. Разрешите контекстную семантику

HTML — это язык для структурирования информации семантическим способом. Только вот большинство наших компонентов состоит из 

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