도서
[Clean Code] 3장 함수
🚀 들어가면서 지금껏 개발하면서 함수(메서드)를 어떻게 만들어야할지 많은 고민을 했었다. SRP(단일책임원칙)을 지켜야하므로 함수는 한 가지 책임만 가지게 만들어 유지보수성을 높여야한다고 하지만 생각과는 다르게 개발이 되었던 경우가 많았다. 예전에 읽었던 책을 빠르게 읽어보면서 다시끔 클린코드를 생각해보자. 어떤 프로그램이든 가장 기본적인 단위가 함수이다. 아래 질문을 가지고 이번 장을 살펴보자. 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? ✏️ #1, 작게 만들어라! 함수를 더욱 작게 만들수록 좋다 각 함수가 이야기 하나를 표현하여 명확하게 파악할 ..
[토비의 스프링] 1장 오브젝트와 의존관계
스프링은 자바를 기반으로 한 기술이다. 따라서 스프링이 가장 중요하게 가치를 두는 것은 객체지향 프로그래밍이 가능한 언어라는 점이다. 🧐 객체지향 프로그래밍(OOP, Object Oriented Programming)란? 객체(클래스) = 속성(변수) + 기능(메소드) '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 개념으로 시작된다. 따라서 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메소드를 활용하는 방식이라 볼 수 있다. 특징으로는 추상화, 캡슐화, 상속성, 다형성이 있다. 스프링이 가장 관심을 많이 두는 대상은 오브젝트(객체)이다. 오브젝트 생성, 관계, 사용, 소멸까지의 전 과정 및 어떻게 설계할..
[Clean Code] 2장 의미 있는 이름
들어가면서 소프트웨어에서 이름은 어디에나 쓰인다. 이렇게 많이 사용하므로 이름을 잘 지으면 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 소개한다. #1, 의도를 분명히 밝혀라 의도가 분명한 이름은 정말로 중요하다. 좋은 이름을 짓는건 시간이 걸리지만 이것으로 절약하는 시간이 훨씬 많다. 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 1번처럼 아무 의미가 없는 변수명이라면 주석으로 설명해야한다. 하지만 2번처럼 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. 왼쪽 코드는 복잡한 문장은 없지만 무슨 기능인지 짐작할 수 없다. 여기서 문제는 단순성이 아니라 함축성이다. 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다. 그래서 사전 정보가 필요하다. 하지만 오른쪽 코드..
[Clean Code] 1장 깨끗한 코드
이 책은 좋은 프로그램 작성 요령을 설명하는 책이다. 이 책을 읽고나면 다음과 같은 것을 배울 수 있다. 좋은 코드와 나쁜 코드를 구분하는 능력 좋은 코드를 작성하는 방법 나쁜 코드를 좋은 코드로 바꾸는 실력 #1, 코드가 존재하리라 코드를 다루는 책이라고 해서 시대에 뒤떨어지는 책이 아니다. 코드보다는 모델이나 요구사항에 집중해야 한다고 생각할지 모른다. 하지만 그것은 큰 오산이다. 코드는 요구사항을 상세히 표현하는 수단이기 때문이다. 요구사항이 애매하게 주어지더라도 의도를 정확히 파악하여 프로그램을 완벽하게 실행하는 기계가 나오지 않는 이상, 코드의 중요성은 사라지지 않는다. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. #2, 나쁜코드 켄트 벡은 "좋은 코드가 중요하다는 다소 미약..
[Clean Code] 시작
스터디를 하면서 개발자에게 필요한 능력과 기술에 대해 고민하다가 여러 개발자 선배님들께서 추천하신 도서들을 읽기로 했다. 여러 도서들이 있었지만, 그 중 Clean Code(클린 코드)를 읽기로 했다. 팀 프로젝트를 할 때나 혼자서 무언가를 만들다보면 코드량이 많아지는데, 많아질수록 어디에 있는지 무슨 코드인지를 빠르게 파악하지 못하는 점이 있는 것 같았다. 나 혼자서 만든 프로젝트나 이런 간단한 팀프로젝트조차도 다른 개발자가 어떠한 의도로 작성했는지 빠르게 파악하지 못한다면 "현업에서도 내가 잘 할 수 있을까??" 라는 생각이 들었다. 그러다보니 어떤 코드인지 설명하려고 주석도 많이 적으니 코드가 깔끔해지지 못하는 점이 보였다. 그래서 "좋은 코드란 무엇인가? 어떻게 작성해야할까?"를 고민하다가 이 책..