[ 
https://issues.apache.org/jira/browse/POOL-203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13172084#comment-13172084
 ] 

Phil Steitz commented on POOL-203:
----------------------------------

I tend to agree with Mark on this.  It may be a matter of taste; but I see it 
as desirable actually that "the main code" be aware of the internals of this 
particular data structure.  It makes the code easier for me to understand and 
trace.  There are a lot of things that you have to hold in your head when 
working with this code, no matter how you cut it and having more of the 
structure immediately evident makes it a little easier to work with. Better 
in-line and javadoc documentation explaining all of the invariants and 
contracts is definitely needed; but I am not sure more data abstraction will 
really help much at this point.  Also, the first two above are likely trivial 
because they are not accessed that frequently, but the last one might have a 
slight negative performance impact, as it is very frequently activated and, 
like the other two, forces an additional stack operation to activate the 
wrapper function.
                
> GenericKeyedObjectPool.ObjectDeque could be better encapsulated
> ---------------------------------------------------------------
>
>                 Key: POOL-203
>                 URL: https://issues.apache.org/jira/browse/POOL-203
>             Project: Commons Pool
>          Issue Type: Improvement
>            Reporter: Sebb
>            Priority: Minor
>
> GenericKeyedObjectPool.ObjectDeque is currently basically just a collection 
> of Objects with getters.
> This necessarily exposes the implementation, and makes adding invariant 
> checks a lot harder - e.g. ensuring createCount >=0.
> The suggestion is to replace the getters with functional methods, for example:
> objectDeque.getCreateCount().incrementAndGet() => objectDeque.createdEntry();
> objectDeque.getAllObjects().put(t, p); => objectDeque.addNew(t, p);
> objectDeque.getIdleObjects().addFirst(p)/addLast(p) => 
> objectDeque.idle(p,getLifo())
> The new methods could include assertions for invariants, and adding debug 
> would be a doddle.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to