You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gilles (JIRA)" <ji...@apache.org> on 2015/08/20 16:40:46 UTC

[jira] [Updated] (MATH-734) Code cleanup: "ISAACRandom"

     [ https://issues.apache.org/jira/browse/MATH-734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gilles updated MATH-734:
------------------------
         Assignee:     (was: Gilles)
    Fix Version/s: 4.0

> Code cleanup: "ISAACRandom"
> ---------------------------
>
>                 Key: MATH-734
>                 URL: https://issues.apache.org/jira/browse/MATH-734
>             Project: Commons Math
>          Issue Type: Improvement
>            Reporter: Gilles
>            Priority: Minor
>             Fix For: 4.0
>
>
> In revision 1232899, I started to clean up the code (mainly, removing the one-letter instance variables, that can easily be confused with local ones within methods, making the code harder to understand and maintain).
> Other points I'd want to handle:
> * Should "Serializable" be implemented for such classes? I think not; especially if it supposed to be used for "secure" applications.
> * (Related to the above) I'd remove the "transient" keyword.
> * The contents of method "allocArrays" should be moved to within the constructor.
> * It is not recommended to call non-final "public" methods ("setSeed") from within the constructor, because an overriding code could access a not fully initialized object.
> * All initializations should take place within a single, most general, constructor and the other constructors should call that one (using the {{this(...)}} statement).
> * This code (line 130)
> {code}
> if (seed == null) {
>   setSeed(System.currentTimeMillis() + System.identityHashCode(this));
>   return;
> }
> {code}
> should probably be removed: it is safer to consider passing a null reference as a user error.
> * I'd remove the constructor taking a {{long}} argument. It is not obvious how the code will use the argument. I'd rather offer that alternative, in the class documentation,  as an example of how to initialize the "array of integers" argument.



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