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

Пара слов об именовании статических фабричных методов.

Не священная война, просто наблюдения. Помеченный java, lang.

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

  • getInstance() и тому подобное
  • из()
  • с()

Есть много других вариантов, но они не столь распространены.

С моей точки зрения, эти соглашения об именовании выглядят так:

  • getInstance() просто уродлив и многословен.

  • of() и с() являются современными, широко используемыми и в течение довольно долгого времени были моими основными подходами.

Недавно я столкнулся с одним неудобством с помощью of() и с() : если я использую их со статическим импортом (для краткости), они теряют ясность (трудно решить, какой из () или с() принадлежит к какому классу).

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

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

   ...
   final var entries = map(1, "First", 2, "Second");
   ...
   final var topicList = list("One", "Two", "Three");
   ...
   final Promise> friends = promise();
   ...

Все в одном файле, ясно и кратко.

Я хотел бы знать ваше мнение об этом подходе.

Оригинал: “https://dev.to/siy/couple-words-about-static-factory-methods-naming-4k64”