First commit. Version 0.1.0
This commit is contained in:
169
code_style_guide.md
Executable file
169
code_style_guide.md
Executable file
@@ -0,0 +1,169 @@
|
||||
# Code Style Guide
|
||||
|
||||
This project follows a **Modified Allman** brace and formatting style.
|
||||
It prioritizes **visual clarity, symmetry, and logical separation of blocks** over strict line compactness.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
### Key Principles
|
||||
- Indentation with **tabs** (width = 4).
|
||||
- **Opening braces `{`** always start on a new line.
|
||||
- **`} else {`** and **`} catch {`** appear on the same line for compact flow.
|
||||
- **Spaces inside parentheses only when non-empty:**
|
||||
- `( arg1, arg2 )`
|
||||
- `main()`
|
||||
- **Classes and structs:** PascalCase
|
||||
- **Variables, objects, and functions:** camelCase
|
||||
- **Constants/macros:** UPPER_CASE_WITH_UNDERSCORES
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
### `if / else` structure
|
||||
```cpp
|
||||
if ( condition )
|
||||
{
|
||||
doSomething();
|
||||
} else {
|
||||
doSomethingElse( arg1, arg2 );
|
||||
}
|
||||
```
|
||||
|
||||
### `try / catch` structure
|
||||
```cpp
|
||||
try
|
||||
{
|
||||
runOperation();
|
||||
} catch ( const std::exception& ex ) {
|
||||
handleError( ex );
|
||||
}
|
||||
```
|
||||
|
||||
### Class and method naming
|
||||
```cpp
|
||||
class DataAnalyzer
|
||||
{
|
||||
public:
|
||||
DataAnalyzer( const std::string& filePath )
|
||||
: filePath( filePath )
|
||||
{
|
||||
}
|
||||
|
||||
void processDataAndGenerateReport()
|
||||
{
|
||||
try
|
||||
{
|
||||
loadDataFromFile( filePath );
|
||||
analyzeResultsAndPrintSummary();
|
||||
} catch ( const std::runtime_error& error ) {
|
||||
std::cerr << "Error: " << error.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::string filePath;
|
||||
|
||||
void loadDataFromFile( const std::string& path )
|
||||
{
|
||||
if ( path.empty() )
|
||||
{
|
||||
throw std::runtime_error( "File path cannot be empty." );
|
||||
} else {
|
||||
std::cout << "Loading data from: " << path << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void analyzeResultsAndPrintSummary()
|
||||
{
|
||||
std::cout << "Analyzing data..." << std::endl;
|
||||
std::cout << "Summary: OK" << std::endl;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### `main()` function
|
||||
```cpp
|
||||
int main()
|
||||
{
|
||||
DataAnalyzer analyzer( "results.csv" );
|
||||
|
||||
try
|
||||
{
|
||||
analyzer.processDataAndGenerateReport();
|
||||
} catch ( const std::exception& ex ) {
|
||||
std::cerr << "Unhandled exception: " << ex.what() << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## `.clang-format` configuration
|
||||
|
||||
Save this file as `.clang-format` in your project root:
|
||||
|
||||
```yaml
|
||||
# === Style: Modified Allman (tabs, compact else/catch, and selective parentheses spacing) ===
|
||||
# Naming conventions:
|
||||
# · Classes and structs: PascalCase (e.g., MyClass, PlayerController)
|
||||
# · Variables, objects, and functions: camelCase (e.g., myVariable, calculateScore)
|
||||
# · Constants or macros: UPPER_CASE_WITH_UNDERSCORES
|
||||
# · if/else and try/catch share the same brace layout:
|
||||
# if ( condition )
|
||||
# {
|
||||
# ...
|
||||
# } else {
|
||||
# ...
|
||||
# }
|
||||
# try
|
||||
# {
|
||||
# ...
|
||||
# } catch ( const std::exception& e ) {
|
||||
# ...
|
||||
# }
|
||||
|
||||
BasedOnStyle: LLVM
|
||||
|
||||
IndentWidth: 4
|
||||
UseTab: Always
|
||||
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: false
|
||||
SplitEmptyRecord: false
|
||||
SplitEmptyNamespace: false
|
||||
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
|
||||
SpaceBeforeParens: Always
|
||||
SpaceInEmptyParentheses: false
|
||||
SpaceInParens: true
|
||||
SpacesInAngles: false
|
||||
SpacesInCStyleCastParentheses: true
|
||||
SpacesInSquareBrackets: false
|
||||
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
ColumnLimit: 0
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveDeclarations: true
|
||||
AlignEscapedNewlines: Left
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
|
||||
BreakBeforeBraces: Allman
|
||||
Reference in New Issue
Block a user