Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 158 Stack Exchange communities.

What is meta?
Here's how it works:
  1. Any Stack Exchange user can ask a question
  2. The community provides support, votes on ideas, and reports bugs
  3. Your voice helps shape the way Stack Exchange operates

The following question

When should I NOT use an interface for a class?

was closed as non-constructive. I thought this was a genuinely interesting question. Maybe it would be a better fit for but neither myself or the OP would have any idea because no reasons are comments were given.

  1. Can anyone give a more specific suggestion as to why it was closed?
  2. Is there any "close vote etiquette" that admins are asked to follow when voting to close a question? Like when I down-vote a question on StackOverflow I am presented with a popup box suggesting that I leave a comment to explain my action.
share|improve this question
It was closed for a reason. And that reason is found at the bottom of the question in its own block. – Bart Feb 21 '13 at 16:14
"As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion." Seems like a clear reason to me. – GManNickG Feb 21 '13 at 16:14
"Genuinely interesting" and "non-constructive" don't oppose each other. In fact many genuinely interesting questions would be considered "non-constructive" on SE sites, because they'd require discussion and don't lend themselves to definite answers. – Joachim Sauer Feb 21 '13 at 16:15
Abstract vs. Interface has been asked, Sealed vs. Inheritance has been asked, and Why Did Microsoft Seal Many BCL classes has been asked. This has combined those three things, which can be highly subjective in their own right, into one. You're not likely to get a single best answer, most likely to get open-ended discussion, hence the question being closed. – Anthony Pegram Feb 21 '13 at 16:16
Ok, these are all fair points but it would have been nice to be given a pointer as to where the question should/could be asked. – Kevin Brydon Feb 21 '13 at 16:16
@KevinBrydon I would say "nowhere". I don't think this would be a constructive question on any of the sites. Not on Programmers either. (Though any participants there are welcome to surprise me). – Bart Feb 21 '13 at 16:17
@KevinBrydon - The Stack Exchange network of sites does not exist to be a dumping ground for every conceivable question. Some questions are not appropriate on any Stack Exchange site. – Jack Maney Feb 21 '13 at 16:18
@KevinBrydon, often enough, the answer to that is "nowhere." And even if there is a place on the SE network where the question might be appropriate, users on SO are under no obligation to help get it there. Mainly because they might not know where it is appropriate. Often enough, SO users are guilty of suggesting bad migrations at is. – Anthony Pegram Feb 21 '13 at 16:19
@Bart The question was about why/how does Microsoft decide what classes should implement an interface. There may be some guidelines available for developers. You guys/girls are harsh! – Kevin Brydon Feb 21 '13 at 16:20
@AnthonyPegram The question asked specifically about Microsoft. There is a chance that these decisions have been documented which would provide an answer. – Kevin Brydon Feb 21 '13 at 16:22
@JackManey This is a question I have often wondered about. It may as well have been me that asked it. As I have said in other comments, there may be documentation lying around somewhere that details the decisions made by Microsoft employees as to why they don't inherit. Being unable to mock the DateTime class for example is a pain! – Kevin Brydon Feb 21 '13 at 16:25
"The question was about why/how does Microsoft decide what classes should implement an interface"...and that's precisely the problem. – Bart Feb 21 '13 at 16:37
@AnthonyPegram Just to add further comment. The question was not about Absract vs Inheritance, why classes are sealed etc. It was more like "Why doesn't the DateTime class have a corresponding IDateTime" interface?". – Kevin Brydon Feb 21 '13 at 16:39
@KevinBrydon Well, as adding that to the library would be a feature, here is some general info about why any given feature isn't in the language: – Servy Feb 21 '13 at 16:52
up vote 8 down vote accepted

No moderators/admins were involved in the closing of that question, only regular users. You said in the comments there that you meant those users as a collective.

In that case they are referred to as high rep users.

No site can have this question because the "Not Constructive" rule is a network-wide rule: it's valid anywhere by default. As it's been underlined before, that question cannot be reasonably and definitely answered by someone who isn't a Microsoft representative member, that's why the question "might solicit discussion, arguments, etc". External developers might not be able to answer it if the reasons are "company decisions" so we're still in the realm of the unknown.

I'm not an active member on SO so my advice is (as for any other closed question): if the question can be edited in some way (that I'm not aware of), then that would be the only step for its reopening. If it cannot be edited, I'm afraid it will stay closed.

Alternatively, if you can find documentation about such decisions then I suppose that that could make the question constructive again (in case the question stays reasonably scoped, of course). By the way, these "on the edge" questions can be asked anytime on chat. I'd ask there in case the question stays closed.

share|improve this answer
To your last point, it's really to broad/vague for that to be applicable. You might find an argument given for why there is no interface given for a particular class, but to know why every class that doesn't implement an interface doesn't have an interface could go on for a long, long time, as they likely have different reasons in different cases. – Servy Feb 21 '13 at 16:27
@Servy Are you referring to the "question editing"? Like I said it was a general advice, I really don't have the necessary knowledge to say how that question could be fixed. :D If you're referring to the "find the documentation", I see what you mean. I didn't know the topic was so broad. – Alenanno Feb 21 '13 at 16:30
I fixed the last point, thanks. :) – Alenanno Feb 21 '13 at 16:30
Basically, in reading the actual question, I can see of now way of making it into something that should stay open. There are just so many problems, with it that even if you could fix some of them, others would still exist. It just needs to be asked somewhere else with less strict question guidelines. – Servy Feb 21 '13 at 16:32
@Servy I really don't get it. If someone could find some documentation then its a good question for SO. If there is no documentation then its not a good question for SO. Surely the only way to find out is to ask a question? – Kevin Brydon Feb 21 '13 at 16:42
@Alenanno As I have asked Servy. "If someone could find some documentation then its a good question for SO. If there is no documentation then its not a good question for SO. Surely the only way to find out is to ask a question?". Also, is there any close vote etiquette? – Kevin Brydon Feb 21 '13 at 16:45
@KevinBrydon There will almost certainly be no official documentation. At best it would be somewhere in the personal blog of a Microsoft employee who was involved in the decision of whether or not there is an interface for X or just one class without an interface. Also, while such information might, exist in the case of a small number of individual classes, each is its own decision, so it wouldn't tell you why one isn't used somewhere else. Finally, an SO question should be able to be answered by the person posting, it's not right for a question to only ever be answered by a link. – Servy Feb 21 '13 at 16:45
@KevinBrydon What do you mean close vote etiquette? You close questions that should be closed, for the reason that they should be closed. That's...about it. – Servy Feb 21 '13 at 16:46
@KevinBrydon Like Servy said, if you see that a question deserves to be closed, you vote to close. It takes 5 votes to close a question (excluding moderators stepping in), so the thing is quite democratic. If 5 high-rep users voted to close, there must be a reason. – Alenanno Feb 21 '13 at 16:54
@Servy Regarding your first point. "Almost certainly" still means there might be a chance. Sometimes questions can be answered by a link (as a source) combined with an excerpt from that source. Regarding your second point. When I down-vote a question I get small popup prompting me to give a reason, I thought it might be the same for casting close votes. – Kevin Brydon Feb 21 '13 at 16:56
@KevinBrydon Yes you can comment too if you want but it's not mandatory and unlike downvotes the reason will eventually appear, if necessary. – Alenanno Feb 21 '13 at 16:58
oooh! "This question speculates about the reasons behind "company decisions" and therefore cannot be reasonably answered by people who are not employees of the company or were not involved in the decisions made." – Won't Feb 21 '13 at 17:19
@Won't I don't get it, are you agreeing or disagreeing with me? lol – Alenanno Feb 21 '13 at 17:22
@Alenanno: You have inspired me! You are my muse. – Won't Feb 21 '13 at 17:22

The question runs afoul of the FAQ, specifically:

Stack Overflow is for professional and enthusiast programmers, people who write code because they love it. We feel the best Stack Overflow questions have a bit of source code in them, but if your question generally covers …

  • a specific programming problem

And then later:

You should only ask practical, answerable questions based on actual problems that you face.

In most forms, the idle curiosity questions that don't deal with a specific problem you face are likely to be closed.

We want the knowledge of Stack Overflow to be the answers to problems that people face; not just a treasure trove of idle questions and their answers.

share|improve this answer
Thanks George. I guess the question could have been reworded to something like "I am unit testing a method, how do I mock the SmtpClient class?" for StackOverflow. I still think it would be an OK question to put in as its a "development methodologies" and "software architecture" type question. Especially with software architecture these questions are not always clear cut. – Kevin Brydon Feb 22 '13 at 9:09
@KevinBrydon Seems that's already been asked:… – George Stocker Feb 22 '13 at 12:22
I was just using an example of how the question should be phrased on SO, the original question was asking more "why" than "how". Although I appreciate you found a link to the answer! Wrapping a class just to make it testable seems like a clumsy way to do things. Almost every basic .NET class would have to be wrapped in the end (DateTime, Random etc). But that's a debate for another time! – Kevin Brydon Feb 22 '13 at 13:49
@KevinBrydon We do that where I work. We have entire libraries dedicated to helping us unit test things that aren't easily testable (like DateTime.Now). It's a sad truth to in .NET that you have to do that; but so long as humans are imperfect, so to will software be. – George Stocker Feb 22 '13 at 13:55

You must log in to answer this question.

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