Insight

NEXTSTEP 온보딩 계산기 미션 인사이트

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

모듈의 응집도, 결합도

  • 모듈화란 소프트웨어를 각 기능별로 나누는 것을 말한다. 그리고 각각의 기능별로 나눠진 모듈화의 결과를 모듈이라고 하며, 좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누는 것이다. 즉 주어진 기능만을 독립적으로 수행하며 다른 모듈과 적게 연관되어야 한다.
  • 독립성이 높은 모듈일수록 좋은 모듈이며, 모듈의 독립성은 결합도와 응집도를 통해 측정한다.
  • 결합도가 낮을 수록, 응집도가 높을 수록 독립성이 높아진다.

결합도

  • 결합도는 서로 다른 모듈 간의 상호의존성을 나타내는 정도 혹은 연관된 관계를 뜻한다.
  • 모듈이 낮은 결합도를 가질수록 좋다.

응집도

  • 응집도는 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도를 뜻한다.
  • 하나의 기능을 중심으로 잘 뭉쳐있는지를 나타내며, 모듈이 높은 응집도를 가질수록 좋다.

Reference