From 42794fd5306a377b91b5de6bf61097fe1c2a0c16 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 23 Jun 2025 18:37:54 +0000 Subject: [PATCH] Add README.md --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1991c82 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# Godot module style guide and conventions + +## Headers + +```cpp +// always use #define-based header guards, +// the name has to match the filename +#ifndef MY_CLASS_H +#define MY_CLASS_H + +// PascalCase for all types +class MyClass : public Object { + GDCLASS(MyClass, Object); + // functions are always snake_cased + static void _bind_methods(); + void on_some_signal(); // signal listeners are private unless otherwise called +public: + void do_things(); + void set_my_var(int value); // set first + int get_my_var() const; // get second, and const except when it can't be +private: + int myvar{1}; // variables are snake_case, and always initialized in headers unless impossible + // (e.g, const vars that get initialized in constructors) + String const sig_some_signal{"some_signal"}; // store signal names in a variable to make them easier to keep track of +}; +#endif // !MY_CLASS_H // end #if/#ifdef/#ifndef directives with a repeat of the condition +``` + +# Implementations + +```cpp +#include "my_class.h" +// the matching header always goes on top, other header includes come after in alphabetical order +#include "macros.h" +void MyClass::_bind_methods() { + BIND_PROPERTY(Variant::INT, my_var); // use macros.h simplified binding tools when possible +} + +void MyClass::do_things() { + set_my_var(10); // this-> is not required for class methods + cast_to(this); // nor for static class methods. + // use self_type when referring to the type of 'this' + this->connect(this->sig_some_signal, callable_mp(this, &self_type::on_some_signal)); +} + +void MyClass::set_my_var(int value) { + // for all uses of member variables, use this-> + this->my_var = value; +} + +int MyClass::get_my_var() const { + return this->my_var; +} +``` + +