Recent Posts
Recent Comments
Tags
- cleancode
- FOUR GRIT
- 구글애널리틱스
- Clean Code
- 깃헙 클론 에러
- 노개북
- 개발자북클럽
- uxui
- 클린코드
- react ga
- 구글 애널리틱스
- github
- 존 야블론스키
- Google Analytics
- data management
- React
- react ga4
- law of ux
- Data Driven UX
- 노마드코더
- Jon Yablonski
- Day.js
- Day js
- github clone
- devbookclub
- NomadCoders
- UX
- nomad coders
- 포그리트
- react scripts
Link
TURI BLOG
[Nomad Coders Challenge] Clean Code - Assignment #10 본문
📍 It is part of a book club challenge on a programming learning website called Nomad Coders. The challenge is to demonstrate what I have learned after reading Clean Code by Robert C. Martin.
📝 It will consist of the following sections over three weeks: the range of reading, the top quotes from the book, my review, and remaining questions.
💻 I plan to read Clean Code in JavaScript and Python, referring to the GitHub repositories shared by Nomad Coders with the challengers.
Assignment #10
- 📚 Chapter 7. Error Handling (Michael Feathers)
- ✔️ TIL
- Top quotes from the book
- Case study in JavaScript
- Remaining questions
📝 Top quotes from the book
- 오류 처리는 프로그램에 반드시 필요한 요소 중 하나. 깨끗하고 튼튼한 코드를 위한 오류 처리 기법과 고려 사항.
- 예외 사용: 에러 발생 시 -> 예외
- Try-Catch-Finally 문부터 작성:
- try 블록에서 무슨일이 생기든 catch블록은 프로그램 상태를 일관성 있게 유지할 것이기 때문에. try-catch 구조로 범위를 정의했으므로 TDD(Test-driven deveploment)를 사용해 필요한 나머지 논리를 추가한다. 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다.
- 예외에 의미 제공: 에러 발생 원인 및 위치 확인 쉽도록 -> 예외의 전후 상황 더할 것 - 에러 연산 이름, 에러 유형 등의 정보
- 호출자를 고려한 예외 클래스 정의
- 에러 분류 방법
- 에러 발생 위치로 분류 - 에러가 발생한 컴포넌트로 분류
- 에러 유형으로 분류 - 디바이스 실패, 네트워크 실패, 프로그래밍 오류 등으로 분류
- 에러 정의 시, 에러를 잡아내는 방법이 중요
- LocalPort 클래스처럼 ACMEPort를 감싸는 클래스는 매우 유용하다. 실제로 외부 API를 사용할 때는 감싸기(wrapper) 기법이 최선이다. 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에 의존성이 크게 줄어든다. 나중에 다른 라이브러리로 갈아타도 비용이 적다. 또한 감싸기 클래스에서 외부 API를 호출하는 대신 테스트 코드를 넣어주는 방법으로 -> 프로그램 테스트에도 용이
- 에러 분류 방법
- 정상흐름 정의
-
- Special Case Pattern(특수 사례 패턴) : 클래를 만들거나 객체를 조작해 특수 사례를 처리하는 방식 -> 클라이언트 코드가 예외적 상황 처리 필요X, 클래스나 객체가 예외적인 상황을 캡슐화해서 처리하므로.
// BAD try { MealExpenses expenses = expenseReportDAO.getMeals(employee.getID()); m_total += expense.getTotal(); } catch (MealExpensesNotFound e) { m_total += getMealPerDiem(); } // GOOD MealExpenses expenses = expenseReportDAO.getMeals(employee.getID()); m_total += expenses.getTotal(); public class PerDiemMealExpenses implements MealExpenses { public int getTotal() { // Returns a default daily meal expense } }
-
🕵 Case study in JavaScript based on @ryanmcdermott 's Clean Code JavaScript GitHub repository
🔍 Remaining questions
- Try-Catch-Finally
- TDD - 'try-catch 구조로 범위를 정의했으므로 TDD를 사용해 필요한 나머지 논리를 추가한다.'
- OCP(Open Closed Principle)
- Special Case Pattern(특수 사례 패턴) : 클래를 만들거나 객체를 조작해 특수 사례를 처리하는 방식
'Nomad Coders' 카테고리의 다른 글
[Nomad Coders Challenge] Clean Code - Assignment #13 (2) | 2024.12.15 |
---|---|
[Nomad Coders Challenge] Clean Code - Assignment #11 (0) | 2024.12.15 |
[Nomad Coders Challenge] Clean Code - Assignment #08 (2) | 2024.12.08 |
[Nomad Coders Challenge] Clean Code - Assignment #07 (0) | 2024.12.07 |
[Nomad Coders Challenge] Clean Code - Assignment #06 (0) | 2024.12.06 |
Comments