[jdom-interest] XMLOutputter observations

Jason Hunter jhunter at xquery.com
Thu Feb 26 15:15:43 PST 2004


> 1. lines 59...: imports with * should be expanded (to eliminate 
> non-dependencies).

I just don't like expanding.  There's no performance improvement with 
expanding, it just takes up extra lines.  For me, expanding is useful to 
disambiguate collisions, otherwise I'm a * man all the way.  I have 
IntelliJ set to do a * as soon as there's two classes from a package.

I realize this is a religious issue.  You can debate the point, but you 
won't change anyone's mind.

> 2. skipTrialingWhite (line 1220) - spelling should be skipTrailingWhite
>    - this method is private so it's not very important

Now that's funny.  I fixed the name.

> 3. outputString (lines 524...) - these methods are perhaps in the wrong 
> class. Although a clever convenience, they rather fatten the class with 
> something that could have been separate (e.g. as a helper class or a 
> derived class).

That point can be argued, but we're certainly not changing it after four 
years.  :-)  And the counterpoint can be argued too, that it's an 
XMLOutputter.  Choose your output sink: stream, writer, or string.

> 4. I am uneasy that the output(Document doc, OutputStream out) method, 
> which writes a whole document in one go, sits alongside a suite of other 
> output methods that write a document part by part. These seem to me to 
> be different ways of doing the same thing; perhaps therefore they should 
> be done by different classes (?).

Again, not after four years.  :-)

> 5. Eclipse points out some other redundant imports:
> XMLOutputter only needs
> import java.io.BufferedOutputStream;
> import java.io.BufferedWriter;
> import java.io.IOException;
> import java.io.OutputStream;
> import java.io.OutputStreamWriter;
> import java.io.StringWriter;
> import java.io.Writer;
> import java.util.List;
> import org.jdom.Attribute;
> import org.jdom.CDATA;
> import org.jdom.Comment;
> import org.jdom.DocType;
> import org.jdom.Document;
> import org.jdom.Element;
> import org.jdom.EntityRef;
> import org.jdom.Namespace;
> import org.jdom.ProcessingInstruction;
> import org.jdom.Text;

I prefer

import java.io.*;
import java.util.*;
import org.jdom.*;

Much easier for humans to read, same effect on the compiler.  :-)

Let us know if you find other issues.

-jh-




More information about the jdom-interest mailing list