블로그

인프런 워밍업 클럽 스터디 2기 백엔드 - 1주차 회고록

항상 코드를 짜며 고민을 한다내 코드는 객체지향 적인가? 내 코드는 다른 사람이 와도 이해하기 쉬울까?(TMI: 갑자기 위 질문을 나한테 던져보다, 어떤 Youtube 강의 중에 '넌 전혀 restful 하지 않아' 라는 강연이 떠올랐다..) 이 부분에 대한 대답으로는 간단하게 시니어 개발자들에게 코드 리뷰 를 받게 되면 점진적으로 좋은 코드가될 수 있을 것 같다. 하지만 현재 혼자 공부하고 있는 입장으로서, 누군가 한테 내 코드 리뷰를 받을 수가 없어,혼자 클린 코드에 대한 고민을 하며 코드를 작성하고는 한다. 그래서 위 워밍업 클럽을 신청하게 되었고, 겸사 겸사 테스트 코드 학습도 하게 될 것이라더 많은 지식을 얻게 될 생각에 벌써 머리가 아프지만, 기분이 좋다. 1주차Readble - Code 에 Section1 ~ Section5 까지 의 강의를 들었다.클린코드 관련 키워드 및 클린 코드 방법을 공부하기 위한 강의라 생각했지만내용이 너무너무 알찻다. OOP 및 SOLID 원칙 등 너무 좋은 내용에 대한 인사이트를 얻게 되었고,강의자 님을 전달력이 너무 좋아, 귀에 쏙쏙 들어왔기에 2배로 효율적이라고 생각한다. 위 섹션들을 들으면서 공통적으로 느끼는 건사고 하는 방법에 정말 많은 도움이 되는 것 같다. 한가지 사고방식에 사로잡히는게 아닌, 여러 방향으로 유연한 사고를 할 수 있게 도와준다. 프로그래밍 머리는 제로인 내가 들었을 때 한번에 50% 이상 이해가 된 강의는 처음이다. 특히 요일 별로 섹션을 나눠 듣고, 꼭 실천해야한다는 의무감 및 책임감도 있고강의 내용을 더욱 더 깊게 이해하기 위한 미션들을 수행하면서 한층 더 성장한 듯한 느낌을 받았고다른 개발자들의 글들을 보며 동기부여 및 다양한 인사이트 를 얻게 되어 감사하다. 강의수강 요약강의에서 제일 기억에 남는 부분은섹션3 파트이다. 사람은 생각을 하고 살아야한다.생각도 아무런 생각이 아닌, 논리와 사고의 흐름을 가지고 있어야 한다고 생각한다. 위 내용을 프로그래밍에 빗대어 설명을 해주셨고 내용들이 귀에 쏙쏙 박혀서 너무 좋은 섹션이였다.'뇌 메모리 적게쓰기' 에 대한 해답을 찾기 위해 노력을 해보는 계기가 되었다.  미션미션은 총 2개를 진행하였고, 아직 까지 크게 어려운 내용은 있지 않았다.왜냐? 추상적인 내용을 바탕으로 내 생각을 표현하는 미션이 였고누가 틀렸네, 맞았네 의 그런 미션이 아니었기 때문이다 하나 코드 문제가 있긴했는데, 간단한 리팩토링에 대한 미션이라강의를 잘 듣고 생각나는 키워드를 바탕으로 미션을 해결할 수 있었다.사실 해결이라는 단어가 좀 모호하긴 한대, 내 기준에서는 그래도 나름 객체지향 적으로 리팩토링을 해보았다..   모든 정리 내용은 Github 에 기록을 해두었습니다.

백엔드OOPJava

윤대

[도서 정리] - 결합도와 응집도 - { 오브젝트 : 코드로 이해하는 객체지향 설계 }

결합도 : 의존성의 정도, 다른 모듈에 대해 얼마나 많은 지식을 가지고 있는 지를 나타내는 척도.'결합도가 높다'는 두 가지 의미로 해석 될 수 있다.A라는 모듈이 B 모듈의 내부 구현을 자세히 알고 있어, B의 작은 변경에도 A까지 변경해야 할 경우.A라는 모듈을 B, C, D, E 등 다수의 모듈이 의존하고 있어. A를 변경할 시 나머지 모듈도 함께 변경해야 할 경우.즉, '결합도가 낮다'라고 것은 단순히 의존하는 모듈이 적은 것이 아니다. 변경이 일어날 수 있는 부분을 모두 철저히 캡슐화하여, 내부 구현 변경에 의하여 의존하는 다른 모듈이 영향을 받지 않도록 억제 하는 것이다.응집도 : 모듈 내부 요소들이 서로 연관돼 있는 정도.'응집도가 낮다'면 다음과 같은 특성이 나타난다.클래스 변경되는 이유가 두 가지 이상이다.클래스의 인스턴스를 초기화하는 시점에 경우에 따라 다른 속성들을 초기화하고 있다.메서드 그룹이 속성 그룹을 사용하는 여부가 갈린다.위의 3 경우는 해당 클래스의 응집도가 낮다는 지표임으로, 위의 증상이 나타난다면 클래스를 분리할 것을 고려해야 한다. ✒ 정리결국, 모든 것은 변경과 관련되어 있다. 변경이 일어날 수 있는 부분을 추상화하여 구현을 감추고 객체가 인터페이스에만 의존하게 한다면 자연스레 결합도가 낮아진다.서로 다른 속성을 써서 작동하는 비슷한 메소드를 캡슐화하여 새로운 객체로 추출하면, 자연스레 응집도가 높아지게 된다.그렇기에 우리는 적절하게 도메인을 뽑아낸 뒤, 협력에서 책임을 찾고 이를 적절하게 분배해야 할 것이다. 그리고 구현을 하며, 끊임 없이 리팩토링을 한다면 객체지향이 잘 지켜진 코드를 얻을 수 있을 것이다.

백엔드결합도응집도객체지향OOP

채널톡 아이콘