기능상세서대로 구현이 된줄 알았는데 리뷰어분께서 놓친 부분을 지적해주셨다.
처음 설정된 랜덤한 값을 계속 사용하는 것 같네요
비겨서 다시 가위바위보를 할때 컴퓨터는 이전에 낸 값을 그대로 내는 건가요!?
while (condition) { // do something }
항상 condition을 true로 설정하면 while true 까지만 읽었을 때는 이 구문은 무한히 반복된다고 오해할 수 있음. 대신 아래와 같은 형태로 condition을 잘 이용하면 특정 조건에 따라 반복되는 것이라는 걸 명시적으로 잘 표현할 수 있음.
var isContinue: Bool while isContinue { // do something }
userInputIsInt 를 번역해보면 사용자의 입력은 정수로 해석될 수 있음.
이러한 명제형태의 변수명은 Bool같은 참거짓을 나타내는 변수명으로 통상적으로 쓰이고 있음.
ex)
Array.isEmpty
String.isEmpty
10.isMultiple(of: 2)
(본래 참, 거짓을 의도한게 아니라면) 다른 네이밍을 찾아보는게 좋음.
규칙을 한번 정리해보면 하나하나 비교하지 않으면서도 로직을 구현할 수 있음.
값을 하나하나 비교해주면 반복적인 로직들로 인해 코드가 길어지고 가독성도 떨어짐.
컴퓨터와 같은 값이면 비긴다
자신이 컴퓨터보다 + 1인 값이면 이긴다.
나머지는 진다
리뷰어 조언: % 모듈러스 연산자 활용하면 더 쉽게 구현할 수 있다.
플로우 차트에는 말그대로 플로우들을 명시하기.
사용자 1 - 컴퓨터 1 과 같은 세부 구현보다 승패 비교와 같은 하나의 작업으로 표시하는 것도 좋을 것 같아요
경우의 수를 다 나열하지 않고, 승패 비교하는 함수를 넣어주는 식으로 변경하여 가독성을 높였다.