On Mon, 21 Jul 2025 11:57:38 GMT, David Beaumont <d...@openjdk.org> wrote:

>> src/java.base/share/classes/jdk/internal/jimage/ImageReader.java line 279:
>> 
>>> 277:         }
>>> 278: 
>>> 279:         /// Returns a node in the JRT filesystem namespace, or null if 
>>> no resource or
>> 
>> Using the standard javadoc tags for @param, @return can give some 
>> consistency and readability even for internal methods.
>
> Absolutely. This sort of thing is always a balance between clarity and 
> conciseness. But here I think you're right so I pulled the `name` into a 
> `@param`. I dislike doing it for the return types in most cases though, since 
> that encourages duplication with the method's first sentence.

The {@return 1st sentence text} can be used on the first line and javadoc will 
put the text in both places without needing duplication in the source.  
[(javadoc  tag 
specification](https://docs.oracle.com/en/java/javase/22/docs/specs/javadoc/doc-comment-spec.html))

>> src/java.base/share/classes/jdk/internal/jimage/ImageReader.java line 611:
>> 
>>> 609:          *
>>> 610:          * <p>If this node is not a directory ({@code isDirectory() == 
>>> false})
>>> 611:          * then this method will throw {@link IllegalStateException}.
>> 
>> A mismatch in overriding could give inconsistent results (since the impl 
>> does not call `isDirectory()`.
>
> True, though would you prefer to change the comment ("by default this method 
> throws... and is overridden by directory subclasses...") or the 
> implementation of things like `getChildNames()` so they call `isDirectory()` ?
> 
> Personally I dislike this "test and call" approach and would rather have 
> restructured the API to be more object-oriented, and have callers use a more 
> structured dispatch mechanism (but this would incur cost of lambdas etc.), 
> but that's a really disruptive change.
> 
> Alternatively a type token/enum of some sort could be used to define node 
> type. This is all internal/trusted API though, so I'm happy with trusting 
> that things "do what they say" (it's going to be really obvious if something 
> claims to be a directory and then throws when asks for its child names, and 
> that's almost exclusively why anyone calls isDirectory() to start with).
> 
> So in summary, apart from maybe tweaking the comment slightly, I think this 
> is fine as is.

I would change the comment.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26054#discussion_r2222946949
PR Review Comment: https://git.openjdk.org/jdk/pull/26054#discussion_r2222934325

Reply via email to