Browse Source
[docs] add deps instructions for void linux, alpine, nixOS, update haiku new stuff; add basic coding guidelines
[docs] add deps instructions for void linux, alpine, nixOS, update haiku new stuff; add basic coding guidelines
Signed-off-by: lizzie <lizzie@eden-emu.dev>pull/2829/head
No known key found for this signature in database
GPG Key ID: 287378CADCAB13
6 changed files with 133 additions and 5 deletions
-
2docs/Caveats.md
-
77docs/Coding.md
-
32docs/Deps.md
-
1docs/README.md
-
19shell.nix
-
7src/core/CMakeLists.txt
@ -0,0 +1,77 @@ |
|||
# 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`. |
|||
|
|||
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); |
|||
``` |
|||
@ -0,0 +1,19 @@ |
|||
let |
|||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05"; |
|||
pkgs = import nixpkgs { config = {}; overlays = []; }; |
|||
in |
|||
pkgs.mkShellNoCC { |
|||
packages = with pkgs; [ |
|||
# essential programs |
|||
git cmake clang gnumake patch jq pkg-config |
|||
# libraries |
|||
openssl boost fmt nlohmann_json lz4 zlib zstd |
|||
enet libopus vulkan-headers vulkan-utility-libraries |
|||
spirv-tools spirv-headers simpleini vulkan-memory-allocator |
|||
vulkan-loader unzip mbedtls zydis glslang python3 httplib |
|||
cpp-jwt ffmpeg-headless libusb1 cubeb |
|||
qt6.full # eden |
|||
SDL2 # eden-cli |
|||
discord-rpc gamemode # optional components |
|||
]; |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue