On Tue, Aug 30, 2011 at 4:35 AM, Caleb James DeLisle
<calebdeli...@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-transformations/xwiki-rendering-transformation-icon/src/main/java/org/xwiki/rendering/internal/transformation/icon/IconTransformation.java
>
> 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@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to