https://gall.dcinside.com/board/view/?id=programming&no=2829956&fcno=9038098
적당한 프로그래밍.레거시 리팩토링을 나는 종종 하는 편임.왜냐면 이전 개발자가 좆같이 짠걸 수정하거나, 일정이 급해서 내 코딩중 해당 규모의 구조로 정리한걸나중에 내가 다시 기능 추가 보완을 하는 경우가 많음.내가 한건 아무런 문제가gall.dcinside.comhttps://gall.dcinside.com/board/view/?id=programming&no=2829972&fcno=9038131
프로그래밍 언어는 왜 언어인가?프로그래밍 언어가 왜? 언어인지 모르는 애들이 많다.언어란 무엇인가?언어는 명사, 형용사, 동사 등으로 이루어져있다.촘스키 형님이 형식언어 문법 이론으로 잘 설명해주셨는데 형식언어를 매우 단순하게 설명하면S-&gall.dcinside.comhttps://gall.dcinside.com/board/view/?id=programming&no=2837580&page=1
코딩의 기초https://gall.dcinside.com/board/view/?id=programming&no=2829956&fcno=9038098 적당한 프로그래밍. - 프로그래밍 갤러리레거시 리팩토링을 나는gall.dcinside.com응집도의 한계
프로그램에서 기초적인 기능은 어떤 식으로 응집할지에 대한 고민은 언제나 업계의 고민이었음.
하지만 어떻게든간에 기초적인 기능은 응집하여 구조화 할수 있기는 함.
그러면 확장된 응집은 어디까지가 가능할까?
이것이 응집도의 한계임.
단순한 기능은 응집되기가 아주 쉬움.
그러나 도메인에서 io클래스 라도 원 클래스 그대로 사용하는 법이 없음.
자주 사용하는 자료구조 형태와 기능들이 해당 도메인에서 io클레스에 덧붙어 같은 덩어리로 응집되기 마련임.
자료구조 형태는 도메인의 프로젝트들에서는 어느정도 일반화 하여 사용할수 있음.
그러나 어느정도의 기능 확장의 경계를 넘어서게 되면, 도리어 복잡도가 올라가게되어
기능의 분화, 즉 응집도의 한계점이 발생하는 순간을 보게됨. (단순한 예시로는 싱글턴 클래스가 멀티쓰레드 환경에서 다중 인스턴스가 필요하게 된다던가 하는 식임)
이러한 것들이 발생하게 되면 항상 어렵게 느껴지게됨.
비즈니스적인 분화가 필요하게 되는 확장의 한계점은 처리가 쉬운편인데
기초적인 기능들이 필요해서 쌓아올린 코드들이 자잘한 기능들이
너무나 많아지고 복잡해져서 기능 분화에 대한 필요성은 느끼는데, 해당 클래스를 정리해서 일반화된 기능과 특화된 기능을 분리하기에는
단일 목표의 복합기능 클래스에서 조정되는 응집도의 경계가 명확하게 드러나지를 않음.
이것은 1차원적인 응집도는 다른 응집도의 대상에 의해 경계가 구분되는데 반해
단일 목표의 복합기능 클래스의 경우, 외부의 경계가 되어줄 여집합적 응집도를 발견하는건 경험적으로 어려웠음.
이러한 것들은 운이 좋으면 다른 프로젝트들에서 해당 클래스들을 활용하면서 응집도의 분화가 일어날수 있지만
그런 경험은 생각보다 쉽지 않은것 같음.
이런 부분을 해결하기 위한 지식과 감각을 나는 모르겠음.
클래스 내부는 부품단위로 조립되어 해체가 가능하지만
특정 부품들이 빠진 제네럴 클래스와 특화 클래스의 구분은 여전히 어려운것 같음.
복잡도의 한계를 맞이하게된 클래스인데, 개별로 분화하기가 어려운 클래스는 나에게 항상 난제임.
근데 그건 OOP 지점의 문제라서 형님의 문제는 아닐듯 싶습니다.
실제로 형님이 말하는건 컨텍스트 응집, 즉 문맥적 응집이라는 부분이라 OOP 고급 이론이죠
코드 컴플리트에서도 그 내용이 있는걸로 압니다
아 코드 컴플리트 본지가 15년이 넘어서, 공부는 이제 더이상 하고 싶지 않아져서 책 안읽은지 오래되서 아마 읽지는 않겠지만, 삶에 여유가 생기게 된다면 다시 한번 책장을 뒤젹여 봐야겠네요.
근데 참 신기한듯 하네요. 프로그램 고전이라는게 역시 그런 느낌이 있어요. 결국 고민하다보면 이전에 있던 선배 프로그래머들이 다 정리해둔 개념들이 있죠. 신기하긴합니다
ㅆㅇㅆ는 진짜 공부 많이 하는구나, 이런 문제들이 어떤 책에 나오는지 다 기억하고. 열정이 대단하다.
저는 읽은지 2~3년이 안되서 어느정도 기억하는거지 형님은 체감하시는거잖아요. 고전이라는게 오랫동안 잊어두면 기억이 안나지요. 항상 재밌게 읽고 느끼는 바가 많습니다
글을 쓰니 조금 정리가 되네, 위의 문제는 결국 클래스의 옵션 기능에 대한 문제임. 옵션처리와 분화를 어떻게 해야할지 고민해봐야겠구만
형님 응원합니다. 솔직히 프로그래밍 갤러리서 프로그래밍 책 이야기 하는거 엄청 올만이라 좋네요