Что включить в служебную библиотеку

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

Пока что у меня есть утилиты для изменения размера изображений, экспорта сеток данных в Excel, отправки электронных писем и замены токенизированных сообщений.

Если бы вы создавали / использовали библиотеку служебных классов .NET, какие типы процессов вы бы сочли полезными? Какие пространства имен / группы вы бы себе вообразили?

Обновлять

Я говорю о реальной библиотеке классов, разделенной на пространства имен для группировки общих элементов.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 041
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Лично я бы поместил некоторые из этих функций в отдельные библиотеки, поскольку «полезность» - это довольно субъективный термин, и то, что один человек считает полезным, не так полезно для другого.

Если бы в библиотеке он был разбит на описательные пространства имен, я бы сказал, что это лучше (например, изменение размера изображений будет в каком-то пространстве имен .Drawing или в .Drawing.dll).

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

Mitchel Sellers 02.01.2009 22:12
Ответ принят как подходящий
  1. Я бы не стал писать библиотеку под названием «Общие», «Утилиты», «Разное» или ... Вы поняли. Вместо этого у меня был бы каталог под названием «Lib», и каждая функциональная область была бы в отдельной библиотеке под ним. Например, у меня могут быть Lib / Trace, Lib / UI, Lib / Net, Lib / Web для проекта C++. Для C# у меня были бы Lib / Acme.Trace, Lib / Acme.Windows.Forms, Lib / Acme.Net и т. д. (При условии, что ваше пространство имен / компания верхнего уровня называется «Acme»).
  2. ЯГНИ. Не пишите код, который вам нужен мощь.
  3. Не бросайте вещи в общую библиотеку, пока не используете их в двух или более проектах.

Я полностью согласен с пунктом 3.

Saif Khan 02.01.2009 22:14

Где-то я недавно читал, что его нельзя использовать повторно, пока он не будет использован один раз, и повторно использовать еще два раза (всего 3 раза).

Jonathan Leffler 02.01.2009 22:20

Роджер, очень хорошее замечание. Что бы вы посоветовали для наименования. Из предметов, которые я включил до сих пор, они были повторно использованы в 10-20 проектах.

Mitchel Sellers 02.01.2009 22:26

Хотя я сам только начинающий разработчик, я обнаружил, что функции RegEx и фильтры SQL весьма полезны. У меня также есть функция репликации слиянием для MSSQL, которая до сих пор мне очень пригодилась.

В моей библиотеке классов много вещей, которыми я делюсь между проектами:

  • Контейнер IoC и структура внедрения зависимостей
  • Полная структура контроллера / наблюдателя позволяет мне отделить код пользовательского интерфейса от кода обратной логики.
  • Разумный независимый от базы данных набор классов для выполнения SQL устраняет некоторые синтаксические различия, в основном имена функций.
  • Множество других вспомогательных классов и служебных методов для работы с данными
  • Некоторые стандартизированные классы внутренней памяти, например Tuple<..> и т. д.
  • Некоторые пользовательские коллекции, такие как Set<T>, Heap<T>, а также множество служебных методов для работы с различными типами коллекций.

Библиотека классов добавляется, когда мне нужно больше материала.

Я бы посоветовал вместо «служебной» библиотеки просто создать библиотеки для конкретной области (графика, аутентификация, проверка и т. д.) И включать их только там, где они необходимы. Ключевым моментом, конечно же, является то, насколько конкретным будет. Как правило, чем больше конкретность, тем лучше.

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

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

Другие вопросы по теме