naming – Alternative verbs for a factory style operation

What verbs, other than ‘new’ and ‘create’, are being used for factory style operations?

The reason I’m asking is that I’m not quite happy with my current way of naming the family of functions providing a certain kind of factory style operations — concretely, that make_FOO is the generator of FOOs — and want to explore alternatives. One obvious thing to try is to replace the very vague verb ‘make’ by something more apt, for example something that is already being used (in at least some community) for this sort of operation. ‘New’ definitely qualifies that far, but there are reasons I find it unsuitable:

  • ‘New’ suggests that what is being returned really is a fresh thing, which is not necessarily the case. It might just be a constant value, or the factory might be memoising its returned results, since reuse is mostly trivial whereas construction from scratch can sometimes be nontrivial.

  • ‘New’ (and ‘create’) could also be seen as suggesting that what these factories return are objects within the standard object system, which they in fact are not. (For one, the call syntaxes are slightly different. More important in the big picture is that objects of the standard system need to be explicitly destroyed, are owned by something, and may in turn own other things; what my factories are generating is more lightweight.)

A different choice of verb should help me avoid both those issues.

If this was a one-off issue, then a less than ideal naming would not be a big concern, but it is not. Rather, my software naturally decomposes into a number of packages/libraries with few dependencies, each providing functionality via one or a few classes of these lightweight “objects”, and the generator functions are the main entry points. Some packages might declare additional public interfaces, but that would then be advanced interfaces for expert users; the typical usage would still be that first one of these generator functions is called, and then the result from that is used to carry out calculations.

Clarification on natural language grammar

The words I’m looking for need not necessarily be verbs in English. For example, the Wikipedia page on factories contains the example of a class Complex with factory methods FromCartesian and FromPolar; in this case I would say that ‘from’ is the verb, because it appears in a “verb” position in the names of these methods.

Likewise, even though English is rather notorious in allowing a word to be e.g. both a verb and a noun — compare “Time flies like an arrow.” to “Fruit flies like a banana.” — I don’t think ‘new’ would qualify as a verb in any variety of English spoken to humans. Yet it is definitely being used as a verb when we name e.g. functions in C, often appearing as a peer of more standard verbs such as ‘create’, ‘open’, ‘duplicate’, and ‘dispose’.

Indeed, from a natural language perspective, it might in fact be best if calls to my generator functions would read as noun phrases rather than verb phrases or complete sentences, because their role in calling code is far more one of introducing into the present discourse a particular tool than it is to actually cause something to happen (ofter parts of the program may of course have a different perspective on the matter). This does not mean proper verbs are out of the question for me, but it might suggest that it should not be a finite verb; on the other hand, verbs have plenty of funny forms that laymen rarely think about (participle, attributive, etc.) and English doesn’t do all that much inflection, so one would have to be very careful before ruling anything out for this particular reason. Better to go with whether it “sounds right” than to attempt a grammatical analysis, I believe.

That said, my actual question stands as stated as the top: what “verbs” are being used for factory style operations? This seems to be of more general interest than “What verb should I use…”