92

Sometimes in a programming exercise, boilerplate generation, putting guide rails around the tasks for a junior programmer to implement, etc., it happens that the programmer is presented unimplemented code and told to "fill in the blank." For example, a unit test that may compile, but fails, or a class declaration with empty methods.

Is there a common term for this practice?

  • Not exactly what you're asking, but related. If there are also test scripts in place which show what your code is expected to do, then it's known as Test Driven Development. – AJFaraday Mar 9 '16 at 0:54
  • 32
    To whomever voted to close: sure, "name this thing" might not be an especially interesting question. However, this question does have an objective answer that is not primarily opinion-based. As proof, I present my answer below. – user22815 Mar 9 '16 at 6:29
  • 3
    I would say "Terrible coding practice." – Euphoric Mar 9 '16 at 7:33
  • 7
    NotImplementedException :) – Reinstate Monica Mar 9 '16 at 12:50
  • 3
    "Exercise for the reader" seems to be the textbook approach if you're talking about error handling. – Phil Lello Mar 9 '16 at 22:07
177

You are referring to a stub or skeleton:

Stub

This is typically a method or function with a mostly-empty body that simply returns a dummy value so code will compile.

Skeleton

This is a method that has a high-level algorithm implemented, but individual parts are left unimplemented. They may be empty code blocks, or reference stub methods (see above) that will eventually perform subtasks. This is a good way to express a software design for a junior programmer who may struggle with the larger design effort, or for making sure you have the algorithm correct before investing too much time in the low-level details.


The practice of using these code elements would be called stubbing or creating a code skeleton.

  • 3
    Although I like your terms better, I think that the term 'scaffolding' in Ruby on Rails is the same concept. – dcorking Mar 9 '16 at 13:36
  • I also thought stub was the right word for this, but was not sure because I was getting push back from others at my job. Thank you. – Brandon Arnold Mar 9 '16 at 15:29
  • It's a "stub" if done in an academic context. Done in a professional/commercial context, it's "technical debt". – aroth Mar 10 '16 at 5:09
  • 10
    @aroth it is not technical debt if the code does not work - it must be implemented. Technical debt implies poorly written code that ends up being used in a production environment, meaning it requires significant effort to refactor correctly. A stub would ideally have a failing test case, so it must be implemented and tested before being set loose on production. – user22815 Mar 10 '16 at 5:13
  • 2
    @BrandonArnold: When talking to your colleges, you should use words they understand. Unless you are the boss. – Stig Hemmer Mar 10 '16 at 8:39
42

I've seen the term “stub” being used.

For example, I believe that Eclipse automatically inserts a comment

String getName() {
    // TODO: Auto-generated method stub
    return null;
}

into its infamous auto-generated, well, stubs.

Also note the usage of the term “stub” in the context of unit testing.

  • 2
    "// TODO: Auto-generated method stub" I think. – user253751 Mar 9 '16 at 3:38
  • Definitely useful to know this. . . – Brandon Arnold Mar 9 '16 at 15:30
17

In Visual Studio, when writing code intellisense will give you the option "generate a new method stub". When you choose this option, Visual Studio will generate a stub/skeleton of code exactly as you have described.

Microsoft refers to this as a stub, so I would also call these stubs.

protected by user40980 Mar 10 '16 at 17:19

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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