나는 수신 이메일을 처리하고 이메일을 처리하는 메소드를 빌드하고있다. 그 과정에서 이메일이 성공적으로 프로세스되는 것을 막을 수있는 많은 것들이 있습니다. 잘못된 회신 주소, 잘못된 주소, 비어있는 메시지 본문 등.레일 3 - 복잡한 Switch 문/문을 처리하는 방법
코드에는 Switch Statements (case/when/end) 및 If 문이 가득합니다. 더 똑똑하고 깨끗한 방법으로이 일을 배우고 싶습니다. 또한 오류를 추적 할 수있는 방법으로 오류가있는 전자 메일을 다시 보내는 위치가 있습니다. 레일과 함께 이런 일이 가능한가? 말 같은에서
@error = []
Case XXX
when xxxx
if XXXXX
else
@error = 'You don't have permission to reply to the xxxxx'
end
else
@error = 'Unfamilar XXXX'
end
그리고 뭔가 ... 여기에 도움을
If @errors.count > 0
Send the user an email letting them know what went wrong
else
do nothing
end
감사합니다. 위의 똑똑한 논리를 쓰는 법을 가르쳐 줄 다른 튜토리얼을 알고 있다면 그것은 좋을 것입니다. 지금은 3 단계 깊이로 진행되는 case/if 문이 있으므로 직선으로 유지하기가 어렵습니다.
감사합니다.
내가보기 엔 예외를 선호하는 당신은 이런 식으로보고 할 수 있습니다. 메소드의 암시 적 종료는 대부분의 경우 정확히 원하는 것입니다. – aceofspades
실제 예외를 처리 할 때만 예외를 사용하십시오. 예상 된 흐름 인 경우 예외를 사용하지 않는 것보다 좋습니다. 예를 들어 사용자가 입력 한 모든 데이터는 종종 잘못 될 것이므로 예외로 처리해서는 안됩니다. 코드를 정리하는 가장 기본적인 방법은 코드를 작은 논리적 덩어리 (메서드 및 클래스)로 나누는 것입니다. 중첩 된 사례 및 if를 갖는 것은 일반적으로 디자인 문제입니다. 이 경우에 예외를 사용하는 것은 단지 bandaid이지만 실제 해결책은 아닙니다. – iain
복잡한 사례가있는 경우 예외를 사용하는 대신 유효성 검사기 함수로 추상화하는 것이 좋습니다. 당신의 선택에 무게를 둡니다. – moeffju