GDScript 스타일 가이드

설명

이 스타일 가이드는 GDScript를 우아하게 작성하는 규정 목록을 보여줍니다. 이를 통해 깔끔하고 읽을 수 있는 코드를 작성하고, 프로젝트와 토론, 튜토리얼에 걸쳐 일관성을 유지하는 것이 목적입니다. 바라건대, 이것이 자동 서식 지정 도구의 개발을 장려할 것입니다.

GDScript가 Python과 밀접하기 때문에, 이 가이드는 Python의 PEP 8 프로그래밍 스타일 가이드에서 영감을 얻었습니다.

주석

Godot의 내장 스크립트 에디터는 기본적으로 많은 규정을 사용합니다. 그것이 당신을 돕도록 하십시오.

코드 구조

들여쓰기(Indentation)

들여쓰기 유형: Tabs (에디터 기본)

들여쓰기 크기: 4 (에디터 기본)

각 들여쓰기 수준은 그것을 포함하는 블록보다 한 단계 더 커야합니다.

좋음:

for i in range(10):
    print("hello")

나쁨:

for i in range(10):
  print("hello")

for i in range(10):
        print("hello")

계속되는 줄은 정규 코드 블록과 구분하기 위해 2단계의 들여쓰기 수준을 사용합니다.

좋음:

effect.interpolate_property(sprite, 'transform/scale',
            sprite.get_scale(), Vector2(2.0, 2.0), 0.3,
            Tween.TRANS_QUAD, Tween.EASE_OUT)

나쁨:

effect.interpolate_property(sprite, 'transform/scale',
    sprite.get_scale(), Vector2(2.0, 2.0), 0.3,
    Tween.TRANS_QUAD, Tween.EASE_OUT)

공백 줄

Surround functions and class definitions with two blank lines:

func heal(amount):
    health += amount
    health = min(health, max_health)
    emit_signal("health_changed", health)


func take_damage(amount, effect=null):
    health -= amount
    health = max(0, health)
    emit_signal("health_changed", health)

논리 섹션을 분리하기 위해 함수 안에 하나의 공백 줄을 사용합니다.

한 줄에 하나의 명령문

한 줄에 여러 명령문을 결합하지 마십시오. C 프로그래머는, 한 줄에 조건문과 함께 사용하지 마십시오 (삼항 연산자 제외)!

좋음:

if position.x > width:
    position.x = 0

if flag:
    print("flagged")

나쁨:

if position.x > width: position.x = 0

if flag: print("flagged")

불필요한 괄호 피하기

표현식과 조건문에 괄호를 사용하지 마십시오. 연산 명령에 필요한 경우가 아니라면, 가독성만 떨어뜨릴 것입니다.

좋음:

if is_colliding():
    queue_free()

나쁨:

if (is_colliding()):
    queue_free()

공백

연산자와 쉼표 뒤에 하나의 빈칸을 반드시 사용합니다. 사전 참조나 함수 호출에 여분의 공백을 피하거나, "열"을 생성하십시오.

좋음:

position.x = 5
position.y = mpos.y + 10
dict['key'] = 5
myarray = [4, 5, 6]
print('foo')

나쁨:

position.x=5
position.y = mpos.y+10
dict ['key'] = 5
myarray = [4,5,6]
print ('foo')

절대 금지:

x        = 100
y        = 100
velocity = 500

명명 규칙

이러한 명명 규칙은 Godot 엔진 스타일을 따릅니다. 이 규칙을 깬다면 코드가 보기에도 못생기고, 내장된 명명 규칙으로 충돌하게 됩니다.

클래스와 노드

파스칼 표기법(PascalCase)을 사용: extends KinematicBody

또한 상수나 변수 안으로 클래스를 불러올 때 사용:

const MyCoolNode = preload('res://my_cool_node.gd')

함수와 변수

스네이크 표기법(snake_case)을 사용: get_node()

가상 메서드 (사용자가 치환해야 하는 함수), 개인 함수, 그리고 개인 함수에 단일 밑줄 (_)을 추가하십시오: func _ready()

시그널

과거 시제 사용:

signal door_opened
signal score_changed

상수

CONSTANT_CASE 사용, 모두 대문자로, 밑줄 (_)로 단어를 분리함: const MAX_SPEED = 200

Static typing

Since Godot 3.1, GDScript supports optional static typing.

Type hints

Place the colon right after the variable's name, without a space, and let the GDScript compiler infer the variable's type when possible.

좋음:

onready var health_bar: ProgressBar = get_node("UI/LifeBar")

var health := 0 # The compiler will use the int type

나쁨:

# The compiler can't infer the exact type and will use Node
# instead of ProgressBar
onready var health_bar := get_node("UI/LifeBar")

When you let the compiler infer the type hint, write the colon and equal signs together: :=.

var health := 0 # The compiler will use the int type

Add a space on either sides of the return type arrow when defining functions.

func heal(amount: int) -> void: