6 posts
[Clean Code] Chapter 7 - 오류 처리
2024.10.17


[Clean Code] Chapter 7 - 오류 처리
Chapter 7 오류 처리 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우되는데, 여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 어려워지는 경우가 있다.오류 처리는 중요하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 클린 코드라 부르기 어렵다.이 장에서는 우아하고 고상하게 오류를 처리하는 기법과 고려 사항 몇 가지를 소개한다. 오류 코드보다 예외를 사용하라얼마 전까지만해도 예외를 지원하지 않는 프로그래밍 언어가 많았는데, 예외를 지원하지 않는 언어는 오류를 처리하고 보고하는 방법이 제한적이었다.오류 플래그를 설정하거나 호출자에게 오류 코드를 반환하는 방법이 전부였다. public class DeviceController { ... publ..
2024.10.17
[Clean Code] Chapter 7 - 오류 처리


Chapter 7 오류 처리 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우되는데, 여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 어려워지는 경우가 있다.오류 처리는 중요하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 클린 코드라 부르기 어렵다.이 장에서는 우아하고 고상하게 오류를 처리하는 기법과 고려 사항 몇 가지를 소개한다. 오류 코드보다 예외를 사용하라얼마 전까지만해도 예외를 지원하지 않는 프로그래밍 언어가 많았는데, 예외를 지원하지 않는 언어는 오류를 처리하고 보고하는 방법이 제한적이었다.오류 플래그를 설정하거나 호출자에게 오류 코드를 반환하는 방법이 전부였다. public class DeviceController { ... publ..
[Clean Code] Chapter 6 - 객체와 자료 구조
2024.10.17


[Clean Code] Chapter 6 - 객체와 자료 구조
Chapter 6 객체와 자료 구조 변수를 `private`로 정의하는 이유는 남들이 변수에 의존하지 않게 만들고 싶어서다.그렇다면 어째서 수많은 프로그래머가 `getter`와 `setter`를 당연하게 `public`으로 만들어 `private`로 선언한 변수를 외부에 노출할까? 자료 추상화 // 구체적인 Point 클래스public class Point { public double x; public double y;} // 추상적인 Point 클래스public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getT..
2024.10.17
[Clean Code] Chapter 6 - 객체와 자료 구조


Chapter 6 객체와 자료 구조 변수를 `private`로 정의하는 이유는 남들이 변수에 의존하지 않게 만들고 싶어서다.그렇다면 어째서 수많은 프로그래머가 `getter`와 `setter`를 당연하게 `public`으로 만들어 `private`로 선언한 변수를 외부에 노출할까? 자료 추상화 // 구체적인 Point 클래스public class Point { public double x; public double y;} // 추상적인 Point 클래스public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getT..
[Clean Code] Chapter 5 - 형식 맞추기
2024.10.17


[Clean Code] Chapter 5 - 형식 맞추기
Chapter 5 형식 맞추기프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다.코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 하며, 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다.필요하다면 규칙을 자동으로 적용하는 `도구`를 활용한다. 형식을 맞추는 목적코드 형식은 매우 중요하다. 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안 된다.오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도맨 처음 잡아놓은 `구현 스타일`과 `가독성 수준`은 유지보수 용이성과 확장성에 계속 영향을 미친다.그렇다면 원활한 소통을 장려하는 코드 형식은 무엇일까? 1. 적절한 행 길이를 유지하라 소스 코드는 얼마나 길어야 적당할까?50..
2024.10.17
[Clean Code] Chapter 5 - 형식 맞추기


Chapter 5 형식 맞추기프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다.코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 하며, 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다.필요하다면 규칙을 자동으로 적용하는 `도구`를 활용한다. 형식을 맞추는 목적코드 형식은 매우 중요하다. 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안 된다.오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도맨 처음 잡아놓은 `구현 스타일`과 `가독성 수준`은 유지보수 용이성과 확장성에 계속 영향을 미친다.그렇다면 원활한 소통을 장려하는 코드 형식은 무엇일까? 1. 적절한 행 길이를 유지하라 소스 코드는 얼마나 길어야 적당할까?50..
[Clean Code] Chapter 4 - 주석
2024.10.17


[Clean Code] Chapter 4 - 주석
Chapter 4 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라.- 브라이언 W. 커니핸, P.J. 플라우거 우리는 코드로 의도를 표현하지 못해 주석을 사용한다.그러므로 주석이 필요한 상황에 처하면 `코드로 의도를 표현할 방법`은 없을지 고민해야 한다. 코드는 변화하고 진화하기 때문에 주석이 코드를 따라가지 못한다.그러므로 우리는 주석을 가능한 줄이도록 꾸준히 노력해야 한다. 1. 주석은 나쁜 코드를 보완하지 못한다코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다.표현력이 풍부하고 갈끔하며 주석이 거의 없는 코드가 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 2. 코드로 의도를 표현하라 ! 코드만으로 의도를 설명하기 어려운 경우가 존재하지만, 이를 코드는 훌륭한..
2024.10.17
[Clean Code] Chapter 4 - 주석


Chapter 4 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라.- 브라이언 W. 커니핸, P.J. 플라우거 우리는 코드로 의도를 표현하지 못해 주석을 사용한다.그러므로 주석이 필요한 상황에 처하면 `코드로 의도를 표현할 방법`은 없을지 고민해야 한다. 코드는 변화하고 진화하기 때문에 주석이 코드를 따라가지 못한다.그러므로 우리는 주석을 가능한 줄이도록 꾸준히 노력해야 한다. 1. 주석은 나쁜 코드를 보완하지 못한다코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다.표현력이 풍부하고 갈끔하며 주석이 거의 없는 코드가 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 2. 코드로 의도를 표현하라 ! 코드만으로 의도를 설명하기 어려운 경우가 존재하지만, 이를 코드는 훌륭한..
[Clean Code] Chapter 3 - 함수
2024.10.17


[Clean Code] Chapter 3 - 함수
Chapter 3 함수의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까?함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 1. 작게 만들어라 ! 함수를 만드는 첫 번째 규칙은 '작게!' 다. 블록과 들여쓰기if문/else문/while문 등에 들어가는 블록은 한 줄이어야 한다.그러면 바깥을 감싸는 함수(enclosing function)가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면 코드를 이해하기도 쉬워진다. 2. 한 가지만 해라 ! public static String renderPageWithSetupsAndTeardowns( PageData pageData, boolean isSuite) throws Exception { ..
2024.10.17
[Clean Code] Chapter 3 - 함수


Chapter 3 함수의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까?함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 1. 작게 만들어라 ! 함수를 만드는 첫 번째 규칙은 '작게!' 다. 블록과 들여쓰기if문/else문/while문 등에 들어가는 블록은 한 줄이어야 한다.그러면 바깥을 감싸는 함수(enclosing function)가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면 코드를 이해하기도 쉬워진다. 2. 한 가지만 해라 ! public static String renderPageWithSetupsAndTeardowns( PageData pageData, boolean isSuite) throws Exception { ..
[Clean Code] Chapter 2 - 의미 있는 이름
2024.10.17


[Clean Code] Chapter 2 - 의미 있는 이름
Chapter 2 의미 있는 이름 소프트웨어에서 이름은 어디나 쓰이며, 의미 있는 이름을 짓는 것은 중요하다.이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다. 1. 의도를 분명히 밝혀라 int d; // 경과 시간(단위 : 날짜) 위 변수 d가 어떤 의도로 생성이 된 건지 변수명만 보고 알 수 있을까? int elapsedtimeinDays;int daysSinceCreation;int daysSinceModification;int fileAgeInDays; 해당 변수들은 측정하려는 값과 단위를 표현하고자 하는 의도가 드러나있다.어느 변수가 더 코드 이해와 변경이 쉬울까? public List getThem() { List list1 = new ArrayList(); for (int[] ..
2024.10.17
[Clean Code] Chapter 2 - 의미 있는 이름


Chapter 2 의미 있는 이름 소프트웨어에서 이름은 어디나 쓰이며, 의미 있는 이름을 짓는 것은 중요하다.이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다. 1. 의도를 분명히 밝혀라 int d; // 경과 시간(단위 : 날짜) 위 변수 d가 어떤 의도로 생성이 된 건지 변수명만 보고 알 수 있을까? int elapsedtimeinDays;int daysSinceCreation;int daysSinceModification;int fileAgeInDays; 해당 변수들은 측정하려는 값과 단위를 표현하고자 하는 의도가 드러나있다.어느 변수가 더 코드 이해와 변경이 쉬울까? public List getThem() { List list1 = new ArrayList(); for (int[] ..