아침바라기의 이야기

[ROR][공유] Rails idoms 본문

개발이야기/Ruby on Rails

[ROR][공유] Rails idoms

아침바라기 2015. 10. 5. 18:05

오늘은 오래된 레일즈 이디엄 포스팅을 공유해보고자 한다.


이디엄은 코드레벨에서 자주 재사용하는 코딩 로직이라 할 수 있다. 

이런 이디엄은 간결하면서도 (왠만하면) 가독성이 높고 효과적인 코드를 만들어준다.


두 가지 이디엄만 원문에서 뽑아서 포스팅 해본다.

(항목이나 내용은 좀 바뀔 수 있음)


1) 3항 연산자 대신 try (in erb)


api docs에 살펴보면, try는 파라미터로 넘기는 심볼로 된 이름의 메소드를 수행시킨다. 일반적인 메소드와는 달리 메소드가 없어도 NoSuchMethodException을 발생 시키지 않는다,


원래코드 

<%= schedule.view_date.nil? ? '' : schedule.view_date.to_s %>


다시 쓴 코드

<%= schedule.view_date.try(:to_s) %>


참고 : http://api.rubyonrails.org/v3.0.8/classes/Object.html#method-i-try



2) object가 nil일때만 assign 하지 않는 방법


보통 if 문으로 체크해서 객체가 nil인지 판단하는데, 이방법을 쓰지 않고, ||= 연산자를 사용하면 nil이 아닐때만 할당할 수 있다.


원래코드

if !type 

type = @schedule.type

end 


다시 쓴 코드

type ||= @schedule.type


단 이 방법은 변수가 boolean값 일땐 사용하면 안된다.

boolean이면 nil과 false값이면 할당이 안된다.


이외에도 유용한 이디엄들을 소개 하고 있다. 

원문은 이곳을 보자.



추가) 


idiom까진 아니지만 일독하고 적용해보면 좋을 번역된(!!!) 글이 있다.

아래 링크를 참고하자.


알아두면 좋은 55가지 루비 기법: https://gist.github.com/nacyot/7624036