함수형코딩 151-171

빵동·2023년 4월 12일

함수형코딩 (완독)

목록 보기
10/29

함수형코딩
151-161

방어적 복사 규칙
들어오고 나갈때 딥카피

api는 json으로 통신하는데 json은 딥카피다. (방어적복사=비공유아키텍처)

통제할 수 있는 데이터를 바꿀 때 카피온 라이트 (얕은 복사)
신뢰 할 수 없는 코드와 데이터를 주고 받아야 할 때 (깊은 복사)

js에서 로데쉬 라이브러리를 써서 딥카피를 적용하자


함수형 코딩 161-171

세상에 많은 코드가 불변성을 지키지 않은 상태로 사용되고 있고, 그걸 다 바꿀 수 없기 때문에 방어적 복사를 사용하는 것이다.

레거시 코드를 확신 할 수 없다면 카피-온-라이트 함수가 아니라고 생각하고 방어적 복사를 해야한다.

레거시 코드를 할 수 있다면 카피-온-라이트로 바꾸면 된다.

방어적 복사가 힘이 있는 이유는 불변성을 스스로 구현할 수 있기 때문이다.

방어적 복사는 불변성을 구현하는 원칙이다. 데이터가 들어오고 나갈때 복사본을 만든다.

방어적 복사는 신뢰할 수 없는 코드와 함께 사용할 때만 사용한다.

계층형 설계

계층형설계는 아래 계층의 함수로 지금 계층의 함수를 만드는 일이다.
설계를 잘하면 소프트웨어 개발 과정 전체에 도움이 된다.

비즈니스 규칙 - 비즈니스 규칙을 구현하기 위한 동작 - 카피온라이트 - 언어에서 지원하는 자료구조 기능

잘하는 것을 설명하고 싶지만 복잡하기 때문에 설명 하기 어렵다.

계층형 설계를 위해 고려해야 할 사항들.
[입력]
함수 본문 : 길이, 복잡성, 구체화 단계, 함수 호출, 프로그래밍 언어의 기능 사용
계층 구조 : 화살표 길이, 응집도, 구체화 단계
함수 시그니처 : 함수명, 인자 이름, 인잣값, 리턴값

[출력]
조직화 : 새로운 함수를 어디에 놓을 지 결정, 함수를 다른 곳으로 이동
구현 : 구현 바꾸기, 함수 추출하기, 데이터 구조 바꾸기
변경 : 새 코드를 작성할 곳 선택하기, 적절한 수준의 구체화 단계 결정하기

계층형 설계의 가장 중요한 4가지 패턴
1. 직접 구현 : 함수 시그니처가 나타내고 있는 문제를 함수 본문에서 적절한 구체화 수준에서 해결해야 한다.
2. 추상화 벽 : 고수준의 추상화 단계만 생각하고 해당 계층 수준에 맞는 코드를 작성한다.
3. 작은 인터페이스 : 비즈니스 개념을 나타내는 중요한 인터페이스는 작고 강력한 동작으로 구성해야 한다.
4. 편리한 계층 : 개발자의 요구를 만족시키면서 비즈니스 문제를 잘 풀수 있어야 한다. 계층에 투자 해야 한다.

0개의 댓글