[Spice-devel] Coding style and naming conventions for C++
Lukáš Hrázký
lhrazky at redhat.com
Mon Jan 29 14:19:37 UTC 2018
Hello everybody,
I'd like to discuss a few things about the coding style for C++ in
Spice (looking at the streaming agent atm).
Trying to keep this short and concise.
1. Method names
Currently the method names are in CamelCase throughout the streaming
agent. Methods are basically functions attached to a class, I suggest
we use snake_case to be consistent with the function names.
It's rather confusing when you see a call like SomeObject(), which
looks like a constructor, but you actually find out it's a method call
from another method of the same class.
2. Namespace names
Although not standard (you may have different experience), usually
namespaces are lowercase in C++. Also, they are hierarchical, I suggest
we use that and in streaming agent we change the namespace like so:
SpiceStreamingAgent -> spice::streamingagent
or (imho better):
SpiceStreamingAgent -> spice::streaming_agent
And stick to this scheme, i.e. lowercase and toplevel namespace
'spice', inside it a namespace of the component.
3. Namespace coding style
a) Let's not use `using namespace ...` ever even in .cpp files (see
i.e. [1]). In streaming agent we have at the beginning of every .cpp:
using namespace std;
using namespace SpiceStreamingAgent;
For namespace std, "std::" is not a long prefix, clearly expresses the
identifier is from the standard library and AFAIK most C++ projects use
it this way.
For namespace SpiceStreamingAgent, I didn't even know it worked for
definition of symbols in the namespace. First time I see it, it is very
unusual. see b).
b) Let's keep the following coding style for namespaces, i.e. for
streaming agent:
namespace spice {
namespace streaming_agent {
THE_CODE
}} // namespace spice::streaming_agent
We should add the guidelines to the website next to the C coding style,
but I have no intention to be exhaustive (see [1] for how long it can
be), let's add important cases as they come up and just use common
sense, keep the style of the local code and codereview to keep things
in check?
Lukas
[1] https://google.github.io/styleguide/cppguide.html#Namespaces
More information about the Spice-devel
mailing list