# Code Style Guide

{% tabs %}
{% tab title="General" %}
* Use tabs of 4 spaces.
* Try to keep lines of less than 128 characters, for the sake of readability.
* Never leave trailing whitespace.
* End each file with a newline so the scanner can easily find the end of file.
* Use spaces around operators and after commas.
* Create indentation in blocks.
{% endtab %}

{% tab title="Naming" %}
* `camelCase` for file names and variable names.
* `PascalCase` for function names and class names.
* `SCREAMING_SNAKE_CASE` for constant names.
{% endtab %}

{% tab title="Imports" %}
* All imports/requires that are used directly in this file should be at the start of the file.
{% endtab %}

{% tab title="Syntax" %}
* Omit parentheses when the function does not require arguments.

```
### Without arguments

fn Method:
    # function body
end
# good

fn Method():
    # function body
end
# bad

### Arguments

fn MethodWithArguments(arg1, arg2):
    # function body
end
```

* Never put a space between a function name and its parentheses

```
Method (arg1, arg2) # bad

Method(arg1, arg2) # good
```


{% endtab %}
{% endtabs %}
