cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Polar Humenn <>
Subject Checkstyle
Date Tue, 03 Apr 2007 21:10:27 GMT
Is there a "good" motivation of why "abstract" classes have to be named 
"Abstract" "Base" or "Factory"?

If a class is declared "abstract", I want the *compiler* to tell the 
developer that s/he has not filled out a particular functionality when 
s/he extends the abstract class. Not that I want it named "Abstract". 
For example,

abstract class Muffin {
     abstract Kind kind();

I really don't want my code littered with method definitions like:

      void eat(AbstractMuffin muff) {

I want it to be:

      void eat(Muffin muff);

because that's what it is. It's not an AbstractMuffin, it's a Muffin!

Can we get rid of that particular checkstyle rule?

I say that, because it forces, either

a) illogical names, like AbstractMuffin, to be used in definitions, 
making for
    awkwardness. (i.e. eat(AbstractMuffin muff);

b) default implementations, just to avoid the illogical names!

      This particular avoidance causes errors to be caught at run time
      instead of compile time, where it should be caught! And sometimes 
      a loss of time to find it.

For example, with the current checkstyle rule I could be forced to write 
the class with
a default implementation expecting it to be overridden. (Except there is 
no way to tell a compiler that).

     class Muffin {
           Kind kind() {
                 return Kind.BLUEBERRY;

      void eat(Muffin muff) {
        System.out.println("I'm eating a " + muff.kind() + " muffin!");

and a developer goes ahead and writes:

       class CornMuffin extends Muffin {
            Kind kiend() {
                  return Kind.CORN;

and it compiles fine without problems. Subsequently he can't figure out 
why his application still says he has a BLUEBERRY muffin, especially 
when he has used "eat(new CornMuffin())".

This kind of pattern complete adverted the use of compiler protections.


View raw message