[LLVMdev] RFC: variable names

Chandler Carruth chandlerc at google.com
Mon Oct 13 15:19:31 PDT 2014


On Mon, Oct 13, 2014 at 3:04 PM, Nick Kledzik <kledzik at apple.com> wrote:

> I’d like to discuss revising the LLVM coding conventions to change the
> naming of variables to start with a lowercase letter.
>

Almost all of your negatives of the current conventions also apply to your
proposed convention.

Type names: CamelCase
Function names: camelCase
Variable names: ???

If we name variables in camelCase then variable names and function names
collide.

If we are going to change how we name variables, I very much want them to
not collide with either type names or function names. My suggestion would
be "lower_case" names.

This also happens to be the vastly most common pattern across all C++
coding styles and C-based language coding styles I have seen.


>  This should not be a discussion on the pain of such a transition, or how
> to get from here to there, but rather, if there is a better place to be.
>
> My arguments for the change are:
>
> 1. No other popular C++ coding style uses capitalized variable names.  For
> instance here are other popular C++ conventions that use camelCase:
>
>    http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
>    http://www.c-xx.com/ccc/ccc.php
>    http://geosoft.no/development/cppstyle.html
>
> And, of course, the all-lower-case conventions (e.g. C++ ARM) don’t
> capitalize variable names.  In addition, all the common C derived languages
> don’t use capitalized variable names (e.g. Java, C#, Objective-C).
>
>
> 2. Ambiguity.  Capitalizing type names is common across most C++
> conventions.  But in LLVM variables are also capitalized which conflates
> types and variables.  Starting variable names with a lowercase letter
> disambiguates variables from types. For instance, the following are
> ambiguous using LLVM’s conventions:
>
> Xxx Yyy(Zzz);  // function prototype or local object construction?
> Aaa(Bbb);      // function call or cast?
>
>
> 3. Allows name re-use. Since types and variables are both nouns, using
> different capitalization allows you to use the same simple name for types
> and variables, for instance:
>
> Stream  stream;
>
>
> 4. Dubious history.  Years ago the LLVM coding convention did not specify
> if variables were capitalized or not.  Different contributors used
> different styles.  Then in an effort to make the style more uniform,
> someone flipped a coin and updated the convention doc to say variables
> should be capitalized.  I never saw any on-list discussion about this.
>
>
> 5. Momentum only.  When I’ve talked with various contributors privately, I
> have found no one who says they likes capitalized variables.  It seems like
> everyone thinks the conventions are carved in stone...
>
>
> My proposal is that we modify the LLVM Coding Conventions to have variable
> names start with a lowercase letter.
>
> Index: CodingStandards.rst
> ===================================================================
> --- CodingStandards.rst (revision 219065)
> +++ CodingStandards.rst (working copy)
> @@ -1073,8 +1073,8 @@
>    nouns and start with an upper-case letter (e.g. ``TextFileReader``).
>
>  * **Variable names** should be nouns (as they represent state).  The name
> should
> -  be camel case, and start with an upper case letter (e.g. ``Leader`` or
> -  ``Boats``).
> +  be camel case, and start with a lower case letter (e.g. ``leader`` or
> +  ``boats``).
>
>  * **Function names** should be verb phrases (as they represent actions),
> and
>    command-like function should be imperative.  The name should be camel
> case,
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141013/236e1e12/attachment.html>


More information about the llvm-dev mailing list