무엇이 잘못된다면 이를 바로 잡을 책임은 프로그래머에게 달려 있습니다. 그렇기에 깨끗한 코드와 오류 처리는 밀접한 관련이 있습니다. 하지만 오류 처리로 인해 중요한 로직이 가려지게 된다면 이는 제대로 된 오류 처리라 부를 수 없습니다. 이번 장을 통해 우아하고 고급스럽게 오류 처리하는 방법과 고려 사항에 대해 정리해보고자 합니다. 오류 처리를 생각했을 때 바로 떠오르는 방법들도 있습니다. 오류 코드보다 예외를 사용하라 Try-Catch-Finally 문부터 작성하라 예외에 의미를 제공하라 미확인 예외를 사용하라 확인된 예외는 컴파일 단계에서 확인되며 반드시 처리되어야 하는 예외입니다. 미확인 예외는 런타임 시 확인되며 명시적인 처리를 강제하지 않는 예외입니다. 확인된 예외는 안정적인 소프트웨어를 위해 사..
객체지향 프로그래밍을 한다면 객체를 객체답게 볼 수 있어야 합니다. 또한 원하는 기능을 개발하기 위해 올바른 자료구조를 선택할 수 있어야 합니다. 이번 장을 통해 객체와 자료 구조에 대해 조금 더 다가가 보고자 합니다. 자료 추상화 public class Point { private double x; private double y; public double getX() { return this.x; } public double getY() { return this.y; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } } 단순히 필드를 드러내지 않는다고 해서 추상화가 이루어진 것은 아닙니다. 위의 ..
깔끔하고 일관적이고 꼼꼼하고 감탄하고 탄복하고 놀라게 만드는 코드를 작성하고 싶습니다. 프로그래머라면 프로그래머가 되고 싶다면 코드를 작성하는 규칙을 정하고 규칙을 착실하게 따라야 합니다. 그러기 위해서는 규칙을 정하는 것이 필요하고 규칙을 정하는 것에도 많은 시간을 투자해야 합니다. 위의 사진은 실제로 저희 개발팀이 팀 단위 프로젝트를 시작하기 전 지켜야 할 규칙과 설명을 정리해둔 노션 페이지입니다. 규칙을 잘 정리해두었기에 프로젝트를 진행하면서 방향을 잃지 않고 성공적으로 프로젝트를 마무리할 수 있었다고 생각합니다. 코드 형식은 매우 중요하고 의사소통의 일환입니다. 기존 코드가 변경되어 사라질 수는 있어도 코드 형식과 규율은 사라지지 않습니다. 이번 장을 통해 원활한 소통을 장려하는 코드 형식을 알아..
코드를 작성할 때 항상 주석에 대해 고민하곤 합니다. 프로그램 코드가 잘 짜여 있다면 주석이 필요하지 않다고 생각하고 있기 때문입니다. 이번 장을 읽으면서 항상 고민이었던 주석에 대해 깊게 알아가고자 합니다. 잘 작성된 주석은 어느 정보보다 유용합니다. 하지만 때로는 실패를 만회하기 위해 주석을 사용합니다. 필자는 주석을 사용했을 때 실패를 의미한다고 말하고 있습니다. 주석은 시간이 지날수록 필요 없는 정보가 되어갑니다. 코드는 언제나 변화에 열려있고, 계속해서 변화는 발생합니다. 하지만 주석까지 프로그래머가 유지보수하기에는 현실적으로 불가능합니다. 그 시간에 조금 더 좋은 코드를 위한 생각에 투자하는 것이 현명합니다. 진실은 코드에만 존재합니다. 우리는 주석을 가능한 줄이도록 꾸준히 노력해야 합니다. ..
어떤 프로그램이든 가장 기본적인 단위는 함수입니다. 이번 장에서는 함수를 만드는 법을 소개하고 있습니다. 작게 만들어라! 장황한 함수보다는 작고 간결하고 명확한 함수가 좋은 것은 모두가 알고 있는 사실입니다. 작은 함수는 어떻게 만들 수 있을까요? 블록과 들여쓰기를 활용합니다. if/else 문, while 문 등에 들어가는 블록에는 적절한 이름을 가진 함수를 배치하여 한 줄로 생성하도록 합니다. 중첩 구조가 생길수록 함수가 커지기 때문에 들여쓰기 수준도 1단에서 2단을 넘어서면 안 됩니다. 그래야만 이해하기 쉽고 가독성 높은 함수를 생성할 수 있습니다. for 문 안에서 발생하는 동작을 하나의 함수로 바꿔보도록 하겠습니다. 다음과 같이 바꾸게 되었더니 함수 자체도 간결해지고 역할도 명확해졌음을 느끼게 ..