On Tue, Aug 30, 2011 at 4:35 AM, Caleb James DeLisle
<calebdelisle(a)lavabit.com> wrote:
I have found that I like static private functions
because they allow me to make promises about my code, making it more self explanatory and
I was interested in opinions from others about it.
It's not something I would want to force on other people but I would use it myself if
people don't think it's too messy.
Reasoning:
A private method which does not touch any state of the is easy to review, it has no side
channels to modify or access information so:
#1 with the same inputs it will always give the same output.
#2 it will not affect the world around it aside from it's inputs and output (no
surprise side effects).
By declaring the private method static, you make that promise and the compiler will hold
you to it.
As a reviewer I can let my guard down when looking at the code because it doesn't
affect object state so it can't be the source of some types of bugs. The code is
sandboxed so to speak.
These assumptions do not hold true if static variables are used but I believe those
should never be used unless absolutely necessary and when they are, code should be
reviewed more closely anyway.
Example:
https://github.com/xwiki/xwiki-rendering/blob/master/xwiki-rendering-transf…
If I were writing this now, I would be tempted to make these into static functions:
private Block convertToDeepTree(Block sourceTree, String iconName)
private void mergeTree(Block targetTree, Block sourceTree)
private int indexOf(List<Block> targetBlocks, Block block)
private boolean blockEquals(Block target, Block source)
Anyone have any thoughts on this pattern?
Private static methods without side effects... looks like you're
promoting a kind of functional programming style :)
Which is good imho.
-Fabio
Caleb
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs