Sebb created CRYPTO-30:
--------------------------

             Summary: Mutable fields should be private
                 Key: CRYPTO-30
                 URL: https://issues.apache.org/jira/browse/CRYPTO-30
             Project: Commons Crypto
          Issue Type: Bug
            Reporter: Sebb


Mutable fields should be private or possibly package-protected, never protected 
or public.

Once a field is published, it's impossible to ensure that it is properly 
synchronised, and it is impossible to change the implementation without API 
breakage.

Only constants should be published.
If there is really a need to access the field externally, this should be done 
through getters/setters, as those allow synchronisation to be added and make it 
easier to change the implementation.

Also, it's easy to add a getter/setter later if access is found to be needed.
Don't add one 'just in case' because it cannot easily be removed.

This observation applies to:

StreamOutput.out
CTRCipherInputStream.streamOffset
CTRCipherOutputStream.streamOffset
CipherInputStream - lots of protected mutable state
CipherOutputStream - ditto



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to