클린아키텍처 1주차

JunMyung Lee·2021년 11월 13일
0

개발지식

목록 보기
7/14

현재 이직한 회사인 라이픽에서 스터디를 시작했다. 클린아키텍처에 대해 1주씩 스터디한 요약을 해당 블로그에 기록을 하고자 한다.

스터디 범위 3장 ~ 6장

참여자 총 7명

  • @LIAM
  • @BRANDON
  • @CHRIS
  • @LEO
  • @PARKER
  • @ODIN
  • @BUZZ

3장 - 패러다임 개요

  • 구조/객제지향/함수형 프로그래밍은 1958년 부터 10년 동안 만들어졌고 새로운 패러다임은 없음
  • 각 패러다임은 프로그래머에게 권한을 박탈 → 패러다임은 무엇을 해야할지가 아닌, 무엇을 하지 말아야할지에 대한 규칙 (goto문, 함수 포인터, 할당문)

4장 - 구조적 프로그래밍

  • 모든 프로그램은 순차(Sequence), 분기(Selection), 반복(Iteration) 세 가지 구조만으로 표현이 가능
  • 데이크스트라 → 테스트는 버그가 있음을 보여줄 뿐, 버그가 없음을 보여줄 수는 없다
    • 테스트를 해야하는 이유

우리가 개발한 코드가 완벽하다고 단정 지을수 있을까?, 수많은 테스트로 보여지는 버그를 없엘 뿐

5장 - 객체 지향 프로그래밍

  • OO(Object-Oriented)는 다음과 같은 개념을 조합하거나 지원한다라는 개념으로 불리울 수 있음
    • 캡슐화
      • 외부에서 특정 데이터는 은닉되고, 노출 된다. ( Private, Public )
    • 상속
      • 상속이란 단순히 어떤 변수와 함수를 하나의 유효 범위로 묶어서 재정의하는 일
    • 다형성
      • 플러그인 형태로 서로간에 의존하지 않음
      • 의존성 역전으로 단위를 분리하여 독립적으로 배포 가능

예제 코드 설명이 Java언어가 아니라 해석이 안됨

6장 - 함수형 프로그래밍

  • 함수형 프로그래밍에서는 가변 변수가 허용되지 않으며 한 번 초기화되면 절대로 변하지 않음

    • 이런 것이 가변인가?

      private void main(){
      	List<String> list = new ArrayList<>(){{
      		add("test1");
      	}};
      	call1(list);
      
      	System.out.println(list);
      
      	// result
      	// ["test1", "test2"]
      }
      
      private void call1(List<String> list) {
      	list.add("test2");
      }
      
      // 입출력
      private List<String> call12(List<String> list) {
      	list.add("test2");
        return list;
      }
      
  • 불변성과 관련하여 가장 주요한 타협 중 하나는 서비스를 가변 컴포넌트와 불변 컴포넌트로 분리하는 것

  • 이벤트 소싱 → 상태가 아닌 트랜잭션을 저장하는 전략

컴퓨터 프로그래밍은 순차, 분기 , 반복, 참조 끝.

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글