diff --git a/tutorials/scripting/gdscript/gdscript_styleguide.rst b/tutorials/scripting/gdscript/gdscript_styleguide.rst index 4ca0ca4b8..a0be3c319 100644 --- a/tutorials/scripting/gdscript/gdscript_styleguide.rst +++ b/tutorials/scripting/gdscript/gdscript_styleguide.rst @@ -296,11 +296,59 @@ The only exception to that rule is the ternary operator: next_state = "fall" if not is_on_floor() else "idle" +Format multiline statements for readability +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When you have particularly long ``if`` statements or nested ternary expressions, +wrapping them over multiple lines improves readability. Since continuation lines +are still part of the same expression, 2 indent levels should be used instead of one. + +GDScript allows wrapping statements using multiple lines using parentheses or +backslashes. Parentheses are favored in this style guide since they make for +easier refactoring. With backslashes, you have to ensure that the last line +never contains a backslash at the end. With parentheses, you don't have to +worry about the last line having a backslash at the end. + +When wrapping a conditional expression over multiple lines, the ``and``/``or`` +keywords should be placed at the beginning of the line continuation, not at the +end of the previous line. + +**Good**: + +:: + + var angle_degrees = 135 + var quadrant = ( + "northeast" if angle_degrees <= 90 + else "southeast" if angle_degrees <= 180 + else "southwest" if angle_degrees <= 270 + else "northwest" + ) + + var position = Vector2(250, 350) + if ( + position.x > 200 and position.x < 400 + and position.y > 300 and position.y < 400 + ): + pass + +**Bad**: + +:: + + var angle_degrees = 135 + var quadrant = "northeast" if angle_degrees <= 90 else "southeast" if angle_degrees <= 180 else "southwest" if angle_degrees <= 270 else "northwest" + + var position = Vector2(250, 350) + if position.x > 200 and position.x < 400 and position.y > 300 and position.y < 400: + pass + Avoid unnecessary parentheses ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Avoid parentheses in expressions and conditional statements. Unless -necessary for order of operations, they only reduce readability. +necessary for order of operations or wrapping over multiple lines, +they only reduce readability. **Good**: @@ -484,7 +532,7 @@ Use snake_case for file names. For named classes, convert the PascalCase class name to snake_case:: # This file should be saved as `weapon.gd`. - class_name Weapon + class_name Weapon extends Node ::