이 질문은 의견의 근거로 99 %가 닫힐 수 있지만, 나는이 선택에 동기를 부여했을 수도있는 것에 대해 객관적인 찔러보기를 시도 할 것입니다.
대부분의 C 언어와 같은 형식은 Type identifier(params)
입니다. 말할 것도없이, 이것은 C의 독창적 인 디자인에서 비롯된 것입니다. C++, Java, C#은 모두이 스타일을 따릅니다.
이 스타일은 처음에는 유형을 읽고 정신적으로 파싱하지 않으면 메소드 이름을 골라 내기가 어렵 기 때문에 중요하지 않은 유형의 경우 중요한 문제가 있습니다. 이 꽤 일반적인 자바 방법을 고려
이
...
public static final Map<String, Array<MyGenericType<Foo, Bar>>> myMethodName(Type param) { ... }
...
메소드 이름, myMethodName
가, 중간 화면을 가로 질러이다 (당신이 관대 한 120 문자 코드 표준을 지배 따라 가정, 그리고 80 문자 하나). 정말 바보 같아요.
스타일 가이드가 여기에서 선택되었으며 많은 C 언어의 경우 이전 줄에 모든 유형 정보, 액세스 지정자 등이 포함 된 새 줄에 이름을 입력하는 것이 좋습니다. 이것은 C++에서 특히 널리 퍼집니다.
이것을 고려하십시오. 실 제 C++의 Boost
라이브러리 예제.
template <class A1, class A2, class A3, class A4, class A5, class A6>
inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type
auto make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&)
{
typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
return result_type();
}
을하지만, 어떤 경우, C++이 광기를 실현 팀, 그리고 지금은 다음과 같이 작성 될 수 있도록 다음과 같습니다 : 그것을 제안
template <class A1, class A2, class A3, class A4, class A5, class A6>
inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&)
{
typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
return result_type();
}
대부분은 다음과 같이 쓸 수
template <class A1, class A2, class A3, class A4, class A5, class A6>
make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&) -> inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type
{
typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
return result_type();
}
스위프트에도 기능이 있습니다. – Alexander
40 년 된 언어가 그렇듯이 '타입 식별자()'가 "가장 현명한"이유라고 생각하게하는 이유 – Alexander
@AlexanderMomchliov @AlexanderMomchliov 나는 그것이 "가장 현명한"것이라고 생각하지 않습니다. 따옴표를 사용하십시오. 나는 신속하게 내가 말할 수있는 아무 이유없이 지나치게 장황한 것을 사용하고있는 것처럼 보인다. 프로그래머가 익숙한 것을 왜 바꾸어야합니까? 이유가 있어야하는데, 이것이 내가이 질문을하는 이유입니다. – theonlygusti