Much nicer.

I'll offer one additional suggestion for your consideration; it is up to you whether to take it or push as-is.

Other low-level builders in javadoc support fluent usage by having a return type of itself instead of void, and ending each method with "return this;"

This, for example, the following:

154 MemberSignature sig = new MemberSignature(constructor);
155 sig.addParameters(getParameters(constructor, true));
156 sig.addExceptions(getExceptions(constructor));
157 return sig.toContent();

could be simplified to:

154 return new MemberSignature(constructor);
155 .addParameters(getParameters(constructor, true));
156 .addExceptions(getExceptions(constructor));
157 .toContent();

-- Jon


On 06/03/2019 09:21 AM, Hannes Wallnöfer wrote:
I uploaded a new webrev with MemberSignature converted to a builder class:

http://cr.openjdk.java.net/~hannesw/8214126/webrev.04/

Hannes


Am 28.05.2019 um 20:07 schrieb Jonathan Gibbons <[email protected]>:



On 05/28/2019 10:59 AM, Jonathan Gibbons wrote:

On 05/28/2019 07:04 AM, Hannes Wallnöfer wrote:
  From an implementation side, I created a new HtmlTree subclass called 
MemberSignatureTree as an inner class of AbstractMemberWriter that implements 
the display policies listed above. It is used by all member signature writers, 
simplifying the #getSignature methods in various MemberWriter classes quite a 
bit.
Just from reading the description in this sentence, and without looking at the code yet, the style 
for such objects is to make them be "builder" objects ... not inheriting HtmlTree but 
having a "toContent" method that generates the tree when all the relevant information has 
been provided via set/add/put methods.

It makes sense to use a shared object to simplify the signature writes, but it 
doesn't sound right for it to be a subtype of HtmlTree, which is generally 
supposed to be a low level element that just has a tag, attributes and content.

-- Jon

For examples of existing builder-style classes, see Head, Table, TableHeader.

By deferring the construction of the HtmlTree, you can relax the order in which 
the configuration methods are called, and can wait to make decisions about the 
generated HTML until you have total knowledge of all the component parts.

-- Jon

Reply via email to