I have heard site regulars often scoff at and its usage.

Is a meta tag that has until now slipped under the radar?

If not, when is it appropriate to use ? What sorts of questions should use this tag? What sorts of questions should not?

I don't have a case for its removal necessary, but I'd like to understand its appropriate usage better (if it has one at all), because I suspect there are questions that use this tag that don't need to.


Like many 'feature tags', is there to label those times when the asker's constraints or environment demand an solution: "I need to solve this using OOP!" Tags used in a similar way are , , etc.

The is useful in that it clearly indicates when the OOP features of the code are significant, and where people who are experts in OOP may have deeper insifghts and may want to answer (195 people "follow" ).

It is useful, even if it is sometimes abused.


I think that means too many things at once. There are several fundamental concepts in OOP, but people tend to use the tag whenever they use a language with supports the object-oriented programming paradigm. I don't think that this use of the tag is worth it and I wouldn't mind it being burninated. On the other hand, it could be broken down into several OOP-related tags whose name could reflect the intentions of the OP better:

  • : even though it has several meanings (runtime polymorphism, parametric polymorphism, ad hoc polymorphism...), it is mostly used to evoke the polymorphic relation between a base class and its subclasses.

  • : I think that this one is clear enough.

  • Probably more tags and concepts: , , ...

Using these tags would clearly highlight the user's intent while using the general doesn't tell much about the question; I have to admit that I always ignore it and would never search for it to get any sort of meaningful question or answer.

  • 1
    \$\begingroup\$ I think we used to have tags like polymorphism, inheritance, methods once, they got burninated. I don't think we should go back to using them again. \$\endgroup\$ – Simon Forsberg Jun 29 '15 at 13:34
  • \$\begingroup\$ @SimonAndréForsberg inheritance is not burninated. I saw inheritance & oop on a question this morning. \$\endgroup\$ – nhgrif Jun 29 '15 at 13:50
  • 2
    \$\begingroup\$ @SimonAndréForsberg I don't find them especially useful anyway, but I find oop even more useless. \$\endgroup\$ – Morwenn Jun 29 '15 at 14:19

The wiki doesn't say anything about its preferred usage, but I suspect it's meant for code which has an OO approach while such an approach is not necessarily the most common option.

For example, and .

However, its usage sometimes appears to be random. Every user with a class in its code could add thinking it's appropriate.

I don't think it should be used on languages which primarily work with OO (, , ).

  • 1
    \$\begingroup\$ Questions written in object-oriented languages aren't inherently object-oriented. I sometimes see the tag used when the question is specifically about object-oriented concepts like inheritance. Should there be some sort of procedural or functional programming tag (if there isn't already) to be used when someone is trying to use object-oriented languages in a non-OOP way (intentionally)? \$\endgroup\$ – nhgrif Jun 29 '15 at 12:48
  • \$\begingroup\$ @nhgrif It's not possible to write java/c#/Python without using OO. It's built in the language. You may be missing my point. C++ is a grey area, is that what you're confused with? \$\endgroup\$ – Mast Jun 29 '15 at 12:55
  • 1
    \$\begingroup\$ No. Just because you have to write code in a class doesn't mean you are doing it in an OO manner. You can write a class full of static methods and treat it like you're writing procedural/functional programming... \$\endgroup\$ – nhgrif Jun 29 '15 at 13:06
  • \$\begingroup\$ @nhgrif That would be very un-idiomatic, wouldn't it? That's using the wrong tool for the job. \$\endgroup\$ – Mast Jun 29 '15 at 13:07
  • \$\begingroup\$ Sure, but that's irrelevant to how you should tag a question about that sort of code if you posted it to Code Review. Writing OO code in C would be equally un-idiomatic, wouldn't it? Wrong tool for the job. \$\endgroup\$ – nhgrif Jun 29 '15 at 13:08
  • \$\begingroup\$ @nhgrif Not necessarily. If your hardware requires you to use a low-level language but you want to use high-level functions, you'll have to built them yourself. There is no use-case for the other way around. \$\endgroup\$ – Mast Jun 29 '15 at 13:10
  • \$\begingroup\$ @Mast take VB6 for example, it supports OOP, but nearly nobody actually uses OOP in VB6. I agree with Nhgrif that just putting something in a class doesn't make it OOP, but I fear we're getting off topic... \$\endgroup\$ – RubberDuck Jun 29 '15 at 14:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .