szaszm commented on a change in pull request #1146:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1146#discussion_r679208828



##########
File path: CONTRIB.md
##########
@@ -15,24 +15,59 @@
 
 # Apache NiFi - MiNiFi - C++ Contribution Guide
 
-
-We welcome all contributions to Apache MiNiFi. To make development easier, 
we've included
-the linter for the Google Style guide. Google provides an Eclipse formatter 
for their style
-guide. It is located 
[here](https://github.com/google/styleguide/blob/gh-pages/eclipse-cpp-google-style.xml).
-New contributions are expected to follow the Google style guide when it is 
reasonable.
-Additionally, all new files must include a copy of the Apache License Header.
-
+We welcome all contributions to Apache MiNiFi. All new files must include a 
copy of the Apache License Header.
+To make development easier, we've included the linter for the Google Style 
guide. Google provides an Eclipse formatter
+for their style guide. It is located
+[here](https://github.com/google/styleguide/blob/gh-pages/eclipse-cpp-google-style.xml).
+New contributions are expected to follow the Google Style Guide, except for 
the following points:
+- Use .cpp extension for implementation files
+- Use lowerCamelCase for functions, including accessors/mutators
+- Use UPPER_SNAKE_CASE for constants
+- Filenames are typically class names or a description of the contents in 
UpperCamelCase
+- If a class is imitating something from STL, boost or similar, then STL-style 
lower_snake_case is used for naming the
+  class. UpperSnakeCase is used for most classes, in line with the Google 
Style Guide.
+- Prefer `#pragma once` over include guards
+- Forward declarations are OK
+- Using-directives (`using namespace foo`) are discouraged, except for 
user-defined literal namespaces
+- Some patterns in the codebase rely on objects with static storage duration 
without being trivially destructible and
+  initialized with a constant expression. It's OK to use these.
+- Operator overloading and user-defined literal suffixes are OK
+- Public mutable data members are allowed
+- Inline function definition is OK
+- Rvalue references, exceptions and RTTI are allowed
+- Use gsl::narrow and gsl::narrow_cast in addition to standard casts. The 
codebase doesn't use abseil.
+- We are more liberal regarding the use of `auto`. The Google Style Guide only 
allows using it when it makes the code
+  clearer. In MiNiFi C++, it's up to the personal preferences of the 
contributor.
+- Template metaprogramming is OK as long as the usage is clear.

Review comment:
       I think the "Prefer" part is a very specific use case and falls under 
the general goal of simple code anyway. I agree with the proposition, but 
wouldn't want to include it in the doc.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to