티스토리

things
검색하기

블로그 홈

things

baeritas.tistory.com/m

ㅋ. ㅋ 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • [리팩토링 2판] 11장 11.API 리팩터링 11.1 질의 함수와 변경 함수 분리하기 겉보기에 부수효과 없이 값을 반환해주는 함수를 추구해야함 -> 질의함수 (읽기함수, 연산을 통해 값을 계산하여 반환하는 함수)는 모두 부수효과가 없어야함 값을 반환하면서 부수 효과도 있다면 분리 하는게 좋음 절차 대상 함수를 복제하고 질의 목적에 충실한 이름을 짓기 새 질의 함수에서 부수효과를 모두 제거하기 정적 검사 원래 함수를 호출하는 곳을 모두 찾기. 호출하는 곳에서 질의 함수를 호출하도록 변경하고, 원래 함수 호출을 아래 줄에 추가하기. 하나 바꾸고 테스트 원래 함수에서 질의 관련 코드 제거 테스트 11.2 함수 매개변수화 하기 두 함수 로직이 비슷하고 리터럴 값만 다르다면, 그 값만 매개변수로 받고 함수 합치기 절차 비슷한 함수 중 .. 공감수 0 댓글수 0 2024. 3. 1.
  • [리팩터링 2판] 10장 10. 조건부 로직 간소화 10.1 조건문 분해하기 복잡한 조건부 로직 - 읽기 어려움 코드 분해 후 함수 호출로 변경하여 의도 드러내기 절차 조건식과 그 조건식에 딸린 조건절 각각을 함수로 추출하기 if (!여름전 && !여름후) { // => 해당 조건을 isSummer()와 같이 변경 // 이 안에 있는 로직도 함수로 추출 charge = summerCharge(); } else { // 이 안에 로직도 함수로 추출 charge = regularCharge(); } // 혹은 3항연산자 charge = isSummer() ? summerCharge() : regularCharge(); 10.2 조건식 통합하기 비교 조건은 상이하나 수행 동작은 같을 때 통합하기 조건부 코드 통합 이유 나뉜 조건들을 .. 공감수 0 댓글수 1 2024. 2. 29.
  • [리팩터링 2판] 8장 8장 8.1 함수 옮기기 메서드 이동 좋은 소프트웨어 설계 핵심 : 모듈성 절차 선택한 함수가 현재 컨텍스트 내에서 사용중인 모든 프로그램 요소 살펴보기. 함께 옮길 것들이 있는지 보기 함께 옮겨야할 함수가 있다면 그 함수부터 옮기는게 나음. 여러게 옮겨야하면 영향이 적은 함수부터 옮기기 하위 함수들의 호출자가 고수준 함수 하나면 하위 함수를 고수준함수에 인라인 하고, 고수준함수 옮기고 다시 개별함수로 추출 선택한 함수가 다형 메서드인지 확인 (js에서는 쓸 일 없을 것 같은?) 선택한 함수(소스 함수)를 타깃 컨텍스트로 복사한 후 다듬기 함수 본문에서 소스 컨텍스트의 요소 사용 시, 파라미터로 옮기거나 소스컨텍스트 자체를 참조로 넘기기 정적 분석 소스 컨텍스트에서 타깃 함수를 참조할 방법을 찾아 반영 .. 공감수 0 댓글수 4 2024. 2. 28.
  • [리팩터링 2판] 7장 07 캡슐화 7.1 레코드 캡슐화하기 절차 레코드를 담은 변수를 캡슐화 하기 const fruit = {name:’apple’, amount : 2}; const getTmpFruit = () => { return fruit }; 레코드를 감싼 단순한 클래스로 해당 변수의 내용을 교체하기. 이 클래스에 원본 레코드를 반환하는 접근자도 정의하고 변수를 캡슐화하는 함수들이 이 접근자를 사용하도록 수정 class Fruit { constructor(data) { this.data = data; } } 테스트 원본 레코드 대신 새로 정의한 클래스 타입의 객체를 반환하는 함수 만들기 const fruit = new Fruit({ name: "apple", amount: 2 }); const getFruit = (.. 공감수 0 댓글수 0 2024. 1. 17.
  • [리팩터링 2판] 6장 6 기본적인 리팩터링 함수 추출하기 함수 인라인하기 변수 추출하기 변수 인라인하기 함수 선언 바꾸기 : 함수 이름 바꾸기 변수 이름 바꾸기 --> 변수 캡슐화하기와 관련이 깊음 매개변수 객체 만들기 : 같이 다니는 인수들 묶기 여러 함수를 클래스로 묶기 : 함수를 만들고 고수준 모듈로 묶기 여러 함수를 변환 함수로 묶기 : 읽기전용 데이터 다루기 좋음 단계 쪼개기 : 묶인 모듈들의 작업 처리 과정을 명확한 단계로 구분짓기 6.1 함수 추출하기 코드를 언제 함수로 묶어야하는가 길이 , 재사용성 : 두번 이상 사용 되는 코드 목적과 구현을 분리 : 기능 파악이 어렵다면 함수로 추출하기 함수 내 코드 대여섯줄 정도 짧은 함수 작성 --> 이름 잘 짓기 !!! 절차 함수를 새로 만들고 목적을 잘 드러내는 이름 .. 공감수 0 댓글수 0 2024. 1. 17.
  • [리팩터링 2판] 3, 4장 3.1 기이한 이름 코드는 단순 명료 --> 이름을 통해 무슨 일을 하는지, 사용 방법을 알 수 있어야한다 함수 선언 바꾸기 변수 이름 바꾸기 필드 이름 바꾸기 이후 문맥 파악 시간 절약 가능 3.2 중복 코드 코드 중복 시 서로 차이점은 없는지 살펴봐야하는 부담 하나 변경 시 비슷한 코드들 모두 수정해야함 함수 추출하기 문장 슬라이드 하기 : 코드가 비슷하지만 완전 똑같지 않을 시 비슷한 부분 모으기 메서드 올리기 : 파생 서브 클래스 내 코드 중복시 부모로 이동 3.3 긴 함수 짧은 함수 구성 시 이해, 공유, 선택이 쉬워짐 함수명을 의도가 드러나게, 잘 지으면 본문 코드를 보러 갈 필요가 없어짐 주석을 달아야할 부분은 무조건 함수로 만들기 함수를 짧게 만드는 작업의 99%는 함수 추출하기가 차지 :.. 공감수 0 댓글수 0 2023. 10. 4.
  • [리팩터링 2판] 2장 2장 리팩터링 원칙 리팩터링 적용 원칙에 대하여 2.1 리팩터링 정의 명사 : sw 와 같은 겉보기 동작은 유지한 채, 코드를 이해하고 수정하기 쉽오록 내부 구조를 변경하는 기법 동사 : sw 와 같은 겉보기 동작은 유지한 채, 여러가지 리팩터링 기법을 적용해서 sw를 재구성하다 그냥 코드 정리하는게 아닌 특정 방식을 따른 정리만이 리팩터링 리팩터링 동안에는 항상 코드가 정상 작동해야함. 따라서 '리팩터링 하다 코드가 깨졌다'라는 말은 없음. 재구성이라 봐야함 2.2 두개의 모자 개발 시 목적을 정확히 ! 기능추가냐 ? 리팩토링이냐 ? 테스트 코드 !!!!! 2.3 리팩터링 하는 이유 소프트웨어 설계가 좋아짐 : 코드 설계 파악 및 설계 용이, 중복 코드 제거함으로써 실수 감소 소프트웨어를.. 공감수 0 댓글수 0 2023. 2. 21.
  • [리팩터링 2판] 1장 리팩터링 2판 1장 정리 간단한 예시를 통한 리팩토링 인트로 느낌 이 책을 다 읽고 나면 js 테스트 코드 작성 관련 스터디를 해야할 것 같다 그것도 다 끝내면 꼭 그.. 프로젝트 리팩토링 해야지 1.3 리팩터링의 첫 단계 테스트 코드 작성의 필요성 리팩터링 후 항상 테스트 수행 조금 씩 변경 후 test, 피드백 주기 짧게, 하나의 리팩터링 끝나면 커밋 변수명을 명확히 ex. 함수 반환값 result 1.4 함수 쪼개기 함수로 추출 임시 변수는 최대한 제거 임시 변수 -> 질의 함수로 변경 (중첩함수) 이게 더 좋은 거였나? -> ㄴㄴ 나중에 중간 데이터 구조로 변경 하기 위함 최대한 기능을 쪼개야함 1.6 단계 쪼개기 1. 데이터 처리 (중간 데이터 구조 생성) 2. 데이터 출력 반복문을 파이프라인 .. 공감수 0 댓글수 0 2023. 2. 9.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.