From c12633143cbdf0089104b561e63fe6b49bdfebb1 Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 25 Jun 2025 18:31:03 +0000 Subject: [PATCH] Update README.md --- README.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3935f42..899d4a6 100644 --- a/README.md +++ b/README.md @@ -2,51 +2,53 @@ > Specifically for use with [godot-cpp-template](https://git.objectionable.solutions/hertog/godot-module-template). -## Headers +## Header Files ```cpp -// always use #define-based header guards, -// the name has to match the filename +// #define-based header guards are required, +// and have to match 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 + // functions have to be snake_cased static void _bind_methods(); - void on_some_signal(); // signal listeners are private unless otherwise called + void on_some_signal(); // signal listeners have to be private unless they have to be publicly accessible otherwise public: void do_things(); + // getters and setters go after other types of functions, closest to the variables. void set_my_var(int value); // set first - int get_my_var() const; // get second, and const except when it can't be + int get_my_var() const; // get function goes second, and should be const if possible +// private variables go at the bottom private: - int myvar{1}; // variables are snake_case, and always initialized in headers unless impossible + 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 + 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 +# Implementation Files ```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 + BIND_PROPERTY(Variant::INT, my_var); // use macros.h simplified property binding macros 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. + cast_to(this); // static class methods don't require scope specification. // 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-> + // all uses of member variables REQUIRE this-> this->my_var = value; }