Hi folks.

Recently, I’ve seen patches go by using the C++11 “auto” keyword. For example, 
let me pick on Andreas:

> <http://trac.webkit.org/changeset/161143>
> 
> +    auto newRenderer = textNode.createTextRenderer(style);
> +    ASSERT(newRenderer);
> 
> ….
> 
> +    parentRenderer->addChild(newRenderer.leakPtr(), nextRenderer);

I think this use of “auto” is net harmful. 

Upsides:

- Less typing

Downsides:

- I don’t know the type of ’newRenderer’ at a glance
- Navigating to newRenderer’s class definition is a two-step process: (1) Go to 
the definition of createTextRenderer and see what it returns; (2) Go to the 
definition of (1).

I think the downsides outweigh the upsides here because reading code is more 
common than writing code, and because it’s not *that* much typing to write out 
"RenderPtr< RenderText>”. In this particular code, I think it’s especially bad 
to disguise the type of a pointer in the render tree, since we’re in the middle 
of a transition to a new type of pointer, and so it’s important to know if 
you’re looking at code that does the new thing or the old thing.

I think an appropriate style guideline for “auto” would say something like:

- Use “auto" to declare a disgusting templated iterator type in a loop
- Use “auto… ->" to define a template-dependent return type in a class template
- In all other cases, use an explicit type declaration

Thoughts?

Thanks,
Geoff
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to