commit 44e29ce250397134d9b671fa8fafb40e9423d47c Author: yannk Date: Fri Mar 4 14:23:10 2022 +0100 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..2b5ee3f --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +# Guide de développement pour [Khaganat](https://khaganat.net) + +Ce manuel est rédigé collaborativement en Markdown à l’adresse suivante : #TBD + +## Sources et inspirations + +Très inspiré par et basé sur le « [Gamemakin](https://gamemak.in) UE4 Style Guide » disponible sur [GitHub](https://github.com/Allar/ue5-style-guide). + +Godot propose quelques conseils sur la façon de travailler pour son propre projet dans une section [Les meilleures pratiques](https://docs.godotengine.org/fr/stable/tutorials/best_practices/index.html) ainsi qu’un [Guide de style](https://docs.godotengine.org/fr/stable/development/editor/editor_style_guide.html#editor-style-guide) et un [Bonnes pratiques pour les contributeurs au moteur](https://docs.godotengine.org/fr/stable/community/contributing/best_practices_for_engine_contributors.html) destinés à celles qui souhaitent contribuer au développement du moteur lui-même. + +## Principes de base + +### Un manuel vivant + +Ce manuel a vocation à rendre la contribution plus efficace, Khaganat est ouvert à la discussion et possède un canal XMPP où on peut échanger sur tout cela : [https://khaganat.net/irc/](https://khaganat.net/irc/). + +### Respectez la loi + +Khaganat respecte la loi française et vous demande de faire de même, donc merci de ne rien introduire d’illégal dans le projet par vos actions. En particulier : + +- ne réemployez pas le travail d’autrui si vous n’en avez pas reçu l’autorisation explicite +- respectez les licences d’usage des éléments que vous souhaitez copier depuis un autre projet, en particulier si l’attribution est demandée (comme avec les licences CC BY) +- avant d’y apporter des éléments externes, vérifiez-en la compatibilité avec les licences du projet Khaganat + +## Terminologie + +### Identifiants + +Un `Identifiant` est ce qu’on appelle communément un « nom » : celui d’un objet 3D, d’un fichier de son, d’un répertoire, d’une variable ou d’un script… + +#### Caractères autorisés dans les identifiants + +Dans un `Identifiant`, jamais on n’utilise un de ces caractères : + +* les espaces +* les barres obliques ou barres obliques inverses `\`, `/` +* des symboles du genre `#!@$%` +* des caractères Unicode + +Un `Identifiant` ne doit donc comprendre que les caractères suivants : + +* ABCDEFGHIJKLMNOPQRSTUVWXYZ +* abcdefghijklmnopqrstuvwxyz +* 1234567890 +* _ (avec parcimonie) + +Pour résumer, un `Identifiant` doit pouvoir répondre à l’expression régulière `[A-Za-z0-9_]+`) + +Ces règles permettent la plus grande compatibilité entre systèmes et pays. + +#### L’usage des casses + +Il y a plusieurs façon d’écrire les `Identifiants`, dont voici les plus courants (dénommés par leurs désignation en anglais, conventionnelle). + +##### PascalCase + +On met une majuscule à chaque mot et on supprime les espaces : `Coffre avec poignees` devient `CoffreAvecPoignees`. + +##### camelCase + +C’est similaire au PascalCase, sauf que la première lettre du premier mot est en minuscule : `Coffre avec poignees` devient `coffreAvecPoignees`. + +Plus de précisions sur [Wikipédia](https://fr.wikipedia.org/wiki/Camel_case). + +##### snake_case + +Les espaces sont remplacés par des underscores « _ » : `Coffre avec poignees` devient `coffre_avec_poignees` + +Bien que par convention, on puisse choisir de mettre ou pas des majuscules aux mots, nous retenons l’idée de tout mettre en minuscule pour nos usages du snake_case. `Coffre avec poignees` devient donc `coffre_avec_poignees` + +Plus de précisions sur [Wikipédia](https://fr.wikipedia.org/wiki/Snake_case). + +#### Variables / Propriétés + +Les termes `Variable` et `Propriété` sont généralement interchangeables, mais si ils sont utilisés dans le même contexte, cela signifie plus précisément : + +- pour `Propriété` que cela désigne une variable dans une classe. +- pour `Variable`, cela désigne généralement un argument de fonction ou une variable locale dans une fonction. Dans une classe, cela peut indiquer un statut à préciser/ définir. + +## License + +CC BY SA Khaganat - 2022