2.5 리팩터링 시 고려할 문제 ⊙ 새 기능 개발 속도 저하 리팩토링의 결과로 개발 속도가 느려진다고 여겨지지만 리팩터링의 궁극적인 목적은 개발 속도를 높이는 것 코드베이스가 건강하면 기존 코드에 복잡한 새 기능을 더 빨리 추가할 수 있기 때문(+ 버그 수정 시간을 줄여줌) ⊙ 코드 소유권 저자는 코드 소유권을 작은 단위로 나눠 엄격히 관리하는 것(, 코드 작성자만 수정하는 것)보다 팀에게 두어 팀원이라면 누구나 수정할 수 있게 함을 선호 코드 수정 권한이 없는 경우 기존 함수를 유지하고 새 함수를 호출하는 방식으로 수정하여 인터페이스가 복잡해진다 ⊙ 브랜치 팀원마다 코드베이스의 브랜치를 하나씩 맡아서 작업하다가, 결과물이 어느 정도 쌓이면(기능 완성) 메인 브랜치로 통합하는 작업 방식 독립 브랜치로 작..
매개변수에 타입 지정하기 let person = { name: 'Capt', age: 28 }; function logAge(obj: { age: number }) { console.log(obj.age); // 28 } logAge(person); 인터페이스에 타입 지정하기 interface personAge { age: number; } function logAge(obj: personAge) { console.log(obj.age); } let person = { name: 'Capt', age: 28 }; logAge(person); 인터페이스 interface 옵션 속성 ? 필수로 사용하지 않아도 되는 값을 표시 속성을 선택적으로 적용할 수 있음 interface 인터페이스_이름 { 속성?: 타..
2.1 리팩터링 정의 소프트웨어의 겉으로 보여지는 동작은 유지한 채 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 성능 최적화와 비슷한데 목적이 다름 리팩터링은 코드를 이해하고 수정하기 쉽게 만드는 것이 목적이라 프로그램 성능이 나빠질 수도 있음 성능 최적화는 속도 개선만이 목적이기 때문에 코드가 다루기 어렵게 바뀔 수도 있음 한 번에 할 수 있는 작업을 수많은 단계로 나눠서 작업하는 것이 비효율적으로 보일 수 있지만 단계들이 체계적으로 구성되어 있고 디버깅에 시간을 뺏기지 않아 더 빠르게 진행할 수 있다. 리팩터링하는 동안 코드가 항상 정상 작동해야 함 리팩터링 과정에서 발견된 버그도 리팩터링 후에 남아있어야 함 2.2 두 개의 모자 소프트웨어 개발의 목적이 '기능 추가'인지 '리팩터링'인..
함수 타입 기본적인 함수 타입 선언 매개변수와 반환 값에 타입 설정 // 숫자 a, b를 받아 숫자를 리턴하는 함수 function sum(a: number, b: number): number { return a + b } 반환 값이 없는 경우 void function sum(a: number, b: number): void { console.log(a + b) } 타입이 정의된 인자만큼 전달해야 함 - 더 많이 전달해도, 더 적게 전달해도 타입 에러 발생 정의된 매개변수보다 적게 전달하고 싶은 경우 '?'를 이용 function sum(a: number, b?: number): number { return a } REST 문법 function sum(a: number, ...nums: number[])..

