자바스크립트 클린코드 4

14장. 점진적인 개선 - 자바스크립트 클린코드

점진적인 개선(Progressive Improvement) 출발은 나쁘지 않았다. 그러나 소스가 방대해지면서, 확장성이 부족했던 모듈을 어떻게 개선해 나갈지에 대해 정리해보자. 처음에 코드를 작성할 때는 나름의 함수 그리고 변수명을 고려하여, 작성을 한다. 그러나 완성된 코드를 보면, 지저분하기 짝이 없었던 경험을 누구나 다 해봤으리라 짐작한다. # 프로그래밍은 과학보다는 “공예”에 가깝다. 처음 부터 완벽한 작품을 만들기란 어려운 것이다. 거듭한 리팩토링 끝에 그나마 깨끗한 코드를 만들 수 있다. 우선 수정 작업에 들어가기 전, 1차 초안을 보며 자신을 되돌아본다. 내가 대충 짜서 방치해둔 코드를 다른 사람이 보게 되면 어떨지 항상 생각하면서 작성하는 습관을 들이자 # 점진적으로 개선하다 개선 이라는 ..

13장. 동시성(Concurrency) - 자바스크립트 클린코드

동시성(Concurrency) 콜백지옥은 프론트엔드 개발자라면, 한 번쯤은 겪어봤을 것이다. 중첩의 중첩의 중첩을 만들어내는 콜백은 최대한 지양해야 한다. 콜백이 대체 무엇이길래? 다른 함수의 인자(argument)로 넘겨주는 함수이다. 함수와 함수를 연결해준다고 생각하면 이해하기 쉽다. [동기 vs 비동기] 자바스크립트는 단일(single) 스레드 프로그래밍 언어이다. 동기 = 싱글 스레드 = 순차적 실행 모두 동일한 의미이다. 싱글 스레드는 하나의 코드가 실행되어 끝난 시점에 다음 코드 시작 지점이 연결된 형태이다. 단일 스레드는 선행 작업이 완료될 때까지, 다른 일을 수행하지 못하고 기다린다. -> 블로킹 발생 (콜 스택 멈춤 상태) 한 번에 하나의 콜 스택을 가진다. // 동기적으로 3초 마다 배..

10장. 클래스 - 자바스크립트 클린코드

프론트엔드에서 클래스란 모던 자바스크립트, ES6부터 객체 지향 프로그래밍을 위해 고안된 개념으로 프로토타입을 기반으로 한다. 클래스에 대해 간단하게 정리 해보자면, - 클래스틑 class 키워드를 사용하여 정의한다. - 클래스에서 정의할 수 있는 메서드는 constructor(생성자), 프로토타입 메서드, 정적 메서드가 있다. - 클래스는 인스턴스를 생성하기 위한 생성자 함수이며, new 연산자와 함께 호출된다. - 인스턴스는 클래스로부터 생성되는 객체이다. - constructor : 인스턴스를 생성하고 초기화하는 메서드이다. (최초로 정의하는 곳이라고 이해하자) - 프로토타입 메서드 : 인스턴스의 프로토타입에 존재하는 메서드. 인스턴스에서 상속받아 사용할 수 있다. - 정적 메서드 : 인스턴스 생성..

7장. 오류 처리 - 자바스크립트 클린코드

예외를 사용하지 않을 경우 함수를 호출한 즉시 오류를 확인해야 하는 번거로움이 있다. 따라서, 오류가 발생하면 예외를 던지도록 코드를 짜는 것이 더 좋다. 그래야 논리와 오류 처리 코드가 섞이지 않는다. Try - Catch - Finally try 블록에서 무슨 일이 생기든이 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 예외가 발생하는 코드를 짤 때는 웬만하면 try-catch-finally문으로 작성하는 것이 좋다. 사용 예 try { nonExistentFunction(); } catch (error) { console.error(error); // expected output: ReferenceError: nonExistentFunction is not defined // Not..