목록함수형 코딩 스터디 (6)
고양이와 코딩
중첩된 데이터에 함수형 도구 사용하기 앞부분은 생략하고, 최종적으로 만들어진 `updateX` 가 실행되는 과정을 정리해 보자 function updateX(object, keys, modify) { var key1 = keys[0]; var restOfKeys = drop_first(keys); return update(object, key1, function (value1) { return updateX(value1, restOfKeys, modify); }); } function update0(value, modify) { return modify(value); } //updateX()는 일반적으로 nestedUpdate() 라고 부릅니다! function nestedUpdate(object, ke..
저번 주 파트부터 익명함수를 인자로 받는 코드가 많이 나오는데, 너무너무 헷갈려서 @_@~~ 무작정 실습하기보다는 제대로 이해하고 넘어가고자 합니다! 코드의 냄새: 함수 이름에 있는 암묵적 인자 거의 똑같이 구현된 함수가 있다. 함수 이름이 구현에 있는 다른 부분을 가리킨다. 리팩터링: 암묵적 인자를 드러내기 함수 이름에 있는 암묵적 인자를 확인한다. 명시적인 인자를 추가한다. 함수 본문에 하드 코딩된 값을 새로운 인자로 바꾼다. 함수를 호출하는 곳을 고친다. → 이 부분은 예를들어 장바구니 안의 넥타이를 가리키는 이름을, 좀 더 일반적인 이름(예를들면 item)으로 변경하는 식으로 이해했습니다. 리팩터링: 함수 본문을 콜백으로 바꾸기 함수 본문에서 바꿀 부분의 앞부분과 뒷부분을 확인합니다. 리팩터링 할..

계층형 설계란? - 계층형 설계란, 소프트웨어를 계층으로 구성하는 기술입니다. 각 계층에 있는 함수는 바로 아래 계층에 있는 함수를 이용해 정의합니다. 계층형 설계 감각을 키우기 위한 입력 함수 본문 길이 복잡성 구체화 단계 함수 호출 프로그래밍 언어의 기능 사용 계층 구조 화살표 길이 응집도 구체화 단계 함수 시그니처 함수명 인자 이름 인잣값 리턴값 계층형 설계 감각을 키우기 위한 출력 조직화 새로운 함수를 어디에 놓을지 결정 함수를 다른 곳으로 이동 구현 구현 바꾸기 함수 추출하기 데이터 구조 바꾸기 변경 새 코드를 작성할 곳 선택하기 적절한 수준의 구체화 단계 결정하기 계층형 설계의 4가지 패턴 직접 구현 추상화 벽 작은 인터페이스 편리한 계층 function freeTieClip(cart) { v..

얕은 복사(Shallow Copy) 얕은 복사는 객체나 배열을 복사할 때, 첫 번째 레벨만 복사하는 것을 말합니다. 내부의 객체나 배열은 참조가 공유됩니다. `카피-온-라이트` 형태로 함수를 변경하여 사용됩니다. `카피-온-라이트` 규칙 복사본 만들기 복사본 변경하기 복사본 리턴하기 const alter_hobbies = (originalObject, key, value) => { let copy = Object.assign({}, originalObject); copy[key] = value; return copy; }; let originalObject = { name: "jin", age: 30, hobbies: ["reading", "gaming"], }; console.log(alter_hobb..
암묵적 출력 두 개 없애기 function calc_cart_total() { calc_total(); set_cart_total_dom(); update_shipping_icons(); update_tax_dom(); } function calc_total() { shopping_cart_total = 0; for(var i = 0; i < shopping_cart.length; i++){ var item = shopping_cart[i]; shopping_cart_total += item.price; } } // 수정 후 function calc_cart_total() { shopping_cart_total = calc_total(); set_cart_total_dom(); update_shippin..
chapter1 에서는 코드를 액션, 계산, 데이터로 구분하는 내용이 주로 이루어져 있습니다. 저는 기존에 프로젝트를 할때 제가 코드를 짜고 수정하기 보다는, 남의 코드를 보고 덧붙여 작성하는 일이 많았는데요, 그 때는 이유도 모른채 상대방의 폴더 구조를 보고 눈치껏 데이터와 함수를 분리해서 작성했던 기억이 있습니다. 챕터1을 읽고 왜 그렇게 코드를 작성했는지 명확히 이해할 수 있었습니다. (설명이 쉬운 덕입니다 😺) 액션에서 계산을 빼내기 -> 계산에서 데이터를 분리할 수 있는지 생각 -> 액션이 계산이 될 수 있는지, 반대로 계산은 액션이 될 수 있는지 생각의 확장 챕터2의 p.34를 읽고 강사님이 말씀하신 무작정 코드를 짜지 말고 그 전에 생각을 하라 ! 의 개념도 제대로 그려졌습니다. 평소에도 코..