속성과 메소드를 항상 확인하지 않고 자바 스크립트에서 오리 타이핑을 어떻게 사용합니까?
단순성 : 속성과 메서드를 항상 확인하지는 마십시오.
루비에서는 여러분이 부르는 것을 "치킨 타이핑"이라고합니다. 동적으로 오리 형식의 언어에서는 호출자가 적절한 객체를 전달한다고 믿기 만하면됩니다. 계약의 측면을 존중하는 것은 발신자의 직업입니다.
나는 자바 스크립트가 오리 타이핑을 사용한다는 것을 알고 처음에는 이것이 C #과 같은 강력한 유형의 언어에 비해 다형성을 쉽게 만들 것이라고 생각했습니다.
여기에 여러 직교 축 입력을 혼동하고 있습니다. 입력의 직교 축에는 네 가지가 있습니다.
- When : 동적 타이핑 (런타임까지 타입을 알 수없고 확인) vs. 정적 타이핑 (런타임 전에 타입을 알고 확인 함)
- 내용 : 오리 타이핑 (유형은 동작 에 기반 함 ), 구조 타이핑 (유형은 구조 기반 ) 및 공칭 타이핑 (유형은 이름 기반 )
- 당신은 그들을 볼 수 있습니까? 명시 적 타이핑 (유형에 주석을 달아야 함) vs. 암시 적 타이핑 (유형이 유추 됨)
- 강력한 타이핑 vs. 약한 타이핑 –이 제목에 눈에 띄는 제목이나 괄호 안의 설명을주지 않았다는 사실을 알았을 것입니다. 위의 7 가지 용어와는 달리,이 두 용어는 모두 보편적으로 받아 들여지는 정확한 정의를 가지고 있기 때문입니다. 서로 모순되는 약 12 개의 반 넓게 사용되는 모호한 정의가 있습니다. 이상적으로는 모두 이러한 용어를 방지해야하며,이 경우에 있어야 사용할 정확하게 먼저 정의
C #을 언급 했으므로 대부분 정적으로 유형이 지정되지만 type을 통한 동적 유형 지정을 지원하지만 dynamic
대부분 명목상 유형이 지정되지만 익명 유형은 구조적 유형 지정을 사용하며 구문 유형 (LINQ 쿼리 이해 구문과 같은)은 둘 중 하나라고 주장 할 수 있습니다. 유형이 지정되거나 구조적으로 유형이 지정된 경우 대부분 명시 적으로 유형이 지정되지만 일반 유형 인수 및 로컬 변수에 대한 암시 적 입력을 지원합니다 (로컬 변수 케이스는 대부분의 다른 언어에 비해 다소 이상하지만 유형을 그대로 둘 수는 없으므로 대신 명시적인 의사 유형을 제공하십시오.var
즉, 암시 적 유형을 원하면 명시 적으로 말해야합니다. C #을 강력하게 입력했는지 또는 약하게 입력했는지 여부는 사용하는 두 용어의 정의에 따라 다르지만 특히 안전하지 않은 배열 공분산으로 인해 C #에 많은 런타임 유형 오류가있을 수 있습니다.
나는 확인할 수는 없지만 자바 스크립트 런타임 오류를 추적하는 것은 실제로 오류가 코드에서 발생하는 곳에서 항상 발생하지 않기 때문에 악몽이 될 수 있습니다.
디버깅은 배우기 쉬운 기술이 아닙니다. 그러나 Saff Squeeze 는 디버깅을 위해 테스트 및 리팩토링을 사용하는 Kent Beck이 설명하는 기술입니다.
회귀 테스트 및 사프 스퀴즈
켄트 벡, 쓰리 리버스 인스티튜트
개요 : 결함을 효과적으로 격리하려면 시스템 수준 테스트로 시작하여 결함을 보여주는 가장 작은 테스트가 될 때까지 점진적으로 인라인하고 정리하십시오.