2011-10-07 4 views
1

현재 프로젝트 코드베이스는 모든 유닛과 그 친구를 정제했습니다.원시 데이터 형식을 다시 정의하는 것이 과도하게 필요합니까?

추출 : -

... 
typedef int m; // meter 
typedef int htz; 
typedef int s; // second 
... 

좋은 또는 나쁜?
나는 그것을 싫어한다! 그것의 고통, 아무 이득도없고, "m"는 세계적으로, omg를 정의했다!

그러나 나는 그것을 더 싫어하는 이유를 기술적이고 명료 한 저택에서 더 자세히 이야기하고 싶습니다.

사람 목록이 패턴의 인수/반대? 많은 감사합니다.

+1

와우. 코드를 작성한 사람은 모든 변수 이름을 "자연스러운"소리로 만들기 위해 정말로 방해가되었습니다. –

+1

그건 정말 충격적입니다. 'Hz'여야합니다. 구조에 boost.units –

답변

4

사용자 정의 유형을 만드는 것이 더 좋으므로 전환 및 과부하 연산자를 제어 할 수 있습니다. 지금 당장 헤르츠에 1 미터를 곱하는 것과 같은 의미없는 일을 할 수 있습니다. 이상적으로, m/s는 속도를 낼 것이나 그렇지 않을 것입니다. 그저 typedef처럼 의미가 없습니다.

+8

boost.units! – PlasmaHH

+1

예, 클래스로 만들거나 @PlasmaHH 상태로 부스트를 사용하십시오. –

+0

"나는 헤르츠로 미터를 곱하는 것과 같은 의미없는 일을 할 수 있습니다."나쁜 예를 들면 파장 (m)과 주파수 (Hz)를 곱하여 웨이브의 속도를 '). –

2

아마도 의도를 문서화하려고 시도하지만 유형 안전성이 없으면이를 시행하지 않습니다. 코드에 대한 추론을위한 진입 장벽을 높이는 것은 혼란입니다.

유형 안전성을 시도하고 작성한 경우에도 낮은 수준에서 추상화를 시도하면 복잡성이 추가됩니다. 문제를 쉽게 해결할 수있는 것은 아닙니다. 변수 이름은 어쨌든 내용을 잘 설명합니다.

+0

"변수 이름은 내용을 충분히 잘 묘사합니다."... wweelll,해야합니다! –

+0

@IanVaughan 분명히 나는 ​​비관적으로 낙관적이다. –

관련 문제