Since images do not work with pony mail, enclosed please find them as
attachments.

Best regards
Jing

On Thu, Oct 14, 2021 at 6:43 PM Jing Ge <j...@ververica.com> wrote:

> Agree. If the description contains more information than the return tag
> comment. Part of content overlap is acceptable. Otherwise I think it
> depends on the visibility and influence of the API. Agree again, it is not
> a big issue for internal interfaces and classes. But for some core public
> APIs that will be used by many application developers, such redundancy
> looks unprofessional and sometimes even confused, e.g. using read mode in
> Intellij Idea, it will look like:
>
> [image: image.png]
> [image: image.png]
>
> When I read these for the first time, I was confused, why again and again?
> Is there anything wrong with my Intellij idea, maybe the rendering has a
> bug? After I realized it was the "paragon of redundancy" - word from
> Robert C. Martin, you could imagine my feeling about the code quality at
> that time :-).
>
> I would suggest doing clean-up for some core public APIs that have an
> impact on application developers.
>
> best regards
> Jing
>
> On Thu, Oct 14, 2021 at 3:24 PM Piotr Nowojski <pnowoj...@apache.org>
> wrote:
>
>> +1 for trying to clean this up, but I'm not entirely sure in which
>> direction. Usually I was fixing this towards option 1. I agree, in your
>> example option 2. looks much better, but usually the javadoc contains a
>> bit
>> more information, not only copy/pasted @return text. For example:
>>
>>     /**
>>      * Send out a request to a specified coordinator and return the
>> response.
>>      *
>>      * @param operatorId specifies which coordinator to receive the
>> request
>>      * @param request the request to send
>>      * @return the response from the coordinator
>>      */
>>     CompletableFuture<CoordinationResponse> sendCoordinationRequest
>>
>> Sometimes this can be split quite nicely between @return and main java
>> doc:
>>
>>     /**
>>      * Try to transition the execution state from the current state to the
>> new state.
>>      *
>>      * @param currentState of the execution
>>      * @param newState of the execution
>>      * @return true if the transition was successful, otherwise false
>>      */
>>     private boolean transitionState(ExecutionState currentState,
>> ExecutionState newState);
>>
>> but that's not always the case.
>>
>> At the same time I don't have hard feelings either direction. After all it
>> doesn't seem to be that big of an issue even if we leave it as is.
>>
>> Best,
>> Piotrek
>>
>> czw., 14 paź 2021 o 14:25 Jing Ge <j...@ververica.com> napisał(a):
>>
>> > Hi Flink developers,
>> >
>> > It might be a good idea to avoid the redundant javadoc comment found in
>> > some classes, e.g. org.apache.flink.core.fs.Path w.r.t. the @Return tag
>> > comment on some methods.
>> >
>> > To make the discussion clear, let's focus on a concrete example(there
>> are
>> > many more):
>> >
>> > > /**
>> > >  * Returns the FileSystem that owns this Path.
>> > >  *
>> > >  * @return the FileSystem that owns this Path
>> > >  * @throws IOException thrown if the file system could not be
>> retrieved
>> > >  */
>> > > public FileSystem getFileSystem() throws IOException {
>> > >     return FileSystem.get(this.toUri());
>> > > }
>> > >
>> > >
>> > In order to remove the redundancy, there are two options:
>> >
>> > option 1: keep the description and remove the @Return tag comment:
>> >
>> > > /**
>> > >  * Returns the FileSystem that owns this Path.
>> > >  *
>> > >  * @throws IOException thrown if the file system could not be
>> retrieved
>> > >  */
>> > > public FileSystem getFileSystem() throws IOException {
>> > >     return FileSystem.get(this.toUri());
>> > > }
>> > >
>> > > option 2: keep the @return tag comment and remove the duplicated
>> > description:
>> >
>> > > /**
>> > >  * @return the FileSystem that owns this Path
>> > >  * @throws IOException thrown if the file system could not be
>> retrieved
>> > >  */
>> > > public FileSystem getFileSystem() throws IOException {
>> > >     return FileSystem.get(this.toUri());
>> > > }
>> > >
>> > > It looks like these two options are similar. From the developer's
>> > perspective, I would prefer using @return tag comment, i.e. option 2.
>> > Having an explicit @return tag makes it easier for me to find the return
>> > value quickly.
>> >
>> > This issue is very common, it has been used as a Noise Comments example
>> in
>> > Uncle Bob's famous "Clean Code" book on page 64 but unfortunately
>> without
>> > giving any clear recommendation about how to solve it. From
>> Stackoverflow,
>> > we can find an interesting discussion about this issue and developer's
>> > thoughts behind it:
>> >
>> >
>> https://stackoverflow.com/questions/10088311/javadoc-return-tag-comment-duplication-necessary
>> > .
>> > Javadoc 16 provides even a new feature to solve this common issue.
>> >
>> > Since @return is recommended to use for the javadoc, I would suggest
>> Flink
>> > community following it and therefore open this discussion to know your
>> > thoughts. Hopefully we can come to an agreement about this. Many thanks.
>> >
>> > Best regards
>> > Jing
>> >
>>
>

Reply via email to