Julia Language

[Julia] 줄리아의 코딩 규약 (Coding Conventions)

공부하는백수 2021. 4. 17. 02:46

※ 다음 링크에서 줄리아 프로그래밍과 관련한 글 목록을 확인하실 수 있습니다.

Julia 프로그래밍 관련 글 목록


코딩 규약은 문법(syntax)과는 다른 개념이다.

문법은 반드시 지켜야 하지만 코딩 규약은 지키지 않아도 에러가 발생하지 않고 프로그래머의 의도대로 잘 동작한다.

그러나 프로그램은 일반적으로 혼자 만들지 않는다. 그리고 블로그와 github 등을 통해 코드를 공유하기 때문에 서로 제각각 다른 스타일로 코드를 짠다면 가독성이 떨어지는 문제가 있다. 따라서 코드의 일관성 유지를 위해 대부분의 언어는 저마다의 코딩 규약을 갖고 있다. 줄리아의 코딩 규약은 다음과 같다.

 

 

  1. 변수는 항상 소문자만 사용하며 snake_case를 기본으로 한다. 그렇지만 밑줄 기호('_')는 꼭 필요할 때만 사용한다.
    • myvariablename (O), 가독성이 떨어지므로 아래와 같이 단어 사이에 밑줄 사용 허용
    • my_variable_name (O)
    • myVariableName (X), 문법적으로는 okay
    • _my_variable_name (X), 문법적으로는 okay
    • 1st_variable (X), error
  2. Type과 Module의 이름은 대문자로 시작한다. 변수와는 달리 UpperCamelCase를 사용한다.
    • struct MyStructName (O)
    • module MyModuleName (O)
  3. 함수와 매크로의 이름은 소문자로 이루어지며 밑줄을 사용하지 않는다.
    • function myfunction(...) (O)
    • function my_function(...) (X), 문법적으로는 okay
    • function myFunction(...) (X), 문법적으로는 okay
    • macro macroname(...) (O)
  4. In-Place 함수의 이름은 항상 느낌표(!)로 끝난다.
    • function myfunction!(x) (O) → 함수 내에서 x에 직접 접근하여 x의 값을 바꾼다. mutable한 인자만 가능
  5. "=" 연산자 앞뒤로 공백 하나를 삽입한다.
  6. (개인적 의견) 줄 끝에 세미콜론[';']을 생략한다. 세미콜론은 아래와 같이 반드시 필요한 경우에만 사용한다.
    • 한 줄에서 복수 개의 명령을 수행할 경우
      • mynumber = 10; mystring = "xyz"; 
    • REPL이나 Jupyter notebook에서 코딩할 때, 모든 줄의 연산 결과가 프린트 되는 것이 싫을 때

 

※ In-Place 함수란?

  함수의 입력 인자의 값을 함수 내부에서 연산을 통해 바꿀 경우 우리는 이 함수를 In-Place 혹은 mutating 함수라 부른다. 간단히 C언어의 경우 포인터나 배열을 입력받아 해당 포인터나 배열이 가리키는 메모리의 값을 바꾼다면 이를 Julia에서는 In-Place 함수라 부른다. Julia의 기본함수들도 이러한 naming 규칙을 따르고 있으므로 내가 직접 만든 함수도 이런 규칙을 따르도록 코딩을 하는 것이 일관성을 유지하고 타인과의 협업을 위해 필요하다.

 

  아직 in-place 함수가 무엇인지 잘 와닿지 않을 수도 있다. 이에 대하여 조만간 포스팅을 할 예정인데 본 블로그에 해당 포스팅이 올라오기 이전에 이 글을 읽었다면 구글링을 통해 어떠한 내용인지 자세히 알아보길 추천한다. 만약, C/C++에 익숙한 사람이라면 함수의 인자로 포인터나 배열을 입력받아 함수 내에서 해당 메모리에 접근하여 값을 변경하는 경우에 해당한다고 보면 된다. Julia에서 이런 방식의 함수를 채택한 이유는 당연히 속도를 향상시키기 위함이다.