On Thu, Jan 2, 2014 at 4:12 PM, Geoffrey Garen <[email protected]> wrote:
> 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 support this. On Thu, Jan 2, 2014 at 5:55 PM, Brent Fulgham <[email protected]> wrote: > > Coming back to your earlier example: > > auto newSize = optimalSize(); > vs: > > CGSize newSize = optimalSize(); > > > If I understand your argument, you feel that the explicit CGSize > declaration helps the reader because it makes the return value of > optimalSize() explicit. > It also clarifies that newSize is, indeed, CGSize. It's often useful to clarify the type of a local variable. However, that declaration is only stating the type that the author *thinks* > optimalSize() returns. There is nothing to guarantee that optimalSize() > returns a CGSize; only that it returns something that the compiler can turn > into a CGSize through some set of casts. > > The code stating CGSize could have been correct at one point, but the > return type of optimalSize might have been changed to some similar type > without anyone noticing. > This is why we have the following style guideline: https://www.webkit.org/coding/coding-style.html#classes-explicit "Use a constructor to do an implicit conversion when the argument is reasonably thought of as a type conversion and the type conversion is fast. Otherwise, use the explicit keyword or a function returning the type. This only applies to single argument constructors." Having said that, I can see there could be cases where "auto" is more appropriate because we want to match the type of whatever function we're calling e.g. inside a template. - R. Niwa
_______________________________________________ webkit-dev mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-dev

