NEXTSTEP의 온보딩 미션을 진행하면서, 리뷰받았던 내용들에 대해 간단히 정리해보고자 한다.
isNaN, Number.isNaN
isNaN
의 경우, 주어진 인자의 값이NaN
인지 판별하여true
,false
를 반환하는 전역 함수이다. 하지만 인자의 타입을Number
으로 강제 형변환 후에 판별하기 때문에, 엄격한 비교룰 위해서는 ES6에 추가된Number.isNaN
을 사용햐는 것이 적절하다.Number.isNaN
은 기존에 존재하는isNaN
의 엄격한 버전으로서, 주어진 값의 유형이Number
이면서 주어진 인자의 값이NaN
인지 판별하여true
,false
를 반환하는 함수이다.
Number.isNaN(NaN); // true
isNaN(isNaN) // true
Number.isNaN(Number.NaN); // true
isNaN(Number.NaN) // true
Number.isNaN(0 / 0) // true
isNaN(0 / 0) / // true
// 예를 들면 이들은 global isNaN()으로는 true가 됐을 것임
Number.isNaN("NaN"); // false
Number("NaN") // NaN
isNaN("NaN") // true
Number.isNaN(undefined); // false
Number(undefined) // NaN
isNaN(undefined) // true
Number.isNaN({}); // false
Number({}) // NaN
isNaN({}) // true
Number.isNaN("blabla"); // false
Number("blabla") // NaN
isNaN("blabla") // true
// 모두 false
Number.isNaN(true); // false
Number.isNaN(null); // false
Number.isNaN(37); // false
Number.isNaN("37"); // false
Number.isNaN("37.37"); // false
Number.isNaN(""); // false
Number.isNaN(" "); // false
모듈의 응집도, 결합도
- 모듈화란 소프트웨어를 각 기능별로 나누는 것을 말한다. 그리고 각각의 기능별로 나눠진 모듈화의 결과를 모듈이라고 하며, 좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누는 것이다. 즉 주어진 기능만을 독립적으로 수행하며 다른 모듈과 적게 연관되어야 한다.
- 독립성이 높은 모듈일수록 좋은 모듈이며, 모듈의 독립성은 결합도와 응집도를 통해 측정한다.
- 결합도가 낮을 수록, 응집도가 높을 수록 독립성이 높아진다.
결합도
- 결합도는 서로 다른 모듈 간의 상호의존성을 나타내는 정도 혹은 연관된 관계를 뜻한다.
- 모듈이 낮은 결합도를 가질수록 좋다.
응집도
- 응집도는 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도를 뜻한다.
- 하나의 기능을 중심으로 잘 뭉쳐있는지를 나타내며, 모듈이 높은 응집도를 가질수록 좋다.