funprog / funbot

MIT License
5 stars 2 forks source link

roll 4n3 와 같이 유효하지 않은 input 에 대해 예외발생 #43

Open jwChung opened 8 years ago

jwChung commented 8 years ago

중복을 포함하지 않는 dicebot의 경우 roll횟수가 선택대안수 보다 클 경우(예, 4n3) 예외가 발생해야합니다.

jwChung commented 8 years ago

@masunghoon 제가 이해한 것이 맞는지요? 바꿔 말해, 이 이슈가 처리되어야 하는 것인지 컨폼 부탁드립니다.

curry-ing commented 8 years ago

이 문제를 역시 생각해 봤었는데, 굳이 예외처리를 해야하나? 주사위 다 쓰면 결과 내주지 뭐~ 라는 생각에 그냥 주사위 다 소진(?)되면 소진되는대로 결과를 던져주는 쪽으로 구현했었습니다.

그래도 충분히 다시 생각해 볼 수 있는 문제라고 생각되구요 개선하는 방법은

  1. 적은 대로 그냥 출력 (현행)
  2. 예외 발생
  3. 출력 & noti (ex> roll 4n3 : 2, 1, 3, dice exhausted(?))

정도가 있을 듯 한데, 다른 분들의 의견을 들어보고 싶습니다.

jwChung commented 8 years ago

@masunghoon 아 그런 생각이셨군요. 우선 Question으로 바꿔놓겠습니다.

jwChung commented 8 years ago

저는 이 이슈가 문자열을 Int로 바꾸는 문제와 크게 다르지 않다고 생각합니다. "0.1".toInt 와 같은 경우 예외를 발생시키 듯, 잘못된 인풋의 경우 잘못되었다고 하는게 명시적이고 좋은 방법이라 생각합니다. 그래서 저는 두번째 대안(예외발생)에 한표 던집니다.

curry-ing commented 8 years ago

네 이게 #15 #25 처럼 확장 될 예정이니 input validation이 강화 될 필요는 있을 것으로 보입니다.
하지만 어플리케이션의 성격 상 이 경우는 충분히 용인 될 수 있는 상황으로 보여지고, 굳이 저거 실수했다고 다시 타이핑하기 귀찮을 유저를 생각해서 3번은 어떨까 합니다.

jwChung commented 8 years ago
  1. roll 0d100
  2. roll -12d100
  3. roll 2.3d10.0
  4. roll 1.42n1.0

도 이 문제와 같이 생각해봐야겠네요

myeesan commented 8 years ago

dice exhausted

이 표현 재밌네요.

roll 0d100 roll -12d100 roll 2.3d10.0 roll 1.42n1.0

그럼 마찬가지로 위 입력들에 대해서 적절한 오류 메시지를 보여 주어야 할 것 같아요.

우선은 2번을 택해서 모든 예외상황들을 처리하고, 메시지를 세분화 하는 방식으로 진행하면 어떨까 합니다.

naxxster commented 8 years ago

현재 의미적인 문제가 아닌 regex 로 필터링되는 구문적인 부분의 경우는 어떻게 처리가 되나요? process 에서 None 이 리턴되는 경우가 되겠네요.

두 오류 검사 지점이 다른 상황에서 의미적인 오류는 어떻게 처리할 지에 대한 부분인 것 같은데. 처음엔 그냥 예외 발생이 좋지 않을까 생각됩니다.