commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruno P. Kinoshita" <brunodepau...@yahoo.com.br>
Subject [functor] Use Validate.notNull and remove unreachable code
Date Tue, 24 Jul 2012 00:08:43 GMT
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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message