로버트 마틴이 " 깨끗한 코드 "를 읽고 더 나은 프로그래머가되기를 바랍니다. 지금까지 그 어느 것도 실제로 획기적인 것은 아니지만 응용 프로그램을 디자인하고 코드를 작성하는 방법에 대해 다르게 생각하게 만들었습니다.
이 책에는 동의하지 않을뿐만 아니라 특히 인터페이스 명명 규칙과 관련하여 이해가되지 않는 부분이 있습니다. 다음은 책에서 직접 가져온 텍스트입니다. 혼란스럽고 명확하게 설명하려는 측면을 굵게 표시했습니다.
인터페이스를 무인 상태로 두는 것을 선호합니다. 오늘날의 레거시 뭉치에서 흔히 볼 수있는 앞의 I는 최악의 경우 너무 혼란스럽고 너무 많은 정보입니다. 내 사용자가 인터페이스를 전달한다는 것을 알고 싶지 않습니다 .
아마도 학생 일뿐이거나 전문가 또는 팀 기반 프로그래밍을 한 적이 없기 때문에 사용자가 인터페이스임을 알기를 원할 것입니다. 인터페이스 구현과 클래스 확장에는 큰 차이가 있습니다.
그래서 제 질문 은 "코드의 일부가 인터페이스를 기대한다는 사실을 숨겨야하는 이유는 무엇입니까?"로 귀결됩니다.
편집하다
답변에 대한 답변 :
유형이 인터페이스이거나 클래스가 비즈니스 인 경우 코드를 사용하는 사람의 비즈니스가 아닙니다. 따라서이 타사 코드에서 코드의 세부 정보를 유출해서는 안됩니다.
주어진 유형이 인터페이스인지 또는 타사 코드에 대한 클래스인지에 대한 세부 정보를 "누설"해서는 안되는 이유는 무엇입니까? 인터페이스를 구현할지 또는 클래스를 확장할지 여부를 알기 위해 내 코드를 사용하는 타사 개발자에게 중요하지 않습니까? 차이점을 내가 생각하는 것만 큼 중요하지 않은가?
to know whether they will be implementing an interface or extending a class
: 예, 그러나 대부분의 코드 사용자는 코드를 호출하거나 구현하거나 확장하지 않으며 실제로 어떤 코드인지 신경 쓰지 못했습니다.