[ https://issues.apache.org/jira/browse/NUMBERS-123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16877335#comment-16877335 ]
Heinrich Bohne commented on NUMBERS-123: ---------------------------------------- I just googled a bit about factory methods vs constructors, and it turns out there are indeed some differences between the two that I had not considered before, so now I understand your preference for factory methods a bit better. With this renewed perspective on the issue, I think that the most "consistent" design would really be to strip the constructor of _all_ validation responsibilities and reduce it to a mere input interface that simply accepts arguments and assigns them to the fields (which is the only thing that _must_ be done inside a constructor and not a factory method, because a static factory method cannot do that). When viewing the purpose of a constructor this way, there can, by definition, not be more than one constructor. But, as I said, this is not really of great importance, I just wanted to share the thought. > "BigFraction(double)" is unnecessary > ------------------------------------ > > Key: NUMBERS-123 > URL: https://issues.apache.org/jira/browse/NUMBERS-123 > Project: Commons Numbers > Issue Type: Improvement > Components: fraction > Reporter: Gilles > Assignee: Gilles > Priority: Trivial > Fix For: 1.0 > > Attachments: NUMBERS-123__Javadoc.patch > > Time Spent: 0.5h > Remaining Estimate: 0h > > Constructor {{BigFraction(double value)}} is only called from the > {{from(double value)}} method. > Actually, this constructor is misleading as it is indeed primarily a > conversion from which appropriate {{numerator}} and {{denominator}} fields > are computed; those could be set by > the "direct" constructor {{BigFraction(BigInteger num, BigInteger den)}}. > Moreover, the private field {{ZERO}} goes through this conversion code > whereas it could constructed "directly", e.g. using {{of(0)}}. Similarly for > field {{ONE}}. -- This message was sent by Atlassian JIRA (v7.6.3#76005)