📖 책 내용 정리 🔶 8장 경계 1️⃣ 외부 코드 사용하기 프레임워크 제공자는 적용성을 최대한 넓히려고하고 사용자는 자신의 요구에 집중하는 인터페이스를 바라기 때문에 시스템 경계에서 문제가 생길 소지가 많다. 예를들어 Map의 경우 기능성과 유연성은 유용하지만 위험이 크다 → map을 만들어 넘기는 경우, 넘기는 쪽에서 Map을 삭제할 수 있다. → 사용자가 마음대로 어떤 객체 유형이든 추가 할 수 있다. (코드는 동작하지만 코드가 깨끗하지 않음) → 사용자에게 필요하지 않은 기능까지 제공한다. → map 인터페이스가 변할 경우 수정할 코드가 많이 생긴다. Map과 같은 경계 인터페이스를 이용할 때에는 이를 이용하는 클래스나 계열 밖으로 노출되지 않도록 주의해야한다. 2️⃣ 경계 살피고 익히기 외부코드는..
📖 책 내용 정리 🔶 7장 오류처리 1️⃣ 오류코드보다 예외를 사용하라 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 프로그래머에게 있다. if else 문을 통해 오류 코드를 반환하면 호출자 코드가 복잡해진다. → 함수는 호출한 즉시 오류를 확인해야 하기 때문에 오류가 발생하면 예외를 던지는 편이 좋다. 예외를 사용하게 되면 호출자 코드가 논리 오류 처리 코드와 섞이지 않아 깔끔해진다. 2️⃣ Try-Catch-Finally 문 부터 작성하라 try 블록에서 어떤 일이 생기든 catch 블록은 프로그램 상태를 일관성 있게 유지해야한다. 그러므로 예외가 발생할 코드를 짤 때에는 try-catch-finally 문으로 시작하는 편이 좋다. → try 블록에서 어떤 일이 생기든 호출자가..
📖 책 내용 정리 🔶 6장 객체와 자료 구조 1️⃣ 자료 추상화 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지않는다. 2️⃣ 자료/객체 비대칭 객체지향 코드에서 어려운 변경은 절차코드에서 쉽고 절차적인 코드에서 어려운 변경은 객체지향 코드에서 쉽다. 단순한 자료 구조와 절차적인 코드가 가장 적합한 상황도 있다. 3️⃣ 디미터 법칙 자신이 조작하는 객체의 속사정을 몰라야한다. ◾ 기차 충돌 아래와 같은 방식은 조잡하다 여겨지기 때문에 코드를 나누어 작성한다. final String output = a.getOptions().getList().getPath(); ◾ 잡종 구조 절반은 객체 절반은 자료구조인 구조인 경우 양쪽 단점만 ..
📖 책 내용 정리 🔶 5장 형식 맞추기 1️⃣ 형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 구현 스타일과가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 2️⃣ 적절한 행 길이를 유지하라 200줄 미만으로도 큰 시스템을 구축할 수 있다. ◾ 신문 기사처럼 작성하라 이름은 간단하면서 설명이 가능하게 짓고 이름만으로도 올바른 모듈을 살펴보고 있는지 아닌지 판단할 수 있도록 한다. 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명하고 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. ◾ 개념은 빈 행으로 분리하라 행은 수식이나 절을 나타내고 일련의 행 묶음은 완결된 생각 하나를 표현한다. 생각 사이에는 빈행을 넣어 분리한다. ◾ 세로 밀집도..
📖 책 내용 정리 🔶 4장 주석 1️⃣ 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문. 코드를 깔끔하게 정리하고 표현력을 강화하여 주석이 필요없는 방향으로 노력해야 함. 2️⃣ 코드로 의도를 표현하라 코드만으로 의도를 설명하기 어려운 경우도 있지만, 코드로 그 의도를 표현 할 수 있다면 그렇게 하는 것이 좋다. // 성과급을 받을 수 있는 대상자 if(employoee.stauts == "Working" && employee.years) // 위의 코드 보다 if(employee.isBonus) 3️⃣ 좋은 주석 ◾ 법적인 주석 법적인 이유로 각 소스파일 첫머리에 주석으로 들어가는 저작권/소유권 정보는 필요하고 타당하다. FitNess에서 모든 소스..
📖 책 내용 정리 🔶 3장 함수 1️⃣ 작게 만들어라 어떤 프로그램이든 가장 기본적인 단위가 함수이다. if문, else문, while문 등에 들어가는 블록은 한줄이어야한다. (함수의 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다.) 2️⃣ 한가지만해라 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 단순히 다른 표현이 아니라 의미있는 이름으로 다른 함수를 추출 할 수 있다면 그 함수는 여러가지 작업을 하는 셈이다. 한 가지 작업만 하는 함수는 자연스럽게 섹션으로 나누기 어렵다. 3️⃣ 함수당 추상화 수준은 하나로 함수가 확실히 한가지 작업만 수행하려면 함수 내 모든 문장의 추상화 수준이 동일 해야한다. → 근본 개념인지 세부사항인지 구분할 수 있도록. ◾ 위에서 아래로 코드..