많은 사람들이 정보를 얻는 기능이있어서 나쁜 것을 암시하는 테스트 주도 개발 사람들로부터 자주 듣습니다. 나는 이것이 테스트 관점에서 나쁘다는 것을 알 수 있었지만 때때로 캡슐화 관점에서 필요하지 않은가? 다음 질문은 마음에 온다 : 알려진 매개 변수를 전달하지 않아 캡슐화를 암시 적으로 위반합니까?
Is using Random and OrderBy a good shuffle algorithm?
은 기본적으로 누군가가 무작위로 배열을 임의 재생으로 C#에서 함수를 만들고 싶었습니다. 몇몇 사람들은 난수 생성기가 매개 변수로 전달되어야한다고 말했습니다. 이것은 테스트를 더 쉽게 만들지라도 캡슐화에 대한 심각한 위반처럼 보입니다. 배열 셔플 알고리즘이 배열 이외의 다른 모든 상태를 요구한다는 사실은 호출자가 신경 쓰지 않아도되는 구현 세부 사항을 셔플하고 있습니까? 이 정보를 암시 적으로 얻을 수있는 올바른 위치가 아니겠습니까? 스레드 로컬 싱글 톤 (thread-local singleton)?
질문은 상당히 앞서 가고자하는 의도입니까? "해야"한다는 정의에 따라 캡슐화가 깨지는 알려진 매개 변수를 전달합니다. 그래서 예를 들어 이것의 크기를 벡터의 멤버 함수로 넘겨주지 마십시오. 그러나 예를 들어, 무작위의 출처가 셔플 알고리즘에 대해 내부적으로 알려 져야한다는 것이 매우 의심 스럽습니다. 비교 함수가 "내부"에 있어야합니다. 질문은 진술 된대로 대답 할 수 있습니다. 또는 무작위의 출처가 분명히 내부적으로 알려지지 않아야하는 셔플 같은 경우에 대해 대답 할 수 있습니다 ;-) –