공부공부

공부공부-230520

nayoon 2023. 5. 20. 14:29

4번째 클코 정리

(이렇게 하지 않으면 죽어도 정리를 안한다.. 지독한 놈..)

 

클코에서 이야기한 좋은 개발자의 개발 방향은

1. 프로그래밍의 기본틀은 OOP 기반(class 기반)

2. 메소드 내부 구현은 FP 지향

3. 객체의 상태관리는 immutable object를 지향

 

 

그런데.. 우리가 한동안 열심히 OOP로만 개발하고 살아왔기 때문에 FP를 연습하는 것은 생각보다 쉽지 않은데..

FP를 제대로 연습하고 싶다면 극단적으로 FP를 지향하는 언어로 연습하는게 좋고.. 이러한 언어에는

리습이나 JVM 언어인 clojure와 같은 언어가 있다.

 

아무튼 직접 공부해보면서 FP를 연습하는게 좋다고 한다..

 

변경 가능성이 있을 것은 인터페이스로 분리한다.

인터페이스로 분리 시 변경에 빠르게 대응할 수 있다.

 

개발 방향

변화 지속 발생 -> 인터페이스 + 구현 클래스

변화 발생 x -> 구현 클래스

 

 

1. 변경 가능성이란..?

의문

그렇다면 변경 가능성을 예측하고 인터페이스로 분리하여 설계해야하는가..

변경 가능성을 어떻게 예측하지..?

 

변경 가능성을 예측한다는 것은 어렵다..

변경 가능성을 예측하고 인터페이스를 이용해서 개발하게 되면 "오버 엔지니어링"이 발생하게 된다.

 

따라서

개발을 하다가 요구사항이 발생했을 "그때" 인터페이스를 추가하자.

도메인에 대한 지식이 빠삭하여 변경 가능성을 예측한 후 개발할 수도 있지만 이는 "오버 엔지니어링"으로 이어질 가능성이 높다.

따라서 현재에 집중하자

 

 

 

2. 인터페이스를 적절하게 잘 도입하려면..?

 

도메인에 대한 높은 이해도 + 운영 경험

 

요구사항의 변화가 자주 발생하는 부분을 찾아 인터페이스로 분리해야한다.

 

 

3. 그럼에도 어디를 인터페이스로 분리해야할지 잘 모르겠다!

요구사항이 추가될 때마다

- 메소드가 길어지는 구간

- else if, switch case가 도배된 메소드

 

 

보통 이런 메소드는 중요한 도메인 로직을 가지고 있을 확률이 높기 때문에

'인터페이스 분리 지점'

인터페이스를 잘 분리하면 if문 없이도 개발 가능하다.

 

 


클로저

clojure에 대해 검색해보다가 이런 글을 발견했다.

최후의 언어라니까..공부해보고 싶긴하다.. 어그로 참 잘끄네..

위의 글에 의하면 그동안 굉장히 많은 프로그래밍 언어가 탄생하였고 새롭게 나오는 언어는 기존 언어를 약간 수정한 수준이라고 한다. 그렇지만 계속 새로운 언어가 쏟아지니까 이러한 언어를 배우기 위해 개발자의 노력이 필요 시 됨으로 생산성 저하가 발생한다.

 

이쯤되면 기존에 나왔던 프로그래밍 패러다임 중 가장 우수한 것으로 판명된 것을 바탕으로 하나의 단일 언어가 나올 때가 되었고

 

그러기 위해서는 현재의 SW 분야가 단일 언어를 사용하는 수학이나 과학과 같이 '과학의 단계'로 들어서야 한다고 한다. 언어 탄생 시 엄청난 생산성 향상으로 이어질 것이라는 것이 글의 주장이다.

 

단일 언어 즉, 최후의 언어가 갖춰야하는 조건은 아래와 같다고 한다..!

 

대략적으로 이렇게만 정리하고 끝내고 싶지만...누군가가 내 블로그만 읽는다면 최후의 언어는 클로저..?! 라고만 생각하고 끝날 거 같아서 좀 더 정리해보자면...

 

 

위의 주장은 엉클밥만 하는 건 아니고..다른 사람도 비슷한 주장을 했다고 한다.

그렇지만 어떤 점에서 과학의 영역에 들어설 수 있다는 것인지.. 하나의 언어만으로 개발이 가능할 것인지.. 언어가 하나만 남는 것이 과연 프로그래밍에 있어서 좋은 것일지..?!에 대해서는 엉클 밥이 대답해주지 않았다고 한다..

 

 

사실 한 사람 말만 믿고 클로저가 최후의 언어~~! 이래버릴 수도 없는 노릇이고.. 물론 한 가지 언어만 있다면 언어 이외의 다른 부분만 신경쓰면 되기 때문에 그런 점에서 생산성이 향상될 수도 있을 것 같다..

 

하지만 각각의 언어가 다 다른 특징을 가지고 있는데 이것을 하나로 통합가능할까 싶기도 하고.. 어떤 회사가 R&D를 통해 최후의 언어보다 좋은 언어를 만들어낼 수도 있다면.. 최후의 언어가 무슨 소용일까 싶기도 하고..

 

아무튼 클로저는 공부해보고 싶은 언어임은 틀림없다..

 

엉클밥 사진 하나 첨부합니당..

클린코드 빨리 다 봐야하는데 너무 힘들어요..

 

 

 

 

DDD 레이어드 아키텍처

https://velog.io/@wodyd202/DDD-레이어드-아키텍처에-대하여

 

'공부공부' 카테고리의 다른 글

공부공부-230528  (0) 2023.05.28
공부공부-230521  (0) 2023.05.21
공부공부-230518  (0) 2023.05.18
공부공부-230516  (0) 2023.05.16
공부공부-230508  (0) 2023.05.08