[jira] Created: (MATH-348) Indirect access to instance variables

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)
Indirect access to instance variables
-------------------------------------

                 Key: MATH-348
                 URL: https://issues.apache.org/jira/browse/MATH-348
             Project: Commons Math
          Issue Type: Improvement
    Affects Versions: 2.0
            Reporter: Gilles
            Priority: Trivial


In all the methods (except the setters/getters) of
  BinomialDistributionImpl
  CauchyDistributionImpl
  ExponentialDistributionImpl
  FDistributionImpl
  GammaDistributionImpl
  HypergeometricDistributionImpl
  TDistributionImpl
  NormalDistributionImpl
  WeibullDistributionImpl
  ZipfDistributionImpl
the instance variables are accessed through their respective getter.
This is confusing (and possibly inefficient).
What would be the expected behaviour of the getter if it were overriden?


--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)

    [ https://issues.apache.org/jira/browse/MATH-348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12841973#action_12841973 ]

Ted Dunning commented on MATH-348:
----------------------------------

Gilles said in email:
{quote}
> I don't see any changes proposed.

I propose to use the instance variable in place of the accessor.

> I see a couple of statements that getters are used (usually considered
> good), and a question about over-riding.

Getters are for accessing to encapsulated data. Within the class itself the
data is readily accessible, so using the accessor is, at best, less
efficient.
Moreover, if, by mistake, a sub-class overrides the accessor, you can get
inconsistent result: the overridden accessor can return some value while it
is another (the one stored in the instance variable) that is used to perform
the calculation.
{quote}

> Indirect access to instance variables
> -------------------------------------
>
>                 Key: MATH-348
>                 URL: https://issues.apache.org/jira/browse/MATH-348
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Gilles
>            Priority: Trivial
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> In all the methods (except the setters/getters) of
>   BinomialDistributionImpl
>   CauchyDistributionImpl
>   ExponentialDistributionImpl
>   FDistributionImpl
>   GammaDistributionImpl
>   HypergeometricDistributionImpl
>   TDistributionImpl
>   NormalDistributionImpl
>   WeibullDistributionImpl
>   ZipfDistributionImpl
> the instance variables are accessed through their respective getter.
> This is confusing (and possibly inefficient).
> What would be the expected behaviour of the getter if it were overriden?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)
In reply to this post by Gary D. Gregory (Jira)

    [ https://issues.apache.org/jira/browse/MATH-348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12841976#action_12841976 ]

Ted Dunning commented on MATH-348:
----------------------------------


I agree that the usage should be consistent within a class.  If instance variables are used to compute the result, then the class should use only instance variables.  If getters are used instead, then they should be used everywhere in the class.  

I doubt very seriously that there is any measurable performance.  JIT's are very good a converting getters into in-line code.

That means that there are two possible courses of action:

a) avoid getters within a class

b) always use getters

Neither of these would be adversely impacted by sub-classing.  In fact, I can imagine that there would be a few cases where it would be very, very useful to be able to over-ride the getter in order to force the class to do something interesting.  Those probably are corner cases that could be handled by using the setters appropriately.



> Indirect access to instance variables
> -------------------------------------
>
>                 Key: MATH-348
>                 URL: https://issues.apache.org/jira/browse/MATH-348
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Gilles
>            Priority: Trivial
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> In all the methods (except the setters/getters) of
>   BinomialDistributionImpl
>   CauchyDistributionImpl
>   ExponentialDistributionImpl
>   FDistributionImpl
>   GammaDistributionImpl
>   HypergeometricDistributionImpl
>   TDistributionImpl
>   NormalDistributionImpl
>   WeibullDistributionImpl
>   ZipfDistributionImpl
> the instance variables are accessed through their respective getter.
> This is confusing (and possibly inefficient).
> What would be the expected behaviour of the getter if it were overriden?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)
In reply to this post by Gary D. Gregory (Jira)

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

Gilles updated MATH-348:
------------------------

    Description:
In all the methods (except the setters/getters) of

*  BinomialDistributionImpl
*  CauchyDistributionImpl
* ExponentialDistributionImpl
* FDistributionImpl
*  GammaDistributionImpl
*  HypergeometricDistributionImpl
*  TDistributionImpl
*  NormalDistributionImpl
*  WeibullDistributionImpl
*  ZipfDistributionImpl

the instance variables are accessed through their respective getter.
This is confusing (and possibly inefficient).
What would be the expected behaviour of the getter if it were overriden?


  was:
In all the methods (except the setters/getters) of
  BinomialDistributionImpl
  CauchyDistributionImpl
  ExponentialDistributionImpl
  FDistributionImpl
  GammaDistributionImpl
  HypergeometricDistributionImpl
  TDistributionImpl
  NormalDistributionImpl
  WeibullDistributionImpl
  ZipfDistributionImpl
the instance variables are accessed through their respective getter.
This is confusing (and possibly inefficient).
What would be the expected behaviour of the getter if it were overriden?



> Indirect access to instance variables
> -------------------------------------
>
>                 Key: MATH-348
>                 URL: https://issues.apache.org/jira/browse/MATH-348
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Gilles
>            Priority: Trivial
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> In all the methods (except the setters/getters) of
> *  BinomialDistributionImpl
> *  CauchyDistributionImpl
> * ExponentialDistributionImpl
> * FDistributionImpl
> *  GammaDistributionImpl
> *  HypergeometricDistributionImpl
> *  TDistributionImpl
> *  NormalDistributionImpl
> *  WeibullDistributionImpl
> *  ZipfDistributionImpl
> the instance variables are accessed through their respective getter.
> This is confusing (and possibly inefficient).
> What would be the expected behaviour of the getter if it were overriden?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Resolved: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)
In reply to this post by Gary D. Gregory (Jira)

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

Gilles resolved MATH-348.
-------------------------

       Resolution: Fixed
    Fix Version/s: 2.1

Issue is fixed in revision 920852.
Setters were marked as deprecated.


> Indirect access to instance variables
> -------------------------------------
>
>                 Key: MATH-348
>                 URL: https://issues.apache.org/jira/browse/MATH-348
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Gilles
>            Priority: Trivial
>             Fix For: 2.1
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> In all the methods (except the setters/getters) of
> *  BinomialDistributionImpl
> *  CauchyDistributionImpl
> * ExponentialDistributionImpl
> * FDistributionImpl
> *  GammaDistributionImpl
> *  HypergeometricDistributionImpl
> *  TDistributionImpl
> *  NormalDistributionImpl
> *  WeibullDistributionImpl
> *  ZipfDistributionImpl
> the instance variables are accessed through their respective getter.
> This is confusing (and possibly inefficient).
> What would be the expected behaviour of the getter if it were overriden?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Closed: (MATH-348) Indirect access to instance variables

Gary D. Gregory (Jira)
In reply to this post by Gary D. Gregory (Jira)

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

Phil Steitz closed MATH-348.
----------------------------


> Indirect access to instance variables
> -------------------------------------
>
>                 Key: MATH-348
>                 URL: https://issues.apache.org/jira/browse/MATH-348
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Gilles
>            Priority: Trivial
>             Fix For: 2.1
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> In all the methods (except the setters/getters) of
> *  BinomialDistributionImpl
> *  CauchyDistributionImpl
> * ExponentialDistributionImpl
> * FDistributionImpl
> *  GammaDistributionImpl
> *  HypergeometricDistributionImpl
> *  TDistributionImpl
> *  NormalDistributionImpl
> *  WeibullDistributionImpl
> *  ZipfDistributionImpl
> the instance variables are accessed through their respective getter.
> This is confusing (and possibly inefficient).
> What would be the expected behaviour of the getter if it were overriden?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.