본문 바로가기

클린코드5

클린코드를 위하여 먼저 글을 시작하기전에 내 자신에게 큰 박수를 보내고 싶다. 정말 부끄러운 얘기지만 여태까지 대학생 시절을 포함해서 10년 넘게 개발하는 삶을 살고 있지만, 정작 처음부터 끝까지 관련 전공 서적을 완독한적은 없었던 것 같다. 올해는 적어도 두, 세 달에 한권 씩은 전공 서적을 완독해보자는 목표를 세웠는데 드디어 처음으로 완독한 책이 생겼다. 바로 "클린코드"이다 겨우 한번 읽은 거 가지고 그러냐 하실 수도 있지만은 ㅎㅎ 저에게는 큰 의미이니 너그럽게 이해해주시길 바란다. 책을 읽고 실무에서 언제든 클린코드를 적용 할 수 있게 나름대로 정리를 좀 해보고자 한다. 1. 클린코드의 철학 훌륭한 개발자는 나쁜 코드를 지양한다. 나쁜 코드는 팀의 생산성을 저하시키고 , 나쁜코드는 기술 부채를 만들어 수정이 어렵게.. 2022. 1. 28.
[Spring] Spring 프로젝트를 분석하는 방법 보통 프로젝트에 투입될 때, 아무것도 없는 상태에서 A-Z 까지 다 구현하기도하지만 실무에서는 보통은 누가 짜놓은 코드 위에 새로운 기능을 추가하는 경우가 많다. 스프링 개발자로 일하며 다양한 프로젝트에 투입되었지만 투입될 때마다 기존의 프로젝트 환경을 분석하는게 쉽지 않았다. 문서로 잘 정리된 프로젝트들도 있었지만 많은 프로젝트들이 프로젝트 코드레벨까지 뜯어보지 않으면 분석하기 힘들게 되어있었다. 최근에 여유시간이 조금 생겨 강의를 챙겨봤었는데, 이 강의에서 강사님이 Spring 프로젝트를 분석하는 좋은 방법을 알려주셔 복습차원에서 내용을 정리해보려고한다. https://zero-base.co.kr/category_dev_camp/cleancode_1book 한달한권 | 클린코드 | zero-base .. 2022. 1. 27.
동시성 프로그래밍에 대하여 백엔드 개발자라면 동시성을 고려한 프로그래밍을 할 줄 알아야한다. 다만 아직 학생이거나 주니어 레벨에서는 이러한 동시성을 이해하기가 쉽지는 않다. 프론트 단의 개발과는 다르게 백엔드 쪽은 명확하게 구조를 이해하기가 쉽지 않다. 서버라는 것 자체가 내용이 방대하고, 구조가 복잡하기 때문이다. 분명 동시성을 이해하는 것은 실무에서의 경험이 어느정도 해결해주기는 하나 그래도 어느정도의 공부가 수반되어야 동시성을 잘 이해할 수 있다. 여러분들의 동시성에 대한 이해를 돕기 위해, 동시성에 대한 내용을 좀 정리해 보았다. 동시성 프로그래밍에 대한 오해 1. 동시성은 항상 성능을 높여준다? 동시성은 항상 성능을 높여주진 않는다. 때로 성능을 높여줄 뿐이다. 구체적으로 말하면 대기시간이 아주 길어 여러스레드가 프로세서.. 2022. 1. 19.
깔끔한 코드를 구현하기 위한 설계 규칙 네 가지 하이.. 코드를 짜는 것보다 더 중요한 것이 있다. 바로 설계다. 우리는 항상 깔끔한 코드를 짤 생각은 하지만 그전에 설계를 제대로 하는 것을 잊곤 한다. 오늘은 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 네 가지 규칙을 소개하고자 한다. 이규칙을 지키면 앞으로 여러분은 코드 구조와 설계를 파악하기 쉬워질 것이고, SRP 나 DIP 같은 원칙을 적용하기도 쉬워질 것이고, 네가지 규칙이 우수한 설계의 창발성을 촉진할 것이다. 1. 모든 테스트를 실행하라. 2. 중복을 없애라. 3. 의도를 표현하라. 4. 클래스와 메서드 수를 최소로 줄여라, 단 실용적 관점에서 타협하라 하나씩 제대로 알아보자. 1. 모든 테스트를 실행하라. 위의 순서는 중요한 순서대로 나열한 것이다. 즉 모든 테스트를 실행하는 게.. 2022. 1. 13.
결합도와 응집도 이야기 OOP를 다루는 개발자라면 혹은 컴퓨터 공학을 전공하는 사람이라면 누구나 이런 얘기를 들어본 적이 있을 것이다. "결합도는 낮추고, 응집도는 높여야 유지보수하기 쉬운 좋은 프로그램이 된다" 개발자로 산지 거의 5년이라는 시간이 지났지만, 저 말을 제대로 이해하고 있는지도 의문이었다. 그래도 최근에 '클린코드' 라는 책을 정독하면서 나름대로 잘 이해하게 된 것 같아, 내용을 좀 정리해보려고한다. 결합도 (Coupling) 결합도는 다른 모듈간의 의존도를 의미한다. 아래그림을 보자. 파란색 사각형이 프로그램의 모듈이라고 생각해보자. 보통 프로그램은 하나의 모듈이 아닌 여러개의 모듈로 이루어져있다. 결합도는 각각의 모듈간의 영향을 주는 즉 의존도를 의미한다. 응집도 (Cohesion) 응집도는 하나의 모듈 내.. 2022. 1. 9.