Существует несколько широко используемых подходов к именованию этих типов методов, особенно в классах общего назначения.
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”