DKGL Coding Conventions. [DRAFT/작업중]

https://dkscript.com/wiki/CodingConventions 여기서 가져옴.

Coding

{ 와 } 는 다른 라인에 위치하게 되는 경우는 new-line 후에 한다. https://en.wikipedia.org/wiki/Indentation_style#Allman_style

if (expr)
{
// 되도록 이렇게.
}

if (expr) {
// 특별한 이유가 없다면 이렇게 하지 말것.
}

if (expr) {... } // 한줄, 짧은것에 대하여 허용

struct ABC
{
    int Number() const { return 10; } // 허용
};

Naming

매크로를 제외하고 기본적으로 CamelCase 를 따른다. 의미 있는 이름을 사용해야 한다. 함수는 동사형, 변수는 명사형을 권장함.

리턴값이 함수의 역할에 해당하는 값이라면 Get 으로 시작하지 않는다.

String Name()
{
    return this->name;
}

String GetName()
{
    return this->name;
}

bool GetName(String& name) noexcept
{
    if (this->name != nullptr)
    {
        name = this->name;
        return true;
    }
    return false; // Cannot find name property! but I don't want to throw an exception.
}

함수, 상수, 타입

대문자로 시작한다.

변수, 인스턴스

소문자로 시작함.

매크로

대문자와 _ 로 구성함 (UPPER_CASE_WITH_UNDERSCORES)

#define SOME_MACRO_FOR_SOMETHING 20

기타

lambda 는 소문자로 (인스턴스 취급한다)

auto lambda = [](){};

템플릿 매개변수도 상수로 취급한다.

template <int Num>
struct Number 
{
};