Hello Knowledge Base
+14
@@ -0,0 +1,14 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
indent_size = 4
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
||||
@@ -0,0 +1,10 @@
|
||||
Code of Conduct
|
||||
===============
|
||||
|
||||
This is very simple. Don't. Be. A. Dick.
|
||||
|
||||
If someone is being a dick, don't be a dick yourself and don't be offended
|
||||
about it. It's the internet you pleb. Deal with it.
|
||||
|
||||
If you're offended by this non-offensive Code of Conduct, this project might
|
||||
not be for you. The door is that way.
|
||||
@@ -0,0 +1,4 @@
|
||||
GitHub Policy
|
||||
=============
|
||||
|
||||
For many reasons, Bitshift projects will never be officially hosted on GitHub.
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Bitshift Knowledge Base
|
||||
=======================
|
||||
|
||||
Welcome to the Bitshift Knowledge Base.
|
||||
|
||||
Content:
|
||||
|
||||
- [[Code of Conduct]]
|
||||
- [[Programming Guidelines]]
|
||||
- [[GitHub Policy]]
|
||||
@@ -0,0 +1,190 @@
|
||||
Programming Guidelines
|
||||
======================
|
||||
|
||||
## git
|
||||
|
||||
One very important **rule**, the default git branch will always be `master`.
|
||||
`master` has never been a reference to the Slavery in the United States. The
|
||||
only people making that connection are the ones making that connection, no one
|
||||
else. It has never been and never will be a racist reference in the context of
|
||||
git.
|
||||
|
||||
## Coding Style (C++)
|
||||
|
||||
This section presents the preferred coding style for C++ source code.
|
||||
|
||||
The coding style described in this section is subjective, but tries to be
|
||||
consistent and its purpose is to increase code legibility.
|
||||
|
||||
### Line Width
|
||||
|
||||
Try your best to keep line widths shorter than 80 characters long.
|
||||
|
||||
It's assumed that most Bitshift developers do not use IDEs on widescreens, 80
|
||||
column terminals running Vim are more likely to be used.
|
||||
|
||||
### Indentation
|
||||
|
||||
Each new level is indented by 2 spaces, braces go on the line of the preceding
|
||||
statement, unless it's a function definition.
|
||||
|
||||
Namespace members are indented as well.
|
||||
|
||||
Do *NOT* ever use tab characters. They're evil.
|
||||
|
||||
### Braces
|
||||
|
||||
Curly braces are used for all statement blocks, even single statements.
|
||||
|
||||
```cxx
|
||||
if (condition) {
|
||||
single_statement;
|
||||
}
|
||||
```
|
||||
|
||||
### Pointer and Reference Types
|
||||
|
||||
The asterisk in pointer types and the ampersand in reference types should be
|
||||
aligned with the type.
|
||||
|
||||
```cxx
|
||||
int* int_ptr{};
|
||||
int& int_ref = *int_ptr;
|
||||
```
|
||||
|
||||
### Names
|
||||
|
||||
All names in the code use `snake_case`. Member variables are prefixed with a
|
||||
leading underscore.
|
||||
|
||||
### Functions
|
||||
|
||||
Functions should be declared by placing the returned value type on a separate
|
||||
line from the function name. If the parameters don't fit on a single line they
|
||||
should be split with the parameter names right aligned.
|
||||
|
||||
```cxx
|
||||
string
|
||||
my_function()
|
||||
{
|
||||
// ...
|
||||
}
|
||||
|
||||
string
|
||||
my_class::
|
||||
my_function(my_first_type arg_0,
|
||||
my_second_type const& arg_1)
|
||||
{
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Include Guards
|
||||
|
||||
Use the full path of the file as the include guard using `__` as a directory
|
||||
separator replacement.
|
||||
|
||||
Do not use `#pragma once`.
|
||||
|
||||
```cxx
|
||||
// path: seafire/protocol/grammar.hxx
|
||||
|
||||
#ifndef seafire__protocol__grammar_hxx_
|
||||
#define seafire__protocol__grammar_hxx_
|
||||
|
||||
#endif
|
||||
```
|
||||
|
||||
### Types
|
||||
|
||||
Types should be written right-to-left, as they are read right-to-left.
|
||||
|
||||
```cxx
|
||||
std::string const my_string; // const string
|
||||
int const* const my_int; // const pointer to const int
|
||||
```
|
||||
|
||||
This is perfectly valid C++.
|
||||
|
||||
### Formatting Tools
|
||||
|
||||
Do NOT ever use any tools such as ClangFormat or Prettier, they're either way
|
||||
too opinionated or impossible to configure exactly.
|
||||
|
||||
Formatting code manually in Vim is 100x faster than trying to shoehorn
|
||||
ClangFormat into formatting every comma correctly.
|
||||
|
||||
## Coding Conventions (C++)
|
||||
|
||||
### Terminology
|
||||
|
||||
Parameter
|
||||
: A parameter is the named parameter of a function.
|
||||
|
||||
```cxx
|
||||
void
|
||||
my_function(char const* param); // param is a parameter
|
||||
```
|
||||
|
||||
Argument
|
||||
: An argument is the value passed in a function call.
|
||||
|
||||
```cxx
|
||||
my_function("hello, world"); // "hello, world" is an argument
|
||||
```
|
||||
|
||||
### Types
|
||||
|
||||
1. Always used fixed width integers (int8_t, uint16_t, etc).
|
||||
2. Only use `char` when explicitly dealing with characters.
|
||||
3. Mark constructors as `explicit` unless implicit conversion is desired.
|
||||
|
||||
### Error Handling
|
||||
|
||||
1. Use exceptions for exceptional error states (e.g. null pointers).
|
||||
2. Use `std::error_code&` for expected error states (e.g. invalid user input).
|
||||
|
||||
Prefer an output parameter when using `std::error_code&` rather than a
|
||||
return value.
|
||||
|
||||
### Memory Management
|
||||
|
||||
1. Prefer stack allocation.
|
||||
2. Use `unique_ptr` or `shared_ptr` for heap objects.
|
||||
3. Try your best not to use raw `new` and `delete`.
|
||||
|
||||
## Coding Style (TypeScript)
|
||||
|
||||
### Line Width
|
||||
|
||||
Try your best to keep line widths shorter than 80 characters long.
|
||||
|
||||
It's assumed that most Bitshift developers do not use IDEs on widescreens, 80
|
||||
column terminals running Vim are more likely to be used.
|
||||
|
||||
### Indentation
|
||||
|
||||
Each new level is indented by 2 spaces, braces go on the line of the preceding
|
||||
statement, unless it's a function definition.
|
||||
|
||||
Do *NOT* ever use tab characters. They're evil.
|
||||
|
||||
### Braces
|
||||
|
||||
Curly braces are used for all statement blocks, even single statements.
|
||||
|
||||
```cxx
|
||||
if (condition) {
|
||||
single_statement;
|
||||
}
|
||||
```
|
||||
|
||||
### Semicolons
|
||||
|
||||
Always terminate statements with semicolons, even if TypeScript allows omitting
|
||||
them.
|
||||
|
||||
## Coding Conventions (TypeScript)
|
||||
|
||||
1. Always specify function return types.
|
||||
2. Always specify function parameter types.
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Copyright © 2026 The Bitshift Contributors and Per Ryan Edin. This Knowledge
|
||||
Base is released under the CC BY-NC-SA 4.0 license. See
|
||||
[creativecommons.org][license] for license information and the legal details.
|
||||
|
||||
[license]: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
**Quick Links**
|
||||
|
||||
- [[Code of Conduct]]
|
||||
- [[Programming Guidelines]]
|
||||
Reference in New Issue
Block a user