개발자는 코드를 어떻게 사용합니까? 다시 말해, 어떤 인수를 사용해야하며 어떻게 결정해야합니까?
이들이 코드에서 자동으로 생성 된 문서에 의존하고 생성기에 어떤 단서도없는 **kwargs경우 실제로 문제가됩니다. 문서에서 논증의 목록과 그 의미를 찾는 대신, 모호한 " 일부 논증을 취함"을 제외하고는 정보가 전혀 없습니다 .
이 문제점은 메소드를 수동으로 문서화하고 자동으로 생성 된 문서를 대체하여 해결할 수 있습니다. 이를 위해서는 메소드 구현 자로부터 추가 작업이 필요하지만 코드 (및 해당 문서)는 작성된 것보다 훨씬 자주 읽습니다.
코드가 문서 인 경우 메소드를 사용하는 개발자 **kwargs는 두 가지 추가 단계가 필요합니다. 실제로 호출하는 다른 메소드를 찾으려면 메소드의 서명을 볼뿐만 아니라 실제 구현도 필요합니다. 그런 다음, 다른 방법으로 가서 원하는 것을 찾아야합니다.
이것은 많은 노력을 필요로하지 않지만 여전히 노력을 반복해서 반복해야합니다. 최악의 부분은 문서를 추가하여 도움을 줄 수 없다는 것입니다. 메서드를 추가하고 실제 인수를 나열하면 메소드가 호출하는 다음 버전의 라이브러리가 다른 인수를 가질 것이고 문서는 아무도 최신 상태로 유지해야한다는 사실을 기억하지 못하기 때문에 구식입니다.
내 권장 사항은 **kwargs범위가 축소 된 방법에만 의존하는 것입니다. _예를 들어 클래스의 몇 곳에서 사용되는 개인 메서드 (Python 컨텍스트에서 개인 메서드는으로 시작하는 메서드를 의미합니다 )는 좋은 후보입니다. 반면에, 코드베이스 전체에서 수십 개의 클래스가 사용하는 메소드는 매우 나쁜 후보입니다.
결국, 작성한 메소드 내에서 호출하는 메소드의 인수를 다시 작성하는 데 너무 많은 노력을 기울이지 않아야합니다. 바라건대, 대부분의 메소드는 6-8 개 이상의 인수를 사용하지 않으며, 그렇다면 리팩토링하지 않아야하는지 스스로에게 물어보십시오. 모든 상황에서: