Рубрики
Без рубрики

4 Ошибки, Которые Мешают Вашим Java API Иметь Больше Пользователей

Когда у вас больше людей, использующих ваши Java API, ваши проекты растут, и, естественно, вы становитесь лучше… С тегом java, дизайн api, api, карьера.

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

Чтобы удержать тех людей, которые уже используют ваш API, и привлечь больше, вам нужно устранить эти 4 ошибки.

Ошибка 1: Заставлять клиентов писать плохой код.

В своей превосходной книге ” 20 парадоксов API |/” Ярослав Тулач проводит аналогию разработчиков с художниками. Как для художников, так и для разработчиков важна красота их искусства. Нам нравится смотреть на наш код и видеть красоту. Так Однако, когда вы заставляете своих пользователей создавать неприятный или подверженный ошибкам код, они разочаровываются и расстраиваются.

Примером API, который заставляет клиента писать плохой код, является интерфейс org.osgi.framework. Пакет . Он предоставляет нам метод getLocation() , который возвращает Строковое значение. Проблема в том, что он не указывает формат для этого значения, и это единственный метод, который может указать местоположение пакета. Поскольку API не определяет формат, реализацию может использовать любой желающий.

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

Теперь у клиентов есть две проблемы:

1) API вынуждает их создавать блокировку реализации. Клиенты зависят от того, как реализация форматирует местоположение.

2) API вынуждает их создавать блокировку версии. Формат может варьироваться в зависимости от различных версий реализации.

Разработчики API могли бы решить эту проблему, добавив в интерфейс Bundle метод, который возвращает Путь или Файл .

Другим решением было бы заставить метод getLocation() первоначально возвращать класс Location , и это Местоположение может иметь необходимые атрибуты. Это решение позволило бы четко указать, что должна возвращать реализация, и не заставляло бы клиентов анализировать String .

Ошибка 2: Отсутствие последовательности в номенклатуре.

Один из 3 принципов, которые поддерживают отличные фреймворки и библиотеки , заключается в простоте использования. Если ваш API сложен в использовании, вы теряете клиентов.

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

Например, слова “fetch”, “retrieve” и “get”. Все они имеют одно и то же значение. Смешивая их, клиенты не знают, как искать метод, потому что иногда вы используете “retrieve”, иногда “fetch”, а иногда “get”. Так что выбирайте один из них и придерживайтесь его.

Ошибка 3: Централизовать доступ к функциям в одном классе

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

Давайте посмотрим на пример, чтобы увидеть это яснее.

public class GreatApi {

    public CoolFeature getCoolFeature() {
        return new CoolFeature();
    }

    public NiceFeature getNiceFeature() {
        return new NiceFeature();
    }

    public AwesomeFeature getAwesomeFeature() {
        return new AwesomeFeature();
    }

}
public abstract class GreatApiClient {

    private GreatApi greatApi;

    public GreatApi getGreatApi() {
        return this.greatApi;
    }

}
public class ClientClass extends GreatApiClient {

    public void doClientStuff() {
        getGreatApi().getAwesomeFeature().doAwesomeStuff();
    }

}

Клиенту просто использовать эту функцию, не так ли? Но такой подход принесет нам огромные проблемы в будущем.

Одна из проблем заключается в том, что каждый клиентский класс, который должен использовать API, будет зависеть от GreatApiClient и Отличный Api classes. Мы этого не хотим, потому что чем более распространен артефакт, тем сложнее его изменить.

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

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

Отличной альтернативой этому является использование внедрения зависимостей вместо использования классов Отличный Api и/| GreatApiClient . Таким образом, клиентский класс будет зависеть только от тех классов, которые ему действительно нужны.

import javax.inject.Inject;

public class ClientClassUsingDependencyInjection {

    @Inject
    private AwesomeFeature awesomeFeature;

    public void doClientStuff() {
        this.awesomeFeature.doAwesomeStuff();
    }

}

Ошибка 4: Не Используйте Неизменяемые Объекты

Неизменяемые классы потокобезопасны. Это само по себе является хорошим аргументом в пользу написания неизменяемых классов. Но у использования этих классов есть и другие преимущества.

Джошуа Блох утверждает в своей книге ” Эффективная Java “:

Неизменяемый класс – это просто класс, экземпляры которого не могут быть изменены. Вся информация, содержащаяся в каждом экземпляре, фиксируется на протяжении всего срока службы объекта, поэтому никаких изменений никогда не может быть замечено. Библиотеки платформы Java содержат множество неизменяемых классов, включая String , упакованные примитивные классы и BigInteger и BigDecimal . Для этого есть много веских причин: неизменяемые классы проще разрабатывать, внедрять и использовать, чем изменяемые классы. Они менее подвержены ошибкам и более безопасны.

Вы можете узнать, как создавать неизменяемые классы, в Руководстве Oracle по Java .

Позвольте Вашим Клиентам наслаждаться использованием Вашего API

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

Это поможет вам стать лучшим профессионалом и даст вам возможность развивать свою карьеру.

Что мешает вам привлечь больше людей, использующих ваши Java-API? Оставьте комментарий здесь или отправьте мне сообщение на мои социальные сети . Это будет здорово помочь вам привлечь больше клиентов к вашему продукту.

Оригинал: “https://dev.to/hbelmiro/4-mistakes-that-prevent-your-java-apis-from-having-more-users-3oi1”