[개발] 클린코드(Clean Code)
-
1. 실패를 만회하기 위한 주석 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 여기서 내가 실패라는 단어를 썼다는 사실에 주목한다. 진심이다. 주석은 언제나 실패를 의미한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그래서 주석은 반겨 맞을 손님이 아니다. 그러므로 주석이 필요한 상황에 처하면 곰곰히 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 코드로 의도를 표현할 때마다 스스로를 칭찬해준다. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 마땅하다. 코드는 변화하고 진화한다. 일부가 여기서 저기로 옮겨지기도 한다. 조각이 나뉘고 갈라지고 합쳐지면서 괴물로 변한다. 불행하게도 주석이 언제나..
클린 코드 대신 읽어드립니다 _ 4. 주석 (정리, 요약, 후기)1. 실패를 만회하기 위한 주석 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 여기서 내가 실패라는 단어를 썼다는 사실에 주목한다. 진심이다. 주석은 언제나 실패를 의미한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그래서 주석은 반겨 맞을 손님이 아니다. 그러므로 주석이 필요한 상황에 처하면 곰곰히 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 코드로 의도를 표현할 때마다 스스로를 칭찬해준다. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 마땅하다. 코드는 변화하고 진화한다. 일부가 여기서 저기로 옮겨지기도 한다. 조각이 나뉘고 갈라지고 합쳐지면서 괴물로 변한다. 불행하게도 주석이 언제나..
2024.01.19 -
1. 작게 만들어라! 함수를 만드는 첫쨰 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 2. 위에서 아래로 코드 읽기 : 내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다. 즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 나는 이것을 내려가기 규칙이라 부른다. 3. 서술적인 이름을 사용하라 testtableHtml 보다는 SetupTeardownIncluder.render : 함수가 하는 일을 좀 더 잘 표현하므로 훨씬 좋은 이름이다. 이름이 길어도 괜찮다. 겁먹을 필요없다. 길고 서술적인..
클린 코드 대신 읽어드립니다 _ 3. 함수 (정리, 요약, 후기)1. 작게 만들어라! 함수를 만드는 첫쨰 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 2. 위에서 아래로 코드 읽기 : 내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다. 즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 나는 이것을 내려가기 규칙이라 부른다. 3. 서술적인 이름을 사용하라 testtableHtml 보다는 SetupTeardownIncluder.render : 함수가 하는 일을 좀 더 잘 표현하므로 훨씬 좋은 이름이다. 이름이 길어도 괜찮다. 겁먹을 필요없다. 길고 서술적인..
2024.01.19 -
1. 의도를 분명히 밝혀라. 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 1) 첫번째 예시 개선 전 int d; // 경과 시간(단위 : 날짜) 개선 후 int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 2) 두번째 예시 개선 전 읽히기는 하지만, 코드가 하는 일에 대해서 짐작하기 힘들다. 코드의 '맥락'이 코드에 명시적으로 드러나지 않는다. 해석) getThem이라는 메서드는, list1이라는 배열을 선언한다. theLi..
클린 코드 대신 읽어드립니다 _ 2. 의미 있는 이름 (정리, 요약, 후기)1. 의도를 분명히 밝혀라. 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 1) 첫번째 예시 개선 전 int d; // 경과 시간(단위 : 날짜) 개선 후 int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 2) 두번째 예시 개선 전 읽히기는 하지만, 코드가 하는 일에 대해서 짐작하기 힘들다. 코드의 '맥락'이 코드에 명시적으로 드러나지 않는다. 해석) getThem이라는 메서드는, list1이라는 배열을 선언한다. theLi..
2024.01.12 -
1. 당신이 이 책을 읽는 이유는 2가지다. 1) 프로그래머라서 2) 더 나은 프로그래머가 되려고! 발제문) 당신은 어떤 이유에서 클린 코드를 읽고 있나요? 2. 코드란? 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 발제문) 당신이 생각하는 코드란? 3. 어째서 나쁜 코드를 짰는가? 급해서? 서두르느라? 아마 그랬으리라. 제대로 짤 시간이 없다고 해서, 코드를 다듬느라 시간을 보냈다가 상사한테 욕 먹을까봐, 지겨워서 빨리 끝내려고, 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고.... 모두가 겪어본 상황이다. 비유를 하나 들겠다. 자신이 의사라 가정하자. 어느 환자가 수술 전에 손을 씻지 말라고 요구한다. ..
클린 코드 대신 읽어드립니다 _ 1. 깨끗한 코드 편 (정리, 요약, 후기)1. 당신이 이 책을 읽는 이유는 2가지다. 1) 프로그래머라서 2) 더 나은 프로그래머가 되려고! 발제문) 당신은 어떤 이유에서 클린 코드를 읽고 있나요? 2. 코드란? 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 발제문) 당신이 생각하는 코드란? 3. 어째서 나쁜 코드를 짰는가? 급해서? 서두르느라? 아마 그랬으리라. 제대로 짤 시간이 없다고 해서, 코드를 다듬느라 시간을 보냈다가 상사한테 욕 먹을까봐, 지겨워서 빨리 끝내려고, 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고.... 모두가 겪어본 상황이다. 비유를 하나 들겠다. 자신이 의사라 가정하자. 어느 환자가 수술 전에 손을 씻지 말라고 요구한다. ..
2024.01.12