전체 글
클린 코드(Clean code) Day 7
🔖 오늘 읽은 범위 : 7장 오류처리 🙂 책에서 기억하고 싶은 내용을 써보세요. 일일히 다양한 유형의 오류를 점검하는 방식 보다는 오류 발생시 예외를 던지자. Try-Catch-Finally 문을 사용하자. 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉬워진다. null을 반환하는것을 피하자. 사용하려는 외부 API가 null을 반환한다면 *감싸기 메서드를 구현해 예외를 던지거나 특수 사례 객체를 반환하는 방식을 고려한다. *감싸기 메서드 자바에서는 다양한 유형의 에러가 발생한다. 이 모든 유형의 에러를 잡기위해서는 catch문이 늘어나게된..
클린 코드(Clean code) Day 6
🔖오늘 읽은 범위 : 6장 객체와 자료구조 🙂 책에서 기억하고 싶은 내용을 써보세요. 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. 어떤 시스템을 구현할때 , 새로운 자료타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른경우로 새로운 동작을 추가하는 유연성이 필요하면 자료구조와 절차적인 코드가 더 적합하다. 🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요. Javascript를 주언어로 사용하면서 객체와 자료구조를 명확하게 구분하여 사용해야겠다는 생각을 해본적이 없었다. 책의 예시를 통해 객체의 이점과 자료구조의 이점을 이해할 수 있었지만, 정말 일차원적인 이해일뿐 이 지식을 실제로 어떤식으로 적용..
클린 코드(Clean code) Day 5
🔖오늘 읽은 범위 : 5장 코드 형식 🙂 책에서 기억하고 싶은 내용을 써보세요. 코드 형식은 의사소통의 일환이다. 1. 하나의 파일에 200줄 이하, 한 줄에 코드는 120자가 적당하다. 2. 개념은 빈 행으로 분리하자. 생각 사이는 빈 행을 넣어 분리해야 마땅하다. 빈 행은 새로운 개념을 시작한다는 시각적 단서다. 3. 서로 밀접한 개념은 가까이 두자. 변수는 사용하는 위치에 최대한 가까이 선언하기. 한 함수가 다른 함수를 호출한다면 두 함수를 가까이, 가능하다면 호출하는 함수를 먼저 배치 ( 자연스럽게 고차원에서 저차원으로 내려가는 코드 구조가 된다. 하지만 javascript로 코딩 시 보통 함수 표현식을 많이 사용하기 때문에 호출하는 함수를 먼저 배치하는 것이 불가능하지. ) 유사한 개념을 가진 ..
클린 코드(Clean code) Day 4
🔖오늘 읽은 범위 : 4장 주석 🙂 책에서 기억하고 싶은 내용을 써보세요. 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 함수나 변수로 표현할 수 있다면 주석을 달지 말자. // 작원에게 복지 혜택을 받을 자격이 있는지 검사 if(employee.flags && employee.age > 65) 위의 코드는 충분히 주석 없이도 표현이 가능하다. if(employee.isEligibleForFullBenefits()) 이렇게. 그럼에도 괜찮은 주석 정보를 제공하는 주석 // HH:mm:ss, MM dd, yyyy 형식 Pattern timeMatcher = Pattern.compile( "\\d*:\\d*:\\d*, \\w* \\d*, \\d*"); 의도를 설명하는 ..
클린 코드(Clean code) Day 3
🔖오늘 읽은 범위 : 3장 함수 🙂 책에서 기억하고 싶은 내용을 써보세요. 1. 함수는 작으면 작을수록 좋다. 각 함수가 이야기 하나를 표현하도록 하자. 중첩 구조가 생길 만큼 함수가 커져서는 안 된다. 2. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한가지만을 해야한다. 어쨌거나 우리가 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서가 아니던가. ❗️함수가 '한 가지만' 하는지 판단하는 법 같은 추상화 수준*을 가진 코드들로 이루어져 있는지 각 코드를 단순히 다른 표현이 아니라 의미 있는 이름으로 나눌 수 있는지 ( 따라서, 객체 상태를 변경하는 것과 객체 정보를 반환하는 로직은 분리되어야 한다. ) 💡추상화 수준*이란 일단 ‘추상화’란 구체..