Hi all, 

I'm working on FUNCTOR-12 [1], writing tests for [functor] and learning more 
about its code base, and could do with some help :-)

Some parts of [functor] code, specially constructors, use Validate.notNull(...) 
from Commons Lang3. Other partsĀ  throw NullPointerException when the argument 
is null. But there are also parts that use nothing to validate the arguments.

0) I would like to add the method Validate.notNull(...) where necessary in 
[functor], if no one objects. Right now, I'm working on the following composite 
functors: TransformedProcedure, TransformedFunction, TransformedBinaryProcedure 
and TransformedBinaryFunction. None of these validates the arguments, while 
OTOH, TransposedFunction, TransposedPredicate and TransposedProcedure, classes 
in the same package, use Validate.notNull(...).

1) There is also unreachable code, specially in equals() methods, that checks 
if an object is null before accessing its methods. But this object can never be 
null, as Validate.notNull(...) or throw NPE is used to assert this in the 
constructor. There is no other way to set this object. (You can still change it 
through reflection, but don't think it is worth keeping it only for this 
reason). I was wondering if we could remove the unreachable code, as there is 
no way to write test code for it. [2] is an example of unreachable code (one of 
its conditions), with the tests in [3] (there is no way to have a null 
predicate). It will simplify the code, reducing decision branches and will 
increase the test coverage too.

Many thanks in advance!

[1] https://issues.apache.org/jira/browse/FUNCTOR-12
[2] 
https://github.com/kinow/functor/blob/master/src/main/java/org/apache/commons/functor/core/composite/UnaryNot.java#L82
[3] 
https://github.com/kinow/functor/blob/master/src/test/java/org/apache/commons/functor/core/composite/TestUnaryNot.java#L53

Bruno P. Kinoshita
http://kinoshita.eti.br
http://tupilabs.com


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to