2008-10-15 4 views
35

Named Parameter IdiomBoost::Parameter library을 살펴 보았습니다. 각각의 장점은 무엇입니까? 항상 다른 것보다 하나를 선택해야하는 좋은 이유가 있습니까? 아니면 어떤 상황에서 각각의 것이 다른 것보다 낫지 않을까요? 그렇다면 어떤 상황입니까?C++ "Named Parameter Idiom"vs. Boost :: 매개 변수 라이브러리

+1

나는 둘 모두에 대해 전혀 몰랐습니다. 그냥 둘 다 갔었 어. Thanks Geek –

+0

답을보기에는 충분치 않습니다 : Boost :: Parameter를 사용하는 코드는 항상 암시적인 untestable 변환을 포함합니다. +1은 명명 된 매개 변수의 관용어 – bobah

+1

에 연결됩니다. "이름이 지정된 매개 변수 관용구"페이지에 대한 링크를 추가 할 수 있습니까? – xaxxon

답변

20

명명 된 매개 변수를 구현하기 이디엄은 Boost :: Parameter를 사용하는 것만 큼 쉽지만 거의 쉽기 때문에 하나의 주요 포인트로 요약 할 수 있습니다.

- 부스트 종속성이 이미 있습니까? 그렇게하지 않으면 Boost :: 매개 변수가 종속성을 추가 할만큼 충분히 특별하지 않습니다.

개인적으로 프로덕션 코드에서 Boost :: 매개 변수를 본 적이 없으며 100 % 시간이 명명 된 매개 변수의 사용자 지정 구현 이었지만 반드시 좋은 것은 아닙니다.

+0

고마워요. 나는 부스트 종속성을 이미 가지고 있지만 대신 명명 된 매개 변수로 갈 것입니다. –

0

절대 들어 본 적이 없지만 링크를 검토하면 매개 변수 이름을 쉽게 이해할 수 있습니다. 부스트 구현에 대해 마음에 듭니다.

2

명명 된 매개 변수 관용구는 훨씬 간단합니다. 왜 Boost :: Parameter 라이브러리의 복잡성이 필요한지는 알 수 없다. (심지어 유추 된 "기능"유추 매개 변수는 코딩 오류를 도입하는 방법처럼 보입니다.))

15

일반적으로 나는 Boost를 좋아합니다.하지만 저는 Boost.Parameter 라이브러리를 커플에게 사용하지 않을 것입니다. 이유 : 당신은 무슨 일이 일어나고 있는지 모르는 경우 당신이 통화를 전에 호출하는 함수의 범위 의 변수에 값을 할당하는 것처럼

  1. 는 통화가 보인다. 그건 매우 혼란 스러울 수 있습니다.
  2. 처음 설치하는 데 필요한 상용구 코드가 너무 많습니다.
+3

이 같은 이유로 우리는 복잡하고 혼란 스럽기 때문에 C++에서 템플릿을 제거해야합니다. 그것은 "학습"이라고 불립니다. – Raindog

+15

템플릿은 언어에 많은 힘을줍니다. 명명 된 매개 변수에 대해 똑같이 말할 수 있다고 생각하지 않습니다. 무언가가 복잡하기 때문에 그것이 유용하다는 것을 의미하지는 않습니다. – Ferruccio

2

당신은 아마 당신이 라이브러리의 클라이언트에 대해 상당히 시간을 절약 할 수있는 개발중인 라이브러리 코드를 원하는 것처럼 너무 많은 일반 응용 프로그램 논리에 대한 Boost.Parameter을 원하지 않는다.

9

다른 점은 Named Parameter Idiom을 한번도 사용하지 않았지만 Boost Parameter를 사용하여 최대 20 개의 선택적 인수를 정의했습니다. 그리고, 제 컴파일 시간은 미친입니다. 몇 초가 걸렸던 것이 이제는 30 초가 걸렸습니다. 이것은 boost 매개 변수를 사용하여 작성한 작은 응용 프로그램을 사용하는 라이브러리가있는 경우 추가됩니다. 물론, 나는 그것을 잘못 구현하고 있을지 모르지만, 나는 그 변화가 있기를 바란다.