전체 글 18

[책] 데이터 지향 프로그래밍 - 13장 다형성

OOP에서는 다형성을 활용해 여러 구현 클래스를 동일한 형태의 인터페이스로 다룰 수 있다. 반면 DOP에서는 OOP의 객체(클래스)를 데이터와 코드로 분리하고 데이터를 범용 자료 구조로만 다룬다. 때문에 데이터 유형에 따라 다른 클래스를 가지기보다는 필드 값 기반으로 구분하는 방향을 지향한다.   그렇다면 DOP에서는 어떻게 OOP의 다형성이 주는 이점을 누릴 수 있을까?   다형성의 핵심interface IAnimal { public void greet();}class Dog implements IAnimal { private String name; // 생성자 추가 public Dog(String name) { this.name = name; } publi..

도서/기술 2025.02.09

[책] 데이터 지향 프로그래밍 - 12장 고급 데이터 유효성 확인

최근 Ruby, Python으로 개발을 하며 어려웠던 점 중 하나는 메서드로 들어오고 나가는 데이터의 양식을 명확하게 파악하기 어렵다는 점이다. 물론 두 값에 대한 타입을 따로 정의하지 않아도 되기 때문에 편리한 점은 있지만 규모가 커지고 내가 개발하지 않은 메서드를 손봐야 할 때면 조금 어려워진다.  때마침 12장에서는 메서드 인자와 반환값에 대한 유효성 확인. 그리고 이를 바탕으로 데이터 모델 도식과 테스트 자동 생성에 대해 다룬다. 함수 인자 유효성 확인  7장 데이터 유효성 확인에서 JSON 스키마를 활용해 외부와의 경계에서 데이터를 검증하는 방법에 대해 이야기 했다. 이번 장에서 조금 다른 점은 데이터를 확인하는 시점이 시스템의 내부이자 메서드의 시작과 끝이라는 점이다.  이전보다 조금 더 나아..

도서/기술 2025.02.01

[책] 데이터 지향 프로그래밍 - 10, 11장 데이터 베이스 작업과 웹 서비스

DOP에서 DB 데이터를 다루는 방식[ { "title": "7 Habits of Highly Effective People", "isbn": "978-1982137274", "publication _year": 1989 }, { "title": "The Power of Habit", "isbn": "978-0812981605", "publication_year": 2012 }]  DOP에서 DB 데이터는 이전까지 다뤄온 메모리 데이터와 차이가 없다. 기본적으로 데이터는 맵으로 관리되고 배열로 각 데이터를 담아둔다. 이처럼 기존과 동일한 방식으로 DB 데이터를 다루기 때문에 JSON 스키마와 같이 기존에 데이터 관리를 위해 적용하던 모든 것들..

도서/기술 2025.01.25

[책] 데이터 지향 프로그래밍 - 9장 영속 자료구조

DOP에서 데이터는 불변이다. 데이터를 직접 변경할 수 없고 필요하다면 새로운 버전의 데이터를 만들어야 한다. 이런 방식에서 우려되는 점은 크게 2가지, 안정성과 효율성이다. 어디서도 데이터를 변경할 수 없음을 보장할 수 있을까? 매번 새로운 버전의 데이터를 만들어야 한다면 성능적인 문제는 없는 걸까? 이번 장에서는 이 2가지에 대한 해답을 제시한다.   영속 자료구조로 안정성을 보장하는 방식 안정성을 보장하는 방식은 사실 간단하다. 수정 메서드를 사용할 경우 예외를 발생시키면 된다. 예를 들어 Java에서 불변 Collection에 데이터를 수정하려 하면 UnsupportedOperationException을 발생시킨다. Javascript의 경우 Object.freeze를 사용하면 동일한 효과를 얻을..

도서/기술 2024.12.22

[책] 데이터 지향 프로그래밍 - 8장 고급 동시성 제어

DOP의 동시성 관리 일반적으로 다중 스레드 환경에서 동시성을 관리하기 위해 임계 영역(Critical Section) 접근 작업을 뮤텍스와 같은 잠금 장치로 보호한다. 보호 대상에는 읽기 영역도 포함되는데 그 이유는 읽기 도중에 다른 스레드에 의해 값이 변경되어 일관성을 잃을 수 있기 때문이다.  하지만 DOP에서 읽기 작업은 다중 스레드를 고려하지 않아도 된다. 그 이유는 DOP에서 데이터는 불변이기 때문이다. 즉, 다른 작업에 의해 값이 변해도 문제가 없다. 그렇다면 쓰기 작업의 경우 어떨까?    DOP에서는 쓰기 작업에서도 잠금을 사용하는 대신 더 원자라는 단순한 구조를 사용한다. DOP의 쓰기는 사진과 같은 단계를 거치는데 상태가 변경됐는가? 부분에서 원자적으로 비교 후 상태를 반영한다. 이..

도서/기술 2024.12.21