Большинство разработчиков тратят большую часть времени на разработку приложений, а не на написание библиотек. Однако написание библиотеки, используемой несколькими приложениями, сильно отличается от разработки приложения. При работе над библиотекой есть много сложных тем, о которых разработчики не задумываются по сравнению с приложениями. Вот пара примеров:

Зависимости

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

Тот же принцип применим к любым зависимостям. Есть пара шаблонов проектирования, которые могут помочь в решении этой проблемы, например Заводской шаблон и Внедрение зависимостей. Подумайте дважды, прежде чем добавлять их в свой проект.

Осведомленность о серьезных изменениях

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

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

Выброс исключения

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

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

Заключение

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