[Clean Code] 클린 코드 #Day 9 / 오류 처리

ChilihC·2022년 3월 4일
0

Clean Code

목록 보기
10/13
post-thumbnail

TIL(Today I Learned) 🧑🏻‍💻


7. 오류 처리


내용 정리 & 기억하고 싶은 내용

  • 오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. <p.130>

  • 오류 코드보다 예외를 사용하라. <p.131>

  • Try-Catch-Finally 문부터 작성하라. <p.132>

  • 미확인(unchecked) 예외를 사용하라. <p.133>

  • 예외에 의미를 제공하라. <p.135>

  • 호출자를 고려해 예외 클래스를 정의하라. <p.135>

  • 정상 흐름을 정의하라. <p.137>

  • null을 반환하지 마라. <p.138>

  • 매서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다. 많은 경우에 특수 사례 객체가 손쉬운 해결책이다.

  • null을 전달하지 마라. <p.140>

  • 대다수 프로그래밍 언어는 호출자가 실수로 넘기는 null을 적절히 처리하는 방법이 없다. 즉, 인수로 null이 넘어오면 코드에 문제가 있다는 말이다.

  • 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 크게 높아진다.<p.142>


생각 & 느낀점 📝

  • 오류 처리는 프로그래밍에서 빠질 수 없는 과정이다. 잘 의도된 코드도 사용자에 따라 오류를 만들어 낼 수 있기 마련이다.

  • 확인된 예외와 확인되지 않은 예외에 대한 내용은 상당히 흥미로웠다. 확인된 예외를 사용하던 시절부터 이를 사용함으로써 발생할 수 있는 OCP(Open Closed Principle) 위반과 캡슐화(Encapsulation)이 깨지는 것과 같은 문제들은 예외를 어떻게 처리해야 좋은지 방향성을 제공해주는 것 같았다.

  • 정상 흐름을 정의하는 것과 null을 예외 처리에서 어떻게 바라봐야 하는지 등은 평소에 막연했던 개념을 확실하게 잡아 준 거 같다. 예외를 던지는 것은 중단을 불러온다. 가능하면 특수 사례 패턴을 이용해 코드를 좀 더 간결하게 리팩토링하자.

  • null이 어떤 문제를 불러일으키는지 알아봤다. null을 반환하거나 null을 전달했을때 발생하는 문제는 심각했다. 편의를 위해서 나 또한 프로그래밍에서 null을 처리하는 조건문을 상당히 많이 사용하였는데 이번 기회에 이것들을 고쳐보면 좋을 거 같다.

  • 주로 사용하는 언어가 JS이다보니 JAVA의 예시들이 어색하게 느껴지는 경우도 많고 실제로 적용하기가 어렵게 느껴지는 경우가 많았다. 하지만 핵심 개념은 분명하고 이는 전 프로그래밍 코드에 적용될 수 있는 내용들일 것이다. 회차를 거듭해가고 계속해서 프로그래밍을 하면서 이것들을 실제로 적용하려고 노력하고 있다. 기회가 되면 아니 나중에는 반드시 이를 기반으로 리팩토링에 관한 글을 작성할 것이다.


새로 용어 정리

  • 트랜잭션(transaction) : 트랜잭션이란 데이터베이스의 상태를 변경하는 논리적 작업 단위입니다. 실제로 데이터베이스에 장애가 발생했을 때 데이터를 복구하는 작업의 단위로 사용됩니다.

  • 캡슐화(Encapsulation) : 객체지향프로그래밍에서의 중요한 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것이며, 데이터를 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한 수식자의 기능을 제공한다.

  • 특수 사례 패턴(Special Case Pattern) : 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식. 클래스나 객체가 예외적인 상황을 캡슐화해서 처리하므로 클라이언트 코드가 예외적인 상황을 처리할 필요가 없어진다.


참고 문헌


profile
developer junior

0개의 댓글