Not Yet Implemented
When writing Rust code, I often stub out methods (or parts of them) that I
intend to implement later with unimplemented!()
. As I work primarily in Java,
I recently thought about what keeps me from doing the same in Java. My IDE of
choice is Eclipse (don’t argue, the choice was actually made by my boss, though
I am completely OK with it), which allows me to create new methods that contain
the following (say, for a method returning a String
):
String myAwesomeMethod() {
//TODO Auto-generated method stub
return null;
}
The nice thing about it is that it compiles. The not-so-nice thing is that if I
forget to implement the method, but use it somewhere, the returned null
may
or may not alert me to the fact that I just ran unimplemented code. The
NullPointerException
I will inevitably get may or may not be near the
unimplemented method. At least I get a stack trace.
Unless I create a method that returns a primitive type, say int
:
int myEvenMoreAwesomeMethod() {
//TODO Auto-generated method stub
return 0;
}
Again, this will happily compile, but unlike the null
the returned zero may
not even be distinguishable from a valid value (unless whatever code calls this
function explicitly rules out zero, which is rare).
Much worse than unimplemented!()
, don’t you think? Luckily, there’s a way to
emulate this one. Click on Window
→ Preferences
, expand Java
→ Code
Style
→ Code Templates
, in the upper area select Code
→ Method body
and
click the Edit...
button.
Then change the pattern to the following:
// ${todo} Auto-generated method stub
throw new Error("not yet implemented");
Now my unimplemented methods will automatically throw an Error that alerts me to the actual position I have to step in and code. Much better!