In the context of writing a technical document, I need to refer to a data structure that contains a list of addresses, in fact one address for each user in the system.

Should I call this data structure

  1. "users address" (this stresses the fact that each user has a single address, but it is probably wrong according to the rule that one should say "Remind your wives" and not "Remind your wife"),

  2. "users addresses" (feels wrong: it seems that each user may have more than one address), or

  3. "user addresses" (feels wrong as well: this suggest that these addresses are all related to a single user, who happens to have multiple addresses)?

Edit: Please note that this list cannot be named "user address" because that is the name of used by variables that momentarily hold one of the pieces of data contained in the list. For those who speak pseudo code:

for user_address in users_addresses {
  • Have you read the thread you link to, carefully? // 'User address' works fine as a list header. It's pretty clear that there is more than one user, and that they do not all live/'live' at the same address. – Edwin Ashworth Mar 13 at 13:35
  • 4
  • Are the elements of the address (apartment/flat/room number, building identifier, street number, street name, community, postal town/city, area etc) attributes of the user record or is there a single identifier for each user pointing to a record in a gazetteer. In other words is the data structure in at least Codd 4NF? – BoldBen Mar 14 at 6:00

I think "user addresses" is the only correct option. You're creating a noun adjunct phrase, and the usual rules for such phrases is:

  • The first noun (the noun adjunct) is usually singular. There are a couple of exceptions (such as "arms race" and "options trading"), but I don't think it would be a good idea to create an exception for no good reason. (As a matter of fact, to me, the phrase "users addresses" would vaguely suggest that each address belongs multiple users.)
  • The number second noun (the head noun) is the number of phrase. Your data structure contains multiple addresses, so the form to use is "addresses," not "address."

As an analogy, imagine a group of people, where each person is wearing one face mask. You would not say "they are wearing faces masks" or "they are wearing faces mask"; you would say "they are wearing face masks."

All that said, instead of using a noun adjunct, you could use a possessive, and talk about the users' addresses (the apostrophe is mandatory here). That would work just fine for writing English prose, but if you're naming variables in source code, then, in my experience, developers almost always use a noun adjunct phrase, not a possessive phrase: the variable would be named userAddresses, not usersAddresses.

  • Why not 'user address'? You'd not blink an eyelid at a bulleted list of animals headed 'animal'. And OP here asks for a list-name. – Edwin Ashworth Mar 13 at 13:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.