Re: coding style document

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/13/2011 10:52 AM, Yehuda Sadeh Weinraub wrote:
* Naming>  Type Names:

    Google uses CamelCaps for all type names.  We use two naming schemes:

    - for structs (simple data containers), lower case with _t suffix:
        struct my_type_t {
          int a, b;
          my_type_t() : a(0), b(0) {}
        };
I'd rather have the struct naming without the _t suffix (as with the C
code), and typedef to add _t, e.g.:

typedef struct my_type {
  ...
} my_type_t;

What is the advantage of the typedef?
    - for regular classes, CamelCaps, private: section, etc.

* Naming>  Variable Names:

   Google uses _ suffix for class members.  We haven't up until now.  Should we?
No.

* Naming>  Constant Names:

   Google uses kSomeThing for constants.  We prefere SOME_THING.

* Naming>  Function Names:

   Google uses CamelCaps.  We use_function_names_with_underscores().

   Accessors are the same, {get,set}_field().

* Naming>  Enumerator Names:

   Name them like constants, as above (SOME_THING).

* Comments>  File Comments:

   Don't sweat it, unless the license varies from that of the project (LGPL2) or
the code origin isn't reflected by the git history.

* Formatting>  Conditionals:

   - No spaces inside conditionals please, e.g.

        if (foo) {   // okay

        if ( foo ) { // no

   - Always use newline following if:

        if (foo)
          bar;         // okay

        if (foo) bar;  // no, usually hardler to visually parse




The following guidelines have not been followed in the legacy code,
but are worth mentioning and should be followed strictly for new code:

* Header Files>  Function Parameter Ordering:

    Inputs, then outputs.
I generally agree, just that there's a class of strcpy like functions
that put the destination first. This usually makes sense when you have
multiple functions that do similar things with varied input
parameters:

   char *strcpy(char *dest, const char *src);

   char *strncpy(char *dest, const char *src, size_t n);

So in both cases, dest and src are the first and second parameters,
which looks more consistent.

And there's also the case of using default values, which usually
(though not always) applies to the input parameters. Enforcing strict
input before output ordering wouldn't work there.


* Classes>  Explicit Constructors:

    You should normally mark constructors explicit to avoid getting silent
type conversions.


Yehuda
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux