"함수에 대한 이상적인 인수 개수가 0"은 분명하지 않습니다. 이상적인 인수 수는 함수에 부작용이 없는데 필요한 숫자입니다. 그보다 적 으면, 불필요하게 함수가 불완전하게되어 성공의 구덩이에서 멀어지면서 고통의 구배를 상승하게됩니다. 때때로 그의 조언으로 "Uncle Bob"이 발견됩니다. 때때로 그는 장관이 잘못되었습니다. 그의 제로 논증 조언은 후자의 예입니다
( 출처 :이 사이트의 다른 질문에 @David Arno의 코멘트 )
이 의견은 133 개의 공감대를 얻었으므로 그 장점에 더주의를 기울이고 싶습니다.
내가 아는 한, 프로그래밍에는 두 가지 별도의 방법이 있습니다 : 순수한 기능 프로그래밍 (이 주석이 권장하는 것)과 묻지 말고 (이 웹 사이트에서도 때때로 권장되는) 말하지 마십시오. AFAIK이 두 원칙은 근본적으로 호환되지 않으며 서로 반대되는 점에 가깝습니다. 순수한 기능은 "반환 값만, 부작용 없음"으로 요약 할 수 있지만, 묻지 말고 "아무 것도 반환하지 않음"으로 요약 할 수 있습니다. 부작용 만 있습니다 " 또한 순수한 기능은 기능적 패러다임의 핵심으로 간주되는 반면, OO 패러다임의 핵심으로 간주되지 않는다고 생각했기 때문에 나는 혼란에 빠졌습니다.
개발자가 이러한 패러다임 중 하나를 선택하여 고수해야한다고 생각합니까? 글쎄, 나는 결코 나를 따라갈 수 없다는 것을 인정해야한다. 종종 값을 반환하는 것이 편리한 것처럼 보이며 부작용으로 만 달성하고자하는 것을 어떻게 달성 할 수 있는지 실제로 알 수 없습니다. 종종 부작용이있는 것이 편리한 것처럼 보이며 값을 반환해야만 달성하고자하는 것을 어떻게 달성 할 수 있는지 실제로 알 수 없습니다. 또한 종종 (나는 이것이 끔찍한 것 같아) 두 가지 방법을 모두 가지고 있습니다.
그러나이 133 개의 공감대에서 나는 현재 순수 기능 프로그래밍이 "승리"하고 있다고 말하는 것이 바람직하다. 이 올바른지?
따라서이 반 패턴 타기 게임의 예에서 나는 노력하고 있습니다 : 순수한 기능적 패러다임을 준수하고 싶다면-어떻게?!
전투 상태를 갖는 것이 합리적입니다. 이 게임은 턴 기반 게임이므로 전투 상태를 사전에 유지합니다 (멀티 플레이어-많은 플레이어가 동시에 여러 번 플레이 할 수 있음). 플레이어가 턴을 할 때마다 (a) 상태를 적절하게 수정하고 (b) 플레이어에게 업데이트를 반환하는 JSON을 적절한 방식으로 호출합니다.이 업데이트는 JSON으로 직렬화되고 기본적으로 판. 이것은 두 원칙을 동시에 위반하는 것으로 간주됩니다.
OK-실제로 원한다면 수정하지 않고 RETURN 방법으로 전투 상태를 만들 수 있습니다. 그러나! 그런 다음 전투 상태의 모든 것을 불필요하게 복사하여 완전히 수정하지 않고 완전히 새로운 상태를 반환해야합니까?
이제 이동이 공격이라면 HP가 업데이트 한 캐릭터 만 반환 할 수 있습니까? 문제는 간단하지 않다는 것입니다. 게임 규칙, 이동은 종종 플레이어의 HP의 일부를 제거하는 것보다 훨씬 더 많은 영향을 미칩니다. 예를 들어, 문자 사이의 거리를 늘리거나 특수 효과를 적용하는 등의 작업을 수행 할 수 있습니다.
상태를 수정하고 업데이트를 반환하는 것이 훨씬 간단 해 보입니다 ...
그러나 숙련 된 엔지니어가 어떻게이 문제를 해결합니까?