InfoGrab DocsInfoGrab Docs

Ruby 스타일 가이드

GitLab의 Ruby 코드 작성을 위한 스타일 가이드와 RuboCop 규칙, ActiveRecord 사용 지침을 설명합니다.

이 문서는 Ruby 코드를 위한 GitLab 전용 스타일 가이드입니다. 이 페이지에 문서화된 내용은 모두 재논의 를 위해 다시 열 수 있습니다. Ruby 스타일 가이드 규칙을 적용하기 위해 RuboCop 을 사용합니다. RuboCop 규칙이 없는 경우, 관용적인 Ruby를 작성하기 위한 일반 지침으로 다음 스타일 가이드를 참조하세요: Ruby 스타일 가이드 . Rails 스타일 가이드 . RSpec 스타일 가이드 . 일반적으로, 기존 RuboCop 규칙이나 위의 스타일 가이드에서 다루지 않는 스타일은 차단 요소가 되어서는 안 됩니다. 누구도 강한 의견을 가져서는 안 된다고 결정한 스타일도 있습니다. 참고: 추상화 재사용 지침 . 테스트 전용 스타일 가이드 및 모범 사례 . 규칙이 없는 스타일 # 이 스타일들은 RuboCop 규칙으로 뒷받침되지 않습니다. 이 섹션에 추가되는 모든 스타일에 대해, 섹션의 히스토리 노트 에서 논의 링크를 연결하여 맥락을 제공하고 참고 자료로 활용하세요. attr_reader를 사용한 인스턴스 변수 접근 # 클래스에서 인스턴스 변수에 접근하는 방법은 다양합니다: # public class Foo attr_reader :my_var def initialize(my_var) @my_var = my_var end def do_stuff puts my_var end end # private class Foo def initialize(my_var) @my_var = my_var end private attr_reader :my_var def do_stuff puts my_var end end # direct class Foo def initialize(my_var) @my_var = my_var end private def do_stuff puts @my_var end end 공개 속성은 클래스 외부에서 접근하는 경우에만 사용해야 합니다. 속성이 내부적으로만 접근되는 경우, 관련 코드에서 일관성이 유지되는 한 어떤 전략을 사용할지에 대한 강한 의견은 없습니다. 개행 스타일 가이드 # 일부 개행 스타일을 적용하는 RuboCop의 Layout/EmptyLinesAroundMethodBody 와 Cop/LineBreakAroundConditionalBlock 외에도, RuboCop으로 뒷받침되지 않는 다음 지침들이 있습니다. 규칙: 관련 로직을 그룹화하기 위해서만 개행으로 코드 구분 # # bad def method issue = Issue.new issue.save render json: issue end # good def method issue = Issue.new issue.save render json: issue end 규칙: 블록 앞에 개행 추가 # # bad def method issue = Issue.new if issue.save render json: issue end end # good def method issue = Issue.new if issue.save render json: issue end