"object-oriented" vs "object oriented"

The Chicago Manual of Style notes:

With the exception of proper nouns (such as United States) and compounds formed by an adverb ending in ly plus an adjective, it is never incorrect to hyphenate adjectival compounds [of which object-oriented is one] before a noun. When such compounds follow the noun they modify, hyphenation is usually unnecessary, even for adjectival compounds that are hyphenated in Webster’s (such as well-read or ill-humored).

So:

Smalltalk is said to be a pure object-oriented language.

But:

These characteristics make a programming language object oriented.


They're equivalent, as it's valid to have an open compound adjective (one with a space rather than a hyphen), and both form mean the same thing.

However:

  1. It can be clearer to use a hyphen.
  2. The hyphenated form would seem to be much more commonly used even considering the fallibility of ngrams.

So, it might be wise to use the hyphenated form.


When two (or more words) are to act as a single attributive adjective, you hyphenate them.

So, you must ask yourself "what type of code do I write?" - "I write object-oriented code."

Here object-oriented is a single unit that describes (adjectivally) code.

If these two words are simply part of the clause, ie, a predicative adjective, they don't need hyphenating. Think of it this way. "what is this software like?" - "This software is object oriented." In other words, "This software is oriented in an object way!"

I have found that many folk hyphenate in the latter case as well, but it's more important (for clarity's sake) to ensure you hyphenate in the former case.