클린코드 - 02. 의미있는 이름 의도를 분명히 밝혀라 변수(혹은 함수나 클래스) 존재이유? 수행기능? 사용방법? 이 모든 것을 답하기 위해 주석이 필요하다면 의도를 분명히 드러내지 못했다는 뜻. 그릇된 정보를 피하라 그릇된 단서는 코드의 의미를 흐린다 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다 실제 컨테이너가 List가 아닐 경우 List로 명명하면 그릇된 정보를 제공하므로 이렇게 명명하지 않는다 실제 List여도 컨테이너 유형의 이름에 넣지 않는 것이 바람직하다 유사한 개념은 유사한 표기법을 사용한다 이름만 보고 정보를 추측하기 때문에 일관성이 떨어지는 표기법은 그릇된 정보다 연관성이 없는 것에 대해 비슷한 단어를 사용했을 경우 연관이 있다고 생각하는 오류를 범하기 때문에 ..
클린코드 - 01. 깨끗한 코드 원초적 난제 기한에 맞추려면 나쁜코드를 양산할 수 밖에 없다고 느낄 것이다. 하지만 코드를 최대한 깨끗하게 유지하는 습관이 기한 맞추는 유일한 방법일지 모른다. 깨끗한 코드라는 예술? "깨끗한 코드가 무엇일까?" "어떻게 작성할까?" '깨끗한 코드'가 무엇인지 조차 모른다면 노력해봤자 소용없다. 하지만 이 말이 '깨끗한 코드'와 '나쁜 코드'를 구분할 줄 알아야만 '깨끗한 코드'를 작성할 수 있다는 의미는 아니다. ‘코드 감각’이 있다면 개선할 방안이 떠오를 것이다. 다만 '코드 감각'은 누군가는 타고날수도 있고 누군가는 경험을 통해 얻을 수도 있다. 깨끗한 코드란? 비야네 스트롭스트룹 "우아하고 효율적인 코드를 좋아한다." 우아하고 효율적인 코드를 좋아한다. 효율적인 코..
자바스크립트 전역 스코프에 정의된 것은 코드 내의 어디서든지 접근이 가능하다는 것이 문제가 되고는 합니다. 이때 외부에 공유되면 안되거나 충돌날 위험이 있는 경우 즉시 실행 함수를 통해 해결하고는 합니다. 즉시 실행 함수(IIFE) 단순하게 함수와의 차이를 보자면 즉시 실행되는지 아닌지의 차이입니다. 함수표현식은 함수를 정의하고, 변수에 함수를 저장하고 실행하는 일련의 과정이 있습니다. 하지만 즉시실행함수는 이러한 과정없이 즉시 실행됩니다. 문법의 차이는 단순히 함수를 괄호 "()"로 랩핑한다는 것입니다. 형태 (function() { console.log('즉시 실행 함수'); }()); var now = (function () { console.log('즉시 실행 함수') })(); 익명, 기명 즉시..

이터러블 (Iterable) 순회가능한 객체를 말합니다. 순회 가능한 객체는 Symbol.iterator 심볼 속성을 가지고 있으며 이터레이터 객체를 반환하는 객체를 말합니다. 이러한 것을 이터러블 프로토콜이라고 하며 이터러블 객체라고 합니다. 이터레이터 (Iterator) 이터러블 메소드로 반환하는 객체입니다. next 메소드를 구현하고 있으며 value, done을 반환하는 객체입니다. 반환되는 IteratorResult는 {done: boolean, value: any} 형태의 단순한 객체입니다. next 메소드를 통해 모든 값을 돌고 나면 done이 true로 나오며 끝납니다. 한번 끝난 이터레이터는 다시 돌아가지 않으며 value가 undefined로 리턴합니다 이러한 것을 이터레이터 프로토콜이..