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"
^^^^^^^^^^^^^^^^^^^
엄청나게 나옵니다. 천천히 하나씩 교정해야겠네요!