In one sense, I'm going ot have to side with Sinipull on this one. Longer names are generally better than shorter names, despite the need to perform more typing to write one out if you're not using an IDE. However, I think it's
far more important that methods be
simple rather than descriptive. They should perform one task, or get a single piece of information. This task can in itself be very complicated (for example, splitting a string), but regardless it should be simple for a user to understand what's going on with two or three words. As such, instead of this:
public void isDogBarkingWhenStrangerIsAtTheDoorAndImNotHome(){
}
I'd prefer this:
public bool isDogBarking() {
}
public bool isStrangerAtDoor() {
}
public bool amIHome() {
}
//...
if (status.isDogBarking && status.isStrangerAtDoor() && !status.amIHome()) {
// Do something...
}
This is because the client can customize different conditions and utilize the code within the object better. I think it more important that objects be versatile than anything else, though. :)