avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eugene Kirpichov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (AVRO-1680) Problems with code snippet in Decoder#readMapStart javadocs
Date Tue, 09 Jun 2015 20:56:01 GMT
Eugene Kirpichov created AVRO-1680:

             Summary: Problems with code snippet in Decoder#readMapStart javadocs
                 Key: AVRO-1680
                 URL: https://issues.apache.org/jira/browse/AVRO-1680
             Project: Avro
          Issue Type: Improvement
          Components: java
    Affects Versions: 1.7.7
            Reporter: Eugene Kirpichov
            Priority: Trivial

javadocs ( http://avro.apache.org/docs/1.7.7/api/java/org/apache/avro/io/Decoder.html#readMapStart()
) say:
    Map m = new HashMap();
    Record reuse = new Record();
    for(long i = in.readMapStart(); i != 0; i = in.readMapNext()) {
      for (long j = 0; j < i; j++) {
        String key = in.readString();
        reuse.intField = in.readInt();
        reuse.boolField = in.readBoolean();
        m.put(key, reuse);

This can be improved in two ways:
1) Javadoc ate the generic arguments. This can be fixed by wrapping into \{@code}.
2) The mutable record object is being reused; as a result, the map will have the same shared
object mapped to every key. I don't think this is likely to be the user's intention, so a
new Record should be created on every iteration.

Actually in 3 ways.
3) a much better name for "i" would be "numRecords", because otherwise it seems like "j" and
"i" have similar roles (indices over some containers), which they don't - "i" is not an index
into any container, only j is. Then "j" can be renamed to "i".

This message was sent by Atlassian JIRA

View raw message