본문 바로가기

분류 전체보기103

[JS] CommonJS와 ES6 JS 모듈화 역사 require는 NodeJS에서 사용되고 있는 CommonJS 키워드이고, import는 ES6(ES2015)에서 새롭게 도입된 키워드입니다. 일반적으로 import ES6(ES2015)는 사용자가 필요한 모듈 부분만 선택하고 로드 할 수 있기 때문에 더 선호됩니다. 최근 ES6(ES2015) 모듈 시스템인 import가 많이 사용되고 있지만, 그러나 아직까지는 import 키워드가 100% 대체되어 사용될 수 없습니다. 태그를 사용하는 브라우저 환경과, NodeJS에서도 CommonJS를 기본 모듈 시스템으로 채택하고 있기 때문에, Babel과 같은 ES6 코드를 변환(transpile)해주는 도구를 사용할 수 없는 경우에는 require 키워드를 사용해야 합니다. node.js프로젝.. 2022. 2. 13.
[클린코드] 1~2장 1장 깨끗한 코드 분당 욕(이게뭐야)이 얼마나 나오냐에 따라 좋은코드인지 나쁜코드인지 나뉜다. 나쁜코드 중복된 코드 불필요한 연산이 들어간 성능이 나쁜 코드 네이밍과 내용이 다르거나 이해하기 어려운 의미가 모호한 코드 "우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 대충 짠 프로그램이 돌아가는 것에 안도감을 느끼고 안돌아가는 쓰레기보다 돌아가는 쓰레기가 좋다고 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다." 시간이 부족하다는 이유로, 영향범위가 넓어 버그가 생길까 두려워 나쁜코드가 생긴다. 나쁜 코드가 나쁜 이유는 개발속도와 생산성을 시간이 지날수록 크게 떨어 트린다. .. 2022. 2. 10.
[리펙터링 2판] 12장 - 상속 다루기 상속은 발등에 불이 떨어져야 비로소 잘못 사용했음을 알아차리는 경우가 많다. 상속은 막강한 도구지만, 잘못된 곳에서 사용되거나 나중에 환경이 변해 문제가 생기기도 한다. 12. 1 매서드 올리기 내용 중복된 메서드를 찾아 제거하여 메서드 올리기를 사용한다. 적용 메서드들의 본문 코드가 똑같을 때 매서드 올리기를 적용하면 된다. 가장 이상하고 복잡한 경우에는 메서드의 본문에서 참조하는 필드들이 서브클래스에만 있는 경우 슈퍼클래스로 올린 후에 메서드를 올려야 한다. 결과 중복 코드를 제거하는 것은 중요하기에 효과를 볼 수 있다. 예시 Before class Employee {...} class Salesman extends Employee { get name() {...} } class Engineer ex.. 2022. 2. 10.
[리펙터링 2판] 11장 - API 리팩터링 모듈과 함수는 소프트웨어를 구성하는 빌등 블록, API는 이 블록들을 끼워 맞추는 연결부이다. 좋은 API 데이터를 갱신하는 함수와 그저 조회만 하는 함수를 명확히 구분해야 한다. 11. 1 질의 함수와 변경 함수 분리하기 내용 외부에서 관찰할 수 있는 겉보기 부수효과가 전혀 없이 값을 반환해주는 함수를 추구해야한다. 겉보기 부수효과는 입출력 변경이나, 데이터 값이 변형되는 경우 적용 데이터 갱신과 조회 기능이 있다면 명확히 구분해야 한다. 질의 함수(읽기 함수 : 값을 계산하여 리턴시키는 함수)는 부수효과가 포함된 경우에 제거한다. (명령-질의 분리) 결과 부수 효과를 신경쓸 필요가 없어 사용하기 편하고 테스트하기 쉽다. 예시 Before function getTotalOutstandingAndSend.. 2022. 2. 9.
[리펙터링 2판] 10장 - 조건부 로직 간소화 조건부 로직은 프로그램의 힘을 강화하는 데 크게 기여하지만, 프로그램을 복잡하게 만드는 주요 원인이기도 하다. 복잡한 조건문에는 조건문 분해하기(10.1절) 논리적 조합을 명확하게 다듬는 데는 중복 조건식 통합하기(10.2절) 함수의 핵심 로직에 본격적으로 들어가기 앞서 무언가를 검사할때는 (10.3절) 똑같은 분기 로직 (switch문)이 여러곳에 등장하면 (10.4절) 널과 같은 특이 케이스를 처리하는데도 조건부 로직이 흔히 쓰이고 거의 똑같으면 (10.5절) 프로그램의 상태를 확인하고 그결과에 따라 다르게 동작해야하는 상황이면 (10.6 절) 10.1 조건문 분해하기 내용 다양한 조건, 그에따라 동작도 다양한 코드를 작성하면 순식간에 긴 함수가 된다. 긴 함수는 그자체로 읽기 어렵지만, 조건문은 그.. 2022. 2. 9.
[리펙터링 2판] 9장 - 데이터 조직화 하나의 값이 여러 목적으로 사용된다면 혼란과 버그를 낳는다. 9.1절 변수 쪼개기를 적용해 용도별로 분리하고, 변수 이름 바꾸기(6.7절)을 친해지도록 하며, 파생 변수를 질의 함수로 바꾸기(9.3절)를 활용하여 변수 자체를 완전히 없애는게 해법일 때도 있다. 결국 이 장에서 말하고자 하는 바는 나눠서 잘 담아야 하는 이야기이다. 예를 들어, 요리를 할 때 재료들을 한 바구니에 담지 않고 여러가지 재료들을 여러가지 그릇에 담는게 일반적이다. 요리를 할 줄 아는 사람에게 재료를 주어야 할 경우가 있다고 가정하였다. 그러면 한 바구니 안에 모든걸 담았을 때, 한 바구니 안에있는 재료들로 어떤 요리를 할지 감이 잡히지 않을 것이다. 재료가 많고 복잡한 요리일 수록 더욱 그러할께 뻔하다. 하지만 반대 경우가 되.. 2022. 2. 8.