자꾸 우기길래 너가 쓴 글 가져옴.
OOP라는 최초의 개념은 앨런 케이라고 하는데 우리가 쓰는 최초의 핵심개념이랑 다름
OOP의 현재적인 상속-다형성 -캡슐화는 Booch가 쓴
Object-Oriented Analysis and Design with Applications에서 최초로 창안한 개념임
근데 한국 텍스트에서 OOP 쓰면 가독성 향상이다! 라고 주장하는데 이는 엄밀하게 말해서 틀림
OOP의 모듈화-재사용성으로 인해서 가독성이 떨어질 수 있기때문임.
가령 재사용성을 위해서 메서드를 추가 작업한다는 건 반대로 말하자면 그 메서드 로직이 범용적으로 변함으로써 코드 자체가 더 알기 어려워지기 쉽상임
그렇다면 OOP의 가독성향상을 왜 그렇게 번역하고 설명했는가.
기본적으로 OOP를 배우기전 우리는 절차 지향 프로그래밍을 하는데, 이 프로그래밍에서 OOP로 넘어감에따라서 절차라는 개념에서 객체를 묶어서
공통적 재사용성을 묶는다.라는 개념을 이해하기 위해서는 뭉뚱그려 가독성이라고 접근한거
가독성은 기본적으로 함수-클래스네이밍, 문서화, 코드 아키텍쳐에 영향 받기때문에 다양한 요소적 상호작용이 있어서 이거다! 라고 할 정답은 없음
그래서 클린 코드라는 책이 존나게 까이는거고(그와 반대로 난 클린코드 좋아함. 왜냐하면 클린코드는 존재할 수 없지만, 그걸 지향함으로써 코드를 다시 한번 생각하게 해준다는 개념으로 접근해봐야한다고 생각함.)
오히려 모듈화를 통한 재사용성을 높이기 위해서 범용 메서드를 만들면서 추상도를 높일수록 코드의 이해도는 떨어짐
그렇다고 추상도를 무작정 낮추면 그것도 코드의 가독성과 이해도가 떨어짐. 따라서 일반적으로 추상화는 높고 낮음 중간 어떤지점에서 가독성에 도움을 주되, 너무 높아지면 또는 너무 낮아지면 가독성을 떨어뜨린다고 말할 수 있음.
따라서 모듈화라는 무조건적인 코드 가독성 상승이 아니라고 할 수 있음.
그럼 왜 한국 교육에서는 절차에서 객체 지향으로 갈때 '가독성'을 이야기하는가. 이것은 코드를 묶어두고, 틀을 잡아두면 '읽기 좋다' 라는 설명을 하는것뿐.
상속-다형성-은닉화(캡슐화)라는 개념은 어려운 접근이기때문에 말이지.
따라서 OOP의 원칙은 확장-유지보수성이고
오히려 OOP를 지킬수록 추상화 정도가 높아지고 복잡도가 높아지면서 가독성이 떨어지는 경우가 많음. 결국 가독성 상승은 완전한 정답이 아닌것이지.
이런 반례가 있으니까.
그래서 FP가 떠올랐던거기도 하고.
가독성이라고 이야기하는 선배 프로그래머들은 기본적으로 이전 한국에서 한국인이 쓴 책을 읽었기때문에 그런 오류가 되있는거지.
그래서 영어 원본 텍스트를 읽어야함.
이해가 안되는게 모듈화-재사용성이 향상되는데 어떻게 가독성이 떨어질 수가 있냐 가독성이 떨어졌으면 진작 좆병신이라니까 oop고 뭐고 다 가독성 땜에 있는건데 인간이 이해하기 쉽도록 하는게 목적인데 더 읽기 어려워지는데 모듈화가 된다? 이건 뭔 개소리야
재사용성이 높아진다는 것은 범용적이게 된다는 거고 일반적으로 범용적일수록 추상도가 높아지고, 추상도가 높아질수록 코드가 어려워지고 가독성이 떨어진다.
추상도가 진짜 낮은 코드는 0과 1이다 ㅇㅇ 이게 니가 이해한 가독성이냐? ㅋㅋ
추상도가 낮아질수록 코드가 읽기 쉬워진다? 완전히 잘못배움
에휴, 됐다 쉽게 설명을 해줘도 이해를 못하네
조금 더 쉽게 설명하자면 너는 지금 추상화와 가독성의 관계를 혼동하고 있음. 추상화는 복잡한 시스템에서 개념을 추출하는 일련의 과정임. 추상도가 높아질수록 이러한 이해가 어려워지고, 구현 세부사항이 아닌 범용 수준의 더 높은 개념으로 접근하기때문임. 가령 0,1은 너 말대로 추상도가 낮지만 이해하기 어려움. 반명 고수준 언어의 경우에 추상도가 높아서 이해하기 쉽지만 내부 동작을 파악할 수 없음. ㅇㅋ?
아니 추상화랑 가독성을 먼저 연관지은건 너임 난 아까 글도 여기서도 니 글에서 먼저 보인걸 보고 반례를 든거 그냥 저수준 부터 공부하셈
모듈화 재사용성으로 가독성 떨어졌으면 그리고 자바 존재할 수도 없었음 가독성이 있으니까 모듈화 재사용성이 있는거란다
너의 원 글을 보면 OOP를 가독성을 이야기했잖아.
가독성은 부수적 효과고 나는 OOP책 원전인 booch 책에 대한 내용 그대로 너한테 읊어준거임
그니까 너는 OOP를 가독성과 연관지었고, 그게 네 글이었음. 근데 그거는 어디까지나 부수적 효과라는것뿐임. 그리고 OOP도 엄연히 말해서 복잡도가 올라가는 경향이 있어서 가독성이 떨어지는 경향성이 있음
가독성이 어떻게 부수적 효과냐 oop 적인데 가독성이 떨어졌으면 아무도 oop 안썼고 갖다버렸다니까 그 클린코드인가 뭔가에서 나오는 네이밍 짓는거 설마 그게 가독성이라고 말하는거임? 말그대로 가독성은 진짜 읽기 용이한 정도임 컴퓨터 있기 전부터 있는 개념인데 어떻게 그 사람들이 말한 정의가 가독성일 수가 있겠냐 이사람아
오히려 가독성이라는 걸 니 멋대로 정의한거임
그런 의미에서 OOP를 도입했는데 가독성이 처참하게 떨어진다면, 사람들이 굳이 그 방법론을 쓰지 않았을 것이라는 말은 어느 정도 일리가 있다고 할 수 있지만, 기본적으로 OOP의 핵심목표는 그게 아님. 기본적으로 책에서 주장하듯 모듈화,재사용성,유지보수성임. 가독성이 조금 떨어져도 코드를 재 사용해서 일좀 덜하겠다 이거임. 그래서 일 덜하고 싶어서 유행한거고..
자꾸 가독성은 배꼽인데, 그걸 메인으로 보니까 말이 엇나가는거임 OOP의 핵심은 '이번만 일하고, 다음에는 이번에 일한거 다시 써서 편하게 해야지' 이게 한줄 요약임. 그걸 감안해서 가독성이 좀 떨어져도 감안하는거고. 기본적으로 가독성으로만 접근하니까 자꾸 이상해지는거임
oop 에선 가독성이 배꼽이라고 하든 말든 사실 그런거 같지도 않은데 현실은 가독성임 아무튼 oop 고 나발이고 사람이 쓰기 용이한게 최고임 oop에서 나온거 갖다대면서 논지 흐리지 마삼
아무튼 oop 보다 가독성이 중요함 난 간다
니가 잘못이해하고 있는거임. 왜 씨발 원전 책 내용까지 갖다대줘도 이상한걸로 지랄하냐. 니가 한국 책으로 그렇게 배웠다해서 그게 정답이 아님
ㅆㅇㅆ가 키배하는 법을 모르네 백날 가독성 얘기해봐야 다른 사람 글 인용하는 게 더 효과적임
OOP는 코드의 가독성을 높여주지 않습니다. OOP라는 이름으로 읽기 어렵고 유지 관리 및 확장이 어려운 끔찍한 코드를 작성할 수도 있습니다.
https://www.quora.com/Why-does-Object-Oriented-make-code-more-readable
Oop.자체가 가독성과 관련이 없는 개념이라고 하도 oop가 가독성을 향상하는데 효과적임. 코스를 보다 입체적으로 구성할수 았게 되었기 때문이고 코드를 입체화 하는 기술은 개발자 역량에 따라 다름. 난 14년차 si에서.일히거 있는데 내 선배나 후배 모두 '제작'이라는게 뭔지를 모르는 사람들이 대부분임. '시스템' 구축에 대한 이해가 없는 사람도 많고
함수며 클래스며 왜 만드는데 인간이 이해하기 쉬운 개념이니까 있는거고 그렇게 나누는 거라고 인간이라는 개념이 필요없으면 그냥 0,1로 하면 된다니까? 저수준 안배우고 oop만 찾아보니까 이상해지지
아니라니까, 친구야. 함수며 클래스며 만들어도 그 클래스와 함수 구조를 분할하고 클래스의 책임을 만드는건 인간이고, 그 책임을 어떻게 지우고 한정짓게하느냐가 OOP의 이야기임. 따라서 함수,클래스등의 작성 기법중 하나라고 봐야함
그니까 그걸 누가하는데 쓰고 있는 인간이 하겠지 에휴
쓸모없는 논쟁 별로하고싶지 않은데, 그래서 OOP는 부수적 효과로 일부 가독성 향상이 있지만 니가 주장하듯 메인이 가독성 향상이 아님. 오히려 추상도가 높아질수록 가독성이 떨어지는 경우도 존재하기때문에 추상도가 무조건 낮을수록 가독성이 높은게 아니고, 추상도가 무조건 높을수록 가독성이 높은게 아님. 그 중간 지점이 일반적으로 가독성을 높다고 판단하는거
객체지향 = 걍 최선을 다해 코드쪼개기같음 ㅇㅇ
나도 잘 모르겠음 코딩
기생충특 _ 존나 투표함
맞음 뎁스가 깊어지고 괜히 바이패스수준까지 쪼개버리고 그러는거 많음
OOP는 가독성을 높여주지 않는다. OOP는 응집력을 높이고, 결합도를 낮추기 위함이지 가독성을 위한게 아니야. 가독성은 철저하게 코드 짜는 사람의 개인 역량이다. 코드 쪼게기의 이야기가 나와있는데, 코드를 쪼게서 하나하나 메서드로 만들면 그 동작을 설명하는 적절한 메서드명을 붙이겠지? 근데 이게 OOP에서만 해당하냐? C언어로 프로그래밍을 해도 똑같이 적용되는 이야기임.
맞는말임 oop는 가독성의 개념이 아니라는게 본문글