Uh - the other pr that had "Fix dragonfly" got commits lost and I didn't notice... oops; cherry picked them back through :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2860 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
80 lines
2.3 KiB
Markdown
80 lines
2.3 KiB
Markdown
# Coding guidelines
|
|
|
|
These are mostly "suggestions", if you feel like your code is readable, comprehensible to others; and most importantly doesn't result in unreadable spaghetti you're fine to go.
|
|
|
|
But for new developers you may find that following these guidelines will make everything x10 easier.
|
|
|
|
## Naming conventions
|
|
|
|
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
|
|
|
Except for Qt MOC where `functionName` is preferred.
|
|
|
|
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well.
|
|
|
|
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
|
|
|
Try not using hungarian notation, if you're able.
|
|
|
|
## Formatting
|
|
|
|
Do not put if/while/etc braces after lines:
|
|
```c++
|
|
// no dont do this
|
|
if (thing)
|
|
{
|
|
some(); // ...
|
|
}
|
|
|
|
// do this
|
|
if (thing) {
|
|
some(); // ...
|
|
}
|
|
|
|
// or this
|
|
if (thing)
|
|
some(); // ...
|
|
|
|
// this is also ok
|
|
if (thing) some();
|
|
```
|
|
|
|
Brace rules are lax, if you can get the point across, do it:
|
|
|
|
```c++
|
|
// this is fine
|
|
do {
|
|
if (thing) {
|
|
return 0;
|
|
}
|
|
} while (other);
|
|
|
|
// this is also ok --- albeit a bit more dense
|
|
do if (thing) return 0; while (other);
|
|
|
|
// ok as well
|
|
do {
|
|
if (thing) return 0;
|
|
} while (other);
|
|
```
|
|
|
|
There is no 80-column limit but preferably be mindful of other developer's readability (like don't just put everything onto one line).
|
|
|
|
```c++
|
|
// someone is going to be mad due to this
|
|
SDL_AudioSpec obtained;
|
|
device_name.empty() ? device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false) : device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
|
|
|
// maybe consider this
|
|
SDL_AudioSpec obtained;
|
|
if (device_name.empty()) {
|
|
device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false);
|
|
} else {
|
|
device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
|
}
|
|
|
|
// or this is fine as well
|
|
SDL_AudioSpec obtained;
|
|
device = SDL_OpenAudioDevice(device_name.empty() ? nullptr : device_name.c_str(), capture, &spec, &obtained, false);
|
|
```
|