Books/리팩터링 2판
-
+ 추가 - JavaScript 배열 함수 정리Books/리팩터링 2판 2022. 6. 22. 10:55
1. Array.isArray(object) ㆍobject가 배열인지 확인 Array.isArray({ a: 1, b: 2})//false Array.isArray([1,2,3])// true 비순수 함수 2. fill() ㆍ배열 시작 인덱스부터 끝 인덱스까지 정적 값으로 채우는 메소드 ㆍ인자 - value, start(optional), end(optional) ㆍstart 의 기본값은 0, end의 기본값은 배열의 길이 const arr = Array(3); arr.fill(2);// [2,2,2] arr;// [2,2,2] 원본변경O 3. pop() ㆍ배열의 마지막 요소를 제거한다 cosnt numArr = [1,2,3,4,5]; const popped = numArr.pop(); console.l..
-
리팩터링 2판 - 12. 상속 다루기Books/리팩터링 2판 2022. 6. 20. 16:07
12-1. 챕터 소개 & 포인트 정리 상속다루기 ( Dealing with Inheritance ) - 기능 확장 ( A의 기능을 확장한다! ) - 상속은 왜 하는걸까? → 코드의 재사용을 위해서 - 상속을 올바르게 사용해서 재활용성을 높이자! - 상속의 문제점 ( 단점 ) ㆍ딱 하나만 상속이 가능함 ㆍ불필요한 기능이 상속됨 ㆍ족보가 꼬일 수 있음 ㆍ수정이 어려움 - 상속은 상속의 의미( 확장 )가 적합한 곳에서 사용하는게 좋다. - 상속보다는 컴포지션( 위임/가지다 )을 더 선호하라! 12-2. 메서드 올리기 ( 책12.1 ) 12-3. 필드 올리기 ( 책12.2 ) - 상속을 사용할 때는 어떤 클래스들이 필요로 한지, 공통적인 부모클래스, 규격사항, 속성들이 있을까? - 공통적으로 필요한 필드와 메서..
-
리팩터링 2판 - 10. 조건부 로직 간소화Books/리팩터링 2판 2022. 6. 20. 09:53
10-1. 챕터 소개 & 포인트 정리 조건부 로직 간소화 ( Simplifying Conditional Expressions ) - 코드의 의도(목적)을 나타내도록 하자! 10-2. 조건문 분해하기 ( 책 10.1 ) 10-3. 조건식 통합하기 ( 책 10.2 ) 10-4. 중첩 조건문을 보호 구문으로 바꾸기 ( 책 10.3 ) - 특정한 조건이면 바로 리턴한다 - 보호 구문 - 안좋은 예 if(employee !== null){ // 특정한 로직들을 많이 처리하는 코드 } else { return ; } - 좋은 예 if(employee === null) return; // 특정한 로직들을 많이 처리하는 코드 10-5. 조건부 로직을 다형성으로 바꾸기1 ( 책 10.4 ) - switch~case 를 ..
-
리팩터링 2판 - 9. 데이터 조직화Books/리팩터링 2판 2022. 6. 17. 17:58
9-1. 챕터소개 데이터 조직화 ( Organizing Data ) - 관련 있는 데이터끼리 응집도를 높여서 필요한 곳에 두고 의미있는 이름을 지어주는 것이 중요! - 높은 가독성, 유지보수성 9-2. 변수 쪼개기 ( 책9.1 ) - 임시 변수를 쓰지말고 의미있는 이름을 부여하자! - 업데이트될 정당한 이유가 없다면 왠만하면 const를 사용하는게 좋다 - 반환값처럼 업데이트가 필요한 경우 let 사용 9-3. 필드 이름 바꾸기 ( 책9.2 ) - _ , # : private field - 이름을 의도나 값을 나타낼 수 있는 이름으로 사용하는게 중요하다 - 이름이 모호하거나 담고있는 것을 잘 나타내지 못한다고 생각하면 좀 더 잘나타낼 수 있는 이름으로 변경 9-4. 파생 변수를 질의 함수로 바꾸기 ( 책..
-
리팩터링 2판 - 8. 기능이동Books/리팩터링 2판 2022. 6. 17. 11:25
8-1. 챕터소개 & 포인트 정리 - 응집도 Cohension ㆍ좋은 코드와 좋은 설계의 시작 포인트 ㆍ서로 밀접하게 연관 있는 속성( data )과 행동( method )이 함께 뭉쳐( 모듈, 클래스, 함수 )있는 정도 ㆍBad ( high coupling, low cohesion, spaghetti code ) - 모듈내 응집도는 낮고 외부 모듈간 결합도는 높다 ㆍGood ( loose coupling, high cohesion, spaghetti code ) - 이해하기 쉽고, 재사용도 높고, 유지보수하기 쉽다. - 무엇보다, 다른 클래스/모듈의 변화에 크게 영향을 받지 않는다. - 함수 하나당, 한가지의 일을 수행하도록 만들어 두자 - 모듈 / 클래스 하나당 한가지의 책임을 가지도록 하자 - 모듈..
-
리팩터링 2판 - 7. 캡슐화Books/리팩터링 2판 2022. 6. 16. 13:55
7-1. 챕터 소개 & 포인트 정리 - 모듈 : 좋은 아키텍처 설계의 시작 - 캡슐화 : 내부 구현 사항을 숨기고, 외부에서 필요한 사항들만 공개 - 모듈, 클래스와 같은 형태로 캡슐화 해두자! ㆍ데이터를 변경하고, 사용하는 코드를 감시할 수 있는 유일한 통로 - 함수 하나당, 한가지의 일을 수행하도록 만들어 두자 - 모듈 / 클래스 하나당, 한가지의 책임( 하나의 도메인 ) 을 가지도록 하자 ㆍ밀접하게 연관된 데이터와 함수들 7-2. 불변성 포인트 정리 - 불변성( Immutability ) ㆍ변할 수 없는 전역변수, 레코드, 컬렉션 만들기 - Mutable ( 변할 수 있는 ) : 오류의 상징!? 7-3. 레코드 캡슐화하기 ( 책7.1 ) - 컬렉션 : 복합적인 데이터를 가지고 있는 것 ㆍ배열, 리스..
-
리팩터링 2판 - 6. 기본적인 리팩터링Books/리팩터링 2판 2022. 6. 15. 15:23
6-1. 챕터 소개 Low-level - 변수 : 어떤 데이터가 ? - 함수 : 어떤 일을? High-level - 모듈 : 어떤 책임을? 6-2. 함수 포인트 정리 - 코드를 작성하는 건, 사람, 개발자 - 사람이 이해하기 쉽도록 작성! - 함수 ㆍ특정한 일을 수행하는 코드의 집합 ㆍ프로그램을 이루는 가장 기본적인 단위 ㆍ프로그램을 작은 단위로 나누는 주된 수단 ㆍ재사용 가능 / 유지보수성 / 의미있는이름을 부여함으로써 높은 가독성 ㆍ주석을 달지 않아도, 함수 이름만으로 코드의 목적이 파악 가능 6-3. 함수 추출하기 ( 책 6.1 ) - 지역변수는 사용한 곳과 최대한 가까이 정의하는 것이 좋다. - 함수에서 리턴값의 변수는 result 라는 이름을 쓸 것 - 긴 코드가 있다면 의미있는 단위로 나누어서..
-
리팩터링 2판 - 3. 코드에서 나는 악취Books/리팩터링 2판 2022. 6. 15. 13:55
3-1. 코드의 나쁜 냄새란? 3-2. 나쁜 냄새 ( 기본적인 악취 ) 코드에서 나는 악취들 종류 - 기이한 이름 ( Mysterious Name ) ㆍ코드 이해력, 가독성 X - 중복 코드 ( Duplicated Code ) ㆍ실수와 에러 발생할 확률 ↑ - 긴 함수 ( Long Function ) ㆍ이해하기 어려움, 재사용성 ↓ - 긴 매개변수 목록 ( Long Parameter List ) ㆍ사용하기 어려움, 잦은 실수 - 전역 데이터 ( Global Data ) ㆍ최악, 유령같은 버그 출몰 - 가변 데이터 ( Mutable Data ) ㆍ예상하지 못한 곳에서 데이터를 변경 3-3. 나쁜 냄새2 ( 고급레벨 ) - 뒤엉킨 변경 ( Divergent Change ) ㆍ다양한 이유로 수정을 해야함 ㆍS..