읽은 책 기록
-
Clean Code / 03 09 2022읽은 책 기록 2022. 3. 9. 15:33
클래스를 잘 만드는 법도 메소드를 작성하는 원리와 크게 다르지않다. 역시, 작고 간결하게 만드는게 포인트이다. 메소드는 보통 한 클래스 안에 다섯개 정도면 충분한데, 그 이유는 클래스가 너무 많은 책임을 안게되면 위험하기때문이다. 메소드와 함수의 예에서 설명했던것처럼, 이름이 모호한 클래스는 이름이 불분명해질 수 밖에 없다. 그 이유는 추상화가 제대로 이루어지지않았기때문인데, 추상화가 제대로 이루어지지않았다면 구현하는 기능이 명확히 정의되지않은것이고.. 따라서 이름이 모호해질 수 밖에 없으며, 모호하기때문에 많은 기능을 떠앉는 책임을 지게된다. 즉, 함수가 하나의 기능을 하는 것처럼, 클래스도 하나의 책임을 맡아야한다. 책에서 좋은 비유가 설명됐는데, 클래스를 도구상자에 비유했으며 메소드는 도구로 비유했..
-
Clean Code / 03 06 2022읽은 책 기록 2022. 3. 6. 15:10
외부의 코드를 사용할 때는 언제든지 사용자의 측에서 만들고 있는 코드와 외부 제공자측에서의 코드가 호환성 등의 문제로 충돌이날 수 있다. 또한, 현재 호환성의 문제가 없다하더라도 제공받은 코드(라이브러리, 프레임워크) 등이 업데이트되면서 호환성의 문제가 다시 발생할 수 있다. 따라서 사용자는 외부 코드를 익히고 파악하는 과정을 거쳐야하는데, 이를 '학습 테스트'라고할 수 있다. 즉, 이런 테스트 케이스를 이용해 외부 코드의 새로운 버전과 호환성을 점검해볼 수 있고 경계 테스트를 통해 새로운 버전으로 쉽게 이전할 수 있다. 이런 경계 테스트가 없다면 낡은 버전의 외부 코드를 오랫동안 사용하려는 유혹에 빠지기 쉬울것이다. 이렇게 경계 테스트를 원자 단위로 쪼개어 소프트웨어의 작동 유무를 부울 값으로 확인하는..
-
Clean Code / 03 04 2022읽은 책 기록 2022. 3. 5. 00:46
오류 처리를 '잘'하는것은 깨끗한 코드를 만드는데 기여한다. 깨끗한 코드는 읽기도 좋지만 안정성이 높아야하는데, 이 둘은 분리되는 사항이아니다. 나같은 초보자들은 오류 처리를 하면서, 코드가 복잡해지기때문에 가독성이 낮아지고 코드의 질이 떨어진다. 이를 방지하려면 오류 처리와 프로그램의 로직을 분리해 독립적인 추론이 가능하도록 설계해야한다. 그렇게하면 유지보수성 또한 올라갈것이다. 그리고 예외를 잘 던지는것도 중요한데, 자바에서 직접 예외 클래스를 만들어 해당 클래스의 이름에 예외의 정보를 제공할 수 있는것처럼 발생한 예외에서 최대한 많은 의미가 전달될 수 있게 설계해야한다. 이번 단원은 코드 예시도 그렇고 초보인 나에게 내용이 너무 어려웠다. ㅠㅠ 자바 공부 좀 열심히 할걸.
-
Clean Code / 03 02 2022읽은 책 기록 2022. 3. 2. 02:06
객체와 자료구조체는 다르다. 객체는 필드를 그대로 노출하지않고 그 값을 추상화시키는 메소드로 접근하는게 일반적이며, 자료구조체는 그냥 값을 보여준다. 그래서 객체를 설계할 때는 어떻게 추상화를 할 것인가에 대한 문제가 아주 중요하다. 따라서 코드의 설계를 객체 지향으로 할 것인지 또는 자료구조(절차 지향)으로 할 것인지 잘 선택을 하여야하는데, 객체 지향으로 코드를 작성하면 확장성이 높다. 새로운 클래스 타입을 계속 작성할 수 있지만 기존 객체의 메소드를 확장하는데 불리하며, 반대로 절차 지향으로 코드를 작성하면 새로운 클래스를 적용시키는데 불리하지만 메소드를 쉽게 수정, 개선할 수 있다. 참고로 위 설명을 참고한 책 단락에서의 자료 구조체라는것은 List, Stack, Queue, Map 이런것을 말하..
-
Clean Code / 02 28 2022읽은 책 기록 2022. 2. 28. 18:42
프로그래머는 협업을 위해 자신이 사용하던 기존의 코드 작성법보다는 조직의 룰을 따르는것이 우선이다. 코드 형식도 의사소통의 일환이기때문이다. 하지만 코드에 형식이 있다고해도 유지보수 용이성과 확장성이 잘 성립된 형식이 있고 아닌 형식이 있기에 권고할만한 작성법을 이 단원에서 기술한다. 1. 코드 행의 길이를 적정 길이로 유지한다. 이해가 더 용이하기 때문이다. 2. 읽기 좋은 글 처럼 작성한다. 역시 전 단원에서 꾸준하게 강조되는 내용이다. 위는 전반적인 내용, 아래는 디테일한 내용으로 내용을 설계한다. 3. 적절히 행을 나누는것도 중요하다. 행을 나누는것은 비슷한 맥락과 목적의 코드가 모인 코드 블럭로 나눠주는 행위이므로, 가독성을 높인다. 4. 변수, 함수의 위치 역시 중요하다. 함수들은 호출하는 함..
-
Clean Code / 02 25 2022읽은 책 기록 2022. 2. 25. 12:50
주석을 사용하는것 자체는 사실 좋은 일이 아니다. 독자의 이해를 돕는 주석을 작성하는것은 사실 올바르고 이해가 쉬운 코드를 작성하지 못했기때문에 벌어지는 하나의 실수이며 좋은 코드는 최소의 주석이 달린 코드라고 할 수 있겠다. 또 코드는 유지보수되면서 변화하고 위치가 옮겨지는데, 그렇게되면 해당 코드 내용이 담긴 주석은 새로운 코드의 내용을 잘못 오도하는, 도움이 되지못하고 오히려 방해가 될 수 있는 여지가 있다. 따라서 주석 보다는 앞의 내용처럼 함수와 변수의 이름으로 코드의 내용을 알 수 있게한다든지, 코드의 구조로 내용을 이해할 수 있게하는 방법이 더욱 좋다. 즉, 잘못된 주석은 코드의 내용을 더욱 어렵게하고 내용을 오도해 다른 코드까지도 들춰보게해야하는 악영향을 끼치는데, 이를 원천차단하기위해서는..
-
Clean Code / 02 22 2022읽은 책 기록 2022. 2. 22. 13:47
함수를 잘 작성하는 법 첫 번째, 바로 최대한 작게 만드는것이다. 그 함수 하나가 하나의 행위를 표현하며 함수의 이름도 최대한 그 행위에 맞게 작성돼야한다. 또한 함수 내부의 중첩 구조가 들여쓰기 2 단 이상을 넘어가면 곤란하다. 그 뜻은 바로 함수가 최소로 작게 만들어지지 않았음을 의미한다. 함수가 하나의 작업만 하게만드려면 모든 문장의 추상화 수준이 동일해야한다. 두 번 째, 코드가 위에서부터 아래로 이야기처럼 읽혀야한다. 그리고 아래로 갈수록 추상화 수준이 더 구체적으로 기술돼야한다. 즉, 프로세스가 어떻게 수행돼야하는지 더 구체적인 방법이 나와야한다는것이다.(맞는지 모르겠음. 이렇게 이해함) 세 번째, 함수의 이름은 서술적인 이름을 사용한다. 직관적으로 바로 이 함수의 용도가 무엇인지 알 수 있어..
-
Clean Code / 02 21 2022읽은 책 기록 2022. 2. 21. 10:07
https://velog.io/@ahnseongeun/Clean-Code-2 Clean Code #2 큰 주제내용 적기큰 주제내용 적기큰 주제내용 적기 velog.io 1. 단락 주제별로 핵심 내용을 잘 요약한것같다. + 내가 핵심이라고 생각했던 책의 내용과 일치하는 부분이 많아 다시 한번 공감하면서 복습할 수 있었다. https://yong-nyong.tistory.com/27?category=947326 [Clean Code] TIL - Day 02 Day 02 🔖 오늘 읽은 범위 : 1장 깨끗한 코드 (~p.15) 😃 책에서 기억하고 싶은 내용 우리 모두는 대충 짠 프로그램이 돌아간다는 사살에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가 yong-nyong.tistory.com 2. 내용..