동적 타이핑 언어(주로 스크립트) 와 헝가리안 표기법?

kkb110의 이미지

헝가리안 표기법은 에디터가 강력해지면서 별로 쓸모가 없어졌었는데요.

동적타이핑을 사용하는 언어에서는 에디터에서 변수의 타입을 확인할 수가 없어서 코드 브라우징할때 좀 불편하기도 하더라구요.

뭐, 어떤 변수의 타입이 실행할때마다 다른 조건에서 다르게 변할수도 있긴 한건데, 솔찍히 95%정도는 한가지 타입으로만 사용하게되니까요. 이럴때 타입에 대한 힌트를 얻을 수 있게 변수명에 살짝 기술해주는 것도 도움이 되는 것 같습니다.

왠지 과거로 역행하는것같고, 그닥 좋아보이진 않습니다만... 다른분들은 어떻게 생각하시는지 궁금하네요.

예)

result = bar + foo
 
intResult = intBar + strFoo
shint의 이미지

주된 기능은 구분할 수 있느냐. 인거 같습니다.
그 다음은. 인식하기 편한가.입니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

planetarium의 이미지

bar보다는 intBar가 편할수도 있지만
애초에 count 라거나 numPages 처럼
무엇을 담고 있는지 명확하게 알수 있도록 변수명을 짓는게 더 좋지 않을까요?

sangheon의 이미지

헝가리안 표기법에서 타입을 적는 것은 와전 된 이야기라고 합니다. (MS 문서팀의 삽질있다고...)

원래는 의미를 적는 것이었다고 하네요.

--

Minimalist Programmer

익명 사용자의 이미지

저도 의미상의 목적에 헝가리안표기의 의미가 있다고 생각합니다.

ps. 로그인상태에서 글이 안써집니다. ㅠㅠ

익명 사용자의 이미지

동적 언어는 일부러 타입을 없앴는데...
타입이 없어서 불편하다고 변수 이름에 타입을 붙일 것이 아니라...
그런 경우는 동적 언어를 사용하지 말고 정적 타입 언어를 써야 되는 것이죠.

익명 사용자의 이미지

그렇다고 javascript같은 걸 교체할 수는 없잖아요

그리고 '타입을 없앴다'라는 말도 어울리지는 않는군요.
타입간의 '표기'만 자유롭거나 생략 가능한 수준이지요

익명 사용자의 이미지

주석을 활용하는 방법도 있습니다.
result // int
bar // int
foo // str
result = bar + foo // result 는 문자열

저는 개인적으로 타입이 필요하다고 느끼는 부분은 함수 인자입니다.
function(arg1, arg2) 이런 건데...
이런 거는 API 문서에서

function(arg1, arg2)
arg1 : int 형 변수
arg2 : str 형 변수
return : arg1 숫자와 arg2 숫자로된 문자열 int로 형변환하여 둘을 합산하여 int 형 result를 반환한다.

이런 식으로 API 문서를 작성하면 헷갈리지 않을 듯.

function 을 구현할 때 필요하다면 타입 체크를 해주는 코드를 넣을 수 있습니다.

그리고 타입을 지정하지 않으므로...

function(int arg1, int arg2)
function(int arg1, str arg2)
function(str arg1, int arg2)
function(str arg1, str arg2)

들을 하나의 함수 function(arg1, arg2) 로 표현할 수 있습니다.
그렇기 때문에 변수명에 int, str, boolean 을 붙이는 것은 .... 이런 경우에는 불필요합니다.
다만, function(int arg1, int arg2)만 사용하는 경우는...
arg1, arg2 의 타입을 체크하는 코드를 작성해주면 될 것이라고 생각합니다.
함수에서 필요로 하는 타입이 아니면 예외를 발생한다거나... 에러 메시지를 내뿜던가하여
오류를 줄일 수 있습니다.

익명 사용자의 이미지

헝가리안을 피하기 위해

타입주석을 달거나 타입체크 코드를 작성하기에는...
불필요한 소요가 많아 보입니다.

익명 사용자의 이미지

헝가리안을 일부러 피하는 것이 아니고...
원래부터 저렇게 코딩해왔을텐데요...