3dbfc868f5dc3f8650bbd58b36897164af

자꾸 우기길래 너가 쓴 글 가져옴.


OOP라는 최초의 개념은 앨런 케이라고 하는데 우리가 쓰는 최초의 핵심개념이랑 다름


OOP의 현재적인 상속-다형성 -캡슐화는 Booch가 쓴


Object-Oriented Analysis and Design with Applications에서 최초로 창안한 개념임


근데 한국 텍스트에서 OOP 쓰면 가독성 향상이다! 라고 주장하는데 이는 엄밀하게 말해서 틀림


OOP의 모듈화-재사용성으로 인해서 가독성이 떨어질 수 있기때문임.


가령 재사용성을 위해서 메서드를 추가 작업한다는 건 반대로 말하자면 그 메서드 로직이 범용적으로 변함으로써 코드 자체가 더 알기 어려워지기 쉽상임


그렇다면 OOP의 가독성향상을 왜 그렇게 번역하고 설명했는가.


기본적으로 OOP를 배우기전 우리는 절차 지향 프로그래밍을 하는데, 이 프로그래밍에서 OOP로 넘어감에따라서 절차라는 개념에서 객체를 묶어서


공통적 재사용성을 묶는다.라는 개념을 이해하기 위해서는 뭉뚱그려 가독성이라고 접근한거


가독성은 기본적으로 함수-클래스네이밍, 문서화, 코드 아키텍쳐에 영향 받기때문에 다양한 요소적 상호작용이 있어서 이거다! 라고 할 정답은 없음


그래서 클린 코드라는 책이 존나게 까이는거고(그와 반대로 난 클린코드 좋아함. 왜냐하면 클린코드는 존재할 수 없지만, 그걸 지향함으로써 코드를 다시 한번 생각하게 해준다는 개념으로 접근해봐야한다고 생각함.)


오히려 모듈화를 통한 재사용성을 높이기 위해서 범용 메서드를 만들면서 추상도를 높일수록 코드의 이해도는 떨어짐


그렇다고 추상도를 무작정 낮추면 그것도 코드의 가독성과 이해도가 떨어짐. 따라서 일반적으로 추상화는 높고 낮음 중간 어떤지점에서 가독성에 도움을 주되, 너무 높아지면 또는 너무 낮아지면 가독성을 떨어뜨린다고 말할 수 있음.


따라서 모듈화라는 무조건적인 코드 가독성 상승이 아니라고 할 수 있음.


그럼 왜 한국 교육에서는 절차에서 객체 지향으로 갈때 '가독성'을 이야기하는가. 이것은 코드를 묶어두고, 틀을 잡아두면 '읽기 좋다' 라는 설명을 하는것뿐.


상속-다형성-은닉화(캡슐화)라는 개념은 어려운 접근이기때문에 말이지.


따라서 OOP의 원칙은 확장-유지보수성이고


오히려 OOP를 지킬수록 추상화 정도가 높아지고 복잡도가 높아지면서 가독성이 떨어지는 경우가 많음. 결국 가독성 상승은 완전한 정답이 아닌것이지.


이런 반례가 있으니까.


그래서 FP가 떠올랐던거기도 하고.


가독성이라고 이야기하는 선배 프로그래머들은 기본적으로 이전 한국에서 한국인이 쓴 책을 읽었기때문에 그런 오류가 되있는거지.


그래서 영어 원본 텍스트를 읽어야함.