Ruby Style Guide와 Rubocop

오늘은 루비 개발 관련해서 좋은 가이드가 있어 공유드릴까 합니다. 정말 정리가 잘 되어있습니다. 천천히 내용 읽어보면서 고쳐야할 습관들이 많이 보이네요.

https://github.com/dalzony/ruby-style-guide/blob/master/README-koKR.md

대표적인 것 몇가지 보면 탭은 들여쓰기 단위별로 공백 2칸을 사용, (소프트 탭 사용) 하드 탭 사용 안함

# 나쁜 예 - 공백 4칸
def some_method
    do_something
end

# 좋은 예
def some_method
  do_something
end

최근에서야 2칸으로 맞추려고 노력중인데, 안그래도 딱 있네요.

(, [ 의 뒤, ], ) 의 앞에 공백을 쓰지 마라. { 의 주변과 }의 앞에 공백을 써라.

# 나쁜 예
some( arg ).other
[ 1, 2, 3 ].each{|e| puts e}

# 좋은 예
some(arg).other
[1, 2, 3].each { |e| puts e }

# 확실히 아래가 가독성이 좋긴 하네요 {} 공백 넣어야겠어요.

등등 매우 많습니다. 내용은 위에 링크 참고하셔서 읽어보시면 좋을 것 같습니다.

Rubocop을 통한 코드 자가진단

이 가이드를 기반으로 한 코드 분석 패키지가 존재합니다. Rubocop인데요, 이러한 문법 스타일과 다른 코드가 얼마나 있는지, 어떤 부분이 있는지 찾아주기 때문에 교정하는데 있어 도움이 됩니다.

gem 으로 설치해줍니다.

gem install rubocop

여담으로 처음에 전 robocop 인줄 알고 삽질했었습니다. 심지어 robocop이란 gem도 존재하죠.

그리고 코드를 테스트할 디렉토리에서 rubocop 명령을 날려주면 테스트 후 결과를 리턴해줍니다. 최근에 짜고있는 recon-raven 소스로 체크해보겠습니다.

rubocop
Inspecting 5 files
WWC.C

Offenses:

rraven.rb:1:31: C: Layout/SpaceAroundOperators: Surrounding space missing for operator +.
require File.dirname(__FILE__)+"/config/config.rb"
                              ^
rraven.rb:1:32: C: Style/StringLiterals: Prefer single-quoted strings when you don't need string interpolation or special symbols.
require File.dirname(__FILE__)+"/config/config.rb"
                               ^^^^^^^^^^^^^^^^^^^

엄청나게 나옵니다. 천천히 하나씩 교정해야겠네요!