The return type of the following method in org.jaxen.BaseXPath is 
questionable, IMO:

public BaseXPath <cid:[EMAIL PROTECTED]> *addNamespace*(String 
<http://java.sun.com/products/jdk/1.3/docs/api/java/lang/String.html> prefix, String 
<http://java.sun.com/products/jdk/1.3/docs/api/java/lang/String.html> uri) throws 
JaxenException


Why does it return BaseXPath? Shouldn't it return void? Does this really create a 
new and different object rather than changing the existing object? (The JavaDoc 
is regrettably missing.) If it's merely changing an existing object the standard
return type is void.

I suspect it's trying to allow statements like this:


xpath.addNamespace("prefix", "uri").addNamespace("prefix2", 
"uri2").addNamespace("prefix3", "uri3");

 <cid:[EMAIL PROTECTED]>

Honestly, however, I find this extremely ugly and would never 
write code like this, even if I could. It won't even be necessary
in the majority of cases that use zero or one namespace.
Returning an object itself from what amounts to a setter method
is just strange. It is not a normal pattern in Java. I think this method
should simple return void.

-- 
+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | [EMAIL PROTECTED] | Writer/Programmer |
+-----------------------+------------------------+-------------------+ 
|           The XML Bible, 2nd Edition (IDG Books, 2001)             |
|             http://www.cafeconleche.org/books/bible2/              |
|   http://www.amazon.com/exec/obidos/ISBN=0764547607/cafeaulaitA/   |
+----------------------------------+---------------------------------+
|  Read Cafe au Lait for Java News:   http://www.cafeaulait.org/     | 
|  Read Cafe con Leche for XML News:  http://www.cafeconleche.org/   |
+----------------------------------+---------------------------------+

Reply via email to