Я предполагаю, что большинство подобных фабрике методов запускается с create
. Но почему они названы, "создают"? Почему бы не "сделать", "произведите", "создайте", "генерируйте" или что-то еще? Действительно ли это - только вопрос вкуса? Конвенция? Или есть ли особое значение в, "создают"?
createURI(...)
makeURI(...)
produceURI(...)
buildURI(...)
generateURI(...)
Какой Вы выбрали бы в целом и почему?
Некоторые случайные мысли:
«Создать» подходит для этой функции лучше, чем большинство других слов. Следующее лучшее слово, которое я могу придумать, - это «конструировать». В прошлом «Alloc» (выделить) могло использоваться в аналогичных ситуациях, отражая больший упор на блоки данных, чем на объекты в таких языках, как C.
«Создать» - это короткое простое слово, имеющее ясный интуитивный смысл. значение. В большинстве случаев люди, вероятно, просто выбирают его как первое, наиболее очевидное слово, которое приходит на ум, когда они хотят что-то создать. Это обычное соглашение об именах, а «создание объекта» - это общий способ описания процесса ... создания объектов.
'Construct' близок к этому, но обычно он используется для описания определенного этапа в процессе создания объекта (выделить / создать, построить, инициализировать ...)
«Сборка» и «Создание» - общие термины для процессов, относящихся к компиляции кода, поэтому они имеют разные коннотации для программистов, подразумевая процесс, который включает много шагов и, возможно, большую активность диска. Однако идея фабрики, «строящей» что-либо, является разумной идеей - особенно в случаях, когда строится сложная структура данных или когда каким-то образом объединяются многие отдельные части информации.
«Генерировать» для меня означает вычисление, которое используется для получения значения из ввода, такого как генерация хэш-кода или случайного числа.
«Произвести», «Сгенерировать», «Построить» длиннее для ввода / чтения, чем «Создать». Исторически сложилось так, что программисты предпочитали короткие имена, чтобы сократить ввод / чтение.
Я бы отметил, что видел все глаголы, но производят, которые используются в той или иной библиотеке, поэтому я бы не стал называть создание универсальным соглашением.
Теперь create действительно звучит лучше для меня, пробуждает точный смысл действия.
Так что да, это вопрос (литературного) вкуса.
«Create» и «make» короткие, достаточно запоминающиеся и не привязанные к другим шаблонам именования, которые я могу придумать.Я также довольно часто видел и то и другое и подозреваю, что они могут быть «стандартами де-факто». Я бы выбрал один и постоянно использовал его, по крайней мере, в рамках проекта. (Глядя на мой собственный текущий проект, мне кажется, что я использую «make». Надеюсь, что я последователен ...)
Избегайте «build», потому что оно лучше соответствует шаблону Builder, и избегайте «production», потому что оно вызывает у «Producer» /Потребитель.
Продолжая метафору названия паттерна «Фабрика», меня соблазнит «производство», но это слишком длинное слово.
Частично условность, частично семантика.
Заводские методы (сигнализируемые традиционным create
) должны вызывать соответствующие конструкторы. Если бы я увидел buildURI
, я бы предположил, что это связано с некоторыми вычислениями или сборкой из частей (и я бы не подумал, что здесь задействована фабрика). Первое, что я подумал, когда увидел generateURI
, - это создание чего-то случайного, например, новой персонализированной ссылки для скачивания. Они не все одинаковы, разные слова имеют разное значение; но большинство из них не стилизованы.
Я бы назвал это UriFactory.Create()
Где,
UriFactory
- это имя типа класса, который предоставляет метод(ы), создающие Uri
экземпляры.
и Create()
метод перегружается для стольких вариантов, сколько у вас есть в спецификации.
public static class UriFactory
{
//Default Creator
public static UriType Create()
{
}
//An overload for Create()
public static UriType Create(someArgs)
{
}
}