I will rework to remove the package private and other access issues noted.

In Builder there is a difference between with() and build().  This follows
the pattern established by MessageDigest[1] where it is possible to build a
digest in one call or by adding multiple items and then calling digest.
The differences here are digest has an update() method the builder uses
with(), digest uses a digest() method to return the result builder uses
build().

The serializable classes are classes that in the indexing code are sent
across the wire or stored.  I suppose there are other ways to do this and
the serialization could be removed.  Not a direction I would like to take
but is doable.

HammingWeight and Log values re used in indexing.  I think HammingWeight is
used in the collections as well.  HammingWeight is a well known property of
a bloom filter.  The Log not so much so.  I suppose the log could be
removed and created as a separate library method that would execute against
BitSets.  Moving the calculation outside of the Bloom filter means that we
will have to make copies of bloom filters to perform the log and the log
will not be retained with the filter when used in indexing.

Murmer 128 hash is not in Commons Codec (at least I could not find it).
Perhaps it should be added?  I could extract the code and provide it there
if that is the appropriate solution.

ProtoBloomFilter is not an abbreviation of PrototypeBloomFilter as it is
not a Bloom filter but a primitive object from which Bloom filters may be
created.  I think this is a proper use of the Proto[2] prefix.

Package name plural.  I thought there was some disagreement on this,
however I will change it.

I will revert the FindBugs config change as it is now commented out
anyway.  How does one suppress the fall through checkstyle error.  I could
find no annotations that would suppress the error and did not want to add
another dependency to the build.  I did find that other components in the
project are using the checkstyle filter and so added the supression of the
FallThrough check.  I

The reference to what is a Bloom filter is in
bloomfilters/package-info.java.  Does there need to be a reference from the
BloomFilter interface definition to that?

Thank you for taking the time to review and comment.

Claude

[1]
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html
[2] https://www.dictionary.com/browse/proto?s=t

On Mon, Sep 23, 2019 at 11:13 AM Claude Warren <cla...@xenei.com> wrote:

> For the style issues.... is there an Eclipse style package that meets the
> commons style or some other tool that will correctly configure the format
> and style options in Eclipse?
>
> On Mon, Sep 23, 2019 at 10:54 AM Gilles Sadowski <gillese...@gmail.com>
> wrote:
>
>> Hello.
>>
>> Here are a few comment from a quick browse of today's update
>> of PR #83.
>>
>> * "package private for testing" is not a good reason (IMO)
>> * There are spurious blank spaces in some of the file ("git diff"
>> shows them in red)
>> * You should always perform "git rebase master"
>> * In "Builder":
>> ** Field "hashes" should be "final"
>> ** I still fail to see the necessity to duplicate "with" functionality
>> with "build" methods
>> * Why should so many classes be "Serializable"?
>> * "StandardBloomFilter" is documented as "immutable" but it is not:
>> There are 2 non "final" fields and 1 "final" but "protected" (hence
>> it can be modified outside the class without ensuring its invariants)
>> * IMHO use of transient fields is detrimental to the robustness of the
>> design: It seems that "hamming weight" is not _used_ by the
>> implementations (called only in the unit tests?)
>> * Ditto for "logValue"
>> * Did you check whether "murmur 128 hash" is available in "Commons
>> Codec"?
>> * Name of classes should not be abbreviated (cf. "Config", "Proto",
>> "Stats" ...)
>> * Package name is still plural: Should be singular IMO
>> * Rule checks general suppression should be removed in the config
>> files (CheckStyle, FindBugs) and replace by specific (within code)
>> statements
>> if applicable (e.g. the disabling of "no default in switch" is unnecessary
>> since AFAICT a "default" is always provided).
>> * All (also "private") fields and methods must be commented with Javadoc,
>> not just code comment.
>> * There should be a reference to what is a Bloom filter
>> * Occurrences of "bloom" should be replaced with "Bloom"
>> * There some style issues:
>> ** There should be no space after an opening parenthesis, or before
>> a closing one
>> ** Curly braces position: opening on the same line, closing on a
>> separate line
>>
>> Best regards,
>> Gilles
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>
>>
>
> --
> I like: Like Like - The likeliest place on the web
> <http://like-like.xenei.com>
> LinkedIn: http://www.linkedin.com/in/claudewarren
>


-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Reply via email to