본문 바로가기

개발 팁8

클린 코드 정리 8 - 경계 8장에서는 라이브러리, 오픈 소스 등을 활용할 때 기존 코드와의 경계를 나누는 법에 대해 알아봅니다. 들어가며 특정 시스템의 모든 소프트웨어를 개발하는 경우는 드물다. 패키지를 사기도 하며 오픈 소스를 이용하기도 하고, 때로는 사내 다른 팀이 제공하는 모듈을 사용하기도 한다. 이 장에서는 이 외부 코드들을 깔끔하게 통합시키기 위해, 소프트웨어 경계를 지정하는 기법에 대해 알아본다. 외부 코드 사용하기 인터페이스 제공자는 범용성을 최대한 넓히려 애쓰고, 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 이로 인해 시스템 경계에서 문제가 생길 여지가 많다. 예를 들어 java.util.Map은 인터페이스로 아래와 같이 다양한 기능들을 지원한다. - clear() void - containsKey(Obje.. 2022. 9. 26.
클린 코드 정리 7 - 오류 처리 7장에서는 오류를 적절하게 처리하는 방법에 대해 알아봅니다. 들어가며 여기저기 흩어진 오류 처리 코드는, 실제 코드의 논리를 이해하기 어렵게 만든다. 이 장은 오류를 '우아하게' 처리하는 방법들을 안내한다. 오류 코드보다 예외를 사용하라 예전에는 예외를 지원하지 않는 프로그래밍 언어가 많았지만, 현재는 대다수의 언어들이 예외를 지원한다. 오류 플래그나 오류 코드를 반환하는 것은, 함수를 호출하면 바로 오류를 확인해야 한다. 그런데 이 단계는 잊어버리기 쉽다. 반면 예외를 던지는 경우, 논리와 오류 처리 코드를 구분할 수 있어 호출자 코드를 깔끔하게 가져갈 수 있다. 참고: Golang의 경우 try-catch-finally 대신 에러를 리턴하는 형태로 예외 처리를 한다. 이유는 1) 예외 처리가 느리고 .. 2022. 9. 26.
클린 코드 정리 6 - 객체와 자료 구조 6장에서는 객체와 자료 구조에 대해 알아보는데, 개인적으로 굉장히 중요하다고 생각하는 내용이 담겨있습니다. 정말 많은 개발자들이 기계적으로 private한 변수를 선언하고, getter와 setter를 작성하는 습관이 있는데, 이 장의 내용을 통해 어떤 구조가 좋은 구조인지를 고민해 보면 좋을 것 같습니다. 들어가며 변수를 private으로 정의하는 이유는, 남들이 변수에 의존하지 않게 하기 위함이다. 그런데 왜 수많은 개발자들은 getter와 setter를 당연하게 public으로 만들어 외부에 노출하는가? 객체와 자료구조 객체는 추상화 뒤로 자료를 숨기고, 자료를 다루는 함수만 공개한다. 기존 함수를 변경하지 않으면서 새 클래스를 추가하기는 쉽지만, 새로운 함수를 추가하기 어렵다. 자료 구조는 자료를.. 2022. 9. 23.
클린 코드 정리 5 - 형식 맞추기 5장에서는 협업을 위해 꼭 필요한, 좋은 코드 형식에 관해 알아봅시다. 들어가며 개발자라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 코드 형식을 맞추기 위해 규칙을 정하고 팀원 모두가 그 규칙을 따라야 한다. 또한 필요한 경우 규칙을 자동 적용하는 도구를 활용한다. 코드 형식은 의사소통의 일환으로, 구현 스타일과 가독성 수준은 유지보수의 용이성과 확장성에 영향을 미치기 때문에 중요하다. 원활한 소통을 위한 형식 세로 길이 소스 코드의 길이는 얼마가 적당할까? 책에 따르면 유명하고 규모가 큰 Java 프로젝트 7가지를 조사하였는데, 각 파일의 소스 코드는 대다수가 200줄 미만이었다. FitNesse 프로젝트의 경우, 평균 크기는 약 65줄 정도였다. 이 정도의 길이의 개별 파일들 만으로도 커다란 시스템들을.. 2022. 9. 23.