On Jan 2, 2014, at 1:12 PM, Geoffrey Garen <gga...@apple.com> wrote:
> 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 agree. Code is read more than it is written. In many cases, the types of variables - even nasty templated ones - convey useful information that makes the code easier to read. I think that "auto" is only a good idea if the presence of the full type would be either completely redundant or would make the code hard to read by virtue of being unusually long (>80 chars, like some intense HashMap instantiations). Crucially, while the C++ compiler has a smart type inference engine that can see a lot of code all at once, a typical human reader lacks such powers and so "auto" results in a net loss of information. > > 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? I like this. I would like to see this be added to the style guide. -Filip > > Thanks, > Geoff > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev