Llogiq on stuff

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!