디자이너로서 나는 힘/단순함 균형을 맞추는 인터페이스를 제공하는 것을 좋아합니다. 예를 들어 LINQ 디자이너는 도트 표기법과 쿼리 표기법을 모두 제공했기 때문에 이러한 원칙을 따랐습니다. 첫 번째는 더 강력하지만 두 번째는 읽기 쉽고 따를 수 있습니다. LINQ에 대한 나의 평가에 동의하지 않는다면, 어쨌든 제 관점을 보시기 바랍니다. LINQ는 단지 예일뿐입니다. 내 게시물은 LINQ에 관한 것이 아닙니다."다이얼 가능"전력 원칙 (일명?)
나는이 원리를 "다이얼 가능한 능력"이라고 부른다. 하지만 다른 사람들이 무엇이라고 부르는 지 알고 싶습니다. 확실히 어떤 사람들은 "키스 (KISS)"가 일반적인 용어라고 말할 것입니다. 그러나 저는 KISS를 수퍼 세트 또는 "소비주의"의 관행으로 봅니다. LINQ를 다시 사용하여 필자의 관점에서 항상 점 표기법보다 쿼리 표기법을 사용하려고하는 프로그래머 팀이 KISS를 연습하고 있습니다. 따라서 LINQ 디자이너는 KISS를 연습하는 반면 LINQ 디자이너는 "다이얼 가능한 기능"을 구현했습니다. 두 사람이 함께 아름다운 음악을 만듭니다.
편집 다른 예를 들어 보겠습니다. 수 개의 서명이있는 로깅 도구를 상상이 개 용도 :
이void Write(string message);
void Write(Func<string> messageCallback);
두 서명의 목적은 이러한 요구에 충족하는 것입니다
:이 오버로드를 갖는
//Every-day "simple" usage, nothing special.
myLogger.Write("Something Happened" + error.ToString());
//This is performance critical, do not call ToString() if logging is
//disabled.
myLogger.Write(() => { "Something Happened" + error.ToString() });
이 때문에 "전화 할 힘"을 나타냅니다 소비자는 간단한 인터페이스 또는 강력한 인터페이스를 선택할 수 있습니다. KISS를 사랑하는 소비자는 대부분의 경우보다 간단한 서명을 사용하고 전원이 필요할 때 "바쁜"보이는 서명을 허용합니다. 또한 강력한 서명을 사용하면 코드가 성능에 결정적인 요소라는 것을 독자에게 알리기 때문에 자체 문서 작성에 도움이됩니다. 로거가 강력한 서명 만 가지고 있다면 "다이얼 가능한 능력"이 없을 것입니다.
이렇게 전체 서클이됩니다. 아직 자신의 "다이얼 가능한 능력"을 유지하는 것이 행복하다. 그러나이 연습에 대한 확실한 명칭을 놓치고 있다고 생각하지 않을 수 없다.
p.s. 과 관련된 또 다른 예는 "다이얼 가능한 기능"과 동일하지 않은이며 Scott Meyer의 원칙은 "인터페이스를 올바르게 사용하기 쉽고 잘못 사용하기 어렵게 만듭니다."입니다.
나는 이것을 "강력한 API"부를 것이다,하지만 난 그게 너무 일반적 특정 패턴의 이름을 수 생각한다. – earldouglas
나쁜 질문은 아니지만 프로그래머 IMHO에 속합니다. – TrueWill
이전에 Microsoft가이 원칙을 _ "가장 유용한 [기능]을 쉽게 만들고 나머지는 [기능을 가능하게하십시오"_]라고 설명하는 것을 읽었습니다 (그러나 기억이 안납니다). 내가 막연하게도 "특징"대신에 90 %와 10 %의 숫자를 언급하는 것을 기억하는 것 같습니다. – stakx