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!