[Good Code Bad Code] 코드를 오용하기 어렵게 만들라-1
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.201~213)를 읽고 정리한 글입니다. 불변 객체로 만드는 것을 고려하라 객체가 불변하다는 것은 객체가 생성된 후에 상태를 바꿀 수 없다는 뜻이다.  가변 객체는 아래와 같은 문제를 일으킬 수 있다.가변 객체는 추론하기 어렵다.가변 객체는 다중 스레드에서 문제가 발생할 수 있다.가변 클래스는 오용하기 쉽다.클래스는 일반적으로 세터(setter) 함수를 제공하여 가변적으로 만들 수 있다. 세터가 있는 클래스는 가변성이 있기 때문에, 해당 인스턴스를 전달받은 모든 코드가 객체를 변경할 수 있으며, 이 과정에서 오용될 위험이 있다. 해결책: 객체를 생성할 때만 값을 할당하라클래스는 객체 생성 시 모든 값을 제공하고 이후 변경을 허용하지 않으면 ..
[Good Code Bad Code] 예측 가능한 코드를 작성해라-4
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.186~199)를 읽고 정리한 글입니다. 오해를 일으키는 함수는 작성하지 말라코드 계약에서 명확하지 않은 표현은 누락된 것보다 더 큰 문제를 일으킬 수 있다. 중요한 입력이 누락되었을 때 아무 동작도 하지 않는다면, 호출자는 예상치 못한 결과에 놀랄 수 있다. 예를 들어, 매개변수가 없어도 호출할 수 있으며, 매개변수가 없을 경우 아무 작업도 수행하지 않는 함수는 함수의 동작에 대해 오해를 유발할 수 있다. 또한, 특정 매개변수가 null을 허용하고 null일 때 아무 동작도 하지 않는 로직이 있을 경우, 호출 측에서는 null 체크를 생략할 수 있어 편리하지만, 이는 함수의 동작 방식에 대한 혼란을 초래할 수 있다. 따라서, 중요한 입력은..
[Good Code Bad Code] 예측 가능한 코드를 작성해라-3
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.177~186)를 읽고 정리한 글입니다. 예상치 못한 부수 효과를 피하라부수 효과(Side Effect)란?어떤 함수의 호출이 함수 외부에 초래한 상태 변화를 의미한다. 함수가 반환하는 값 외에 다른 효과가 있다면 이는 부수 효과가 있는 것이다. 부수 효과의 유형사용자에게 출력 표시파일이나 데이터베이스에 무언가 저장다른 시스템을 호출하여 네트워크 트래픽 발생캐시 업데이트 혹은 무효화부수 효과는 소프트웨어 작성 시 불가피한 부분이다. 부수 효과가 예상되고 코드를 호출한 쪽에서 그것을 원한다면 괜찮지만, 부수 효과가 예상되지 않을 경우 놀라움을 유발하고 버그로 이어질 수 있다. 부수 효과를 피하는 방법으로 클래스를 불가변으로 만들어 부수 효과를..
[Good Code Bad Code] 예측 가능한 코드를 작성해라-2
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.169~176)를 읽고 정리한 글입니다. 널 객체 패턴을 적절히 사용해라값을 얻을 수 없을 때 널값이나 빈 옵셔널을 반환하는 대신 널 객체 패턴을 사용할 수 있다. 그 이유는 널값을 반환하는 대신 유효한 값이 반한 되어 그 이후에 실행되는 로직에서 널값으로 인해 시스템에 피해가 가지 않도록 하기 위함이다. 널 객체 패턴의 가장 간단한 형태는 빈 문자열이나 빈 리스트를 반환하고, 정교한 형태로는 모든 멤버 함수가 아무 일도 하지 않고 기본값을 반환하는 클래스를 구현하는 것이다. 빈 컬렉션을 반환하면 코드가 개선될 수 있다.함수가 컬렉션을 반환할 때, 반환할 요소가 없다는 이유로 컬렉션 대신 null을 반환하면, 호출 측에서 매번 null 여부..
[Good Code, Bad Code] 가독성이 높은 코드를 작성하라(마무리) /예측 가능한 코드를 작성하라 -1
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.157~168)를 읽고 정리한 글입니다. 프로그래밍 언어의 새로운 기능을 적절히 사용하라프로그래밍 언어의 새로운 기능은 개발자들이 신중하게 고민한 결과물이므로, 이를 적극 활용하면 코드의 가독성과 견고성을 높일 수 있다. 따라서 새로운 기능이 생겼을 때, 해당 기능을 어떻게 적용할 수 있을지 고민해봐야 한다. 언어가 제공하는 기능을 사용하면 코드가 최적화되어 효율적이고 버그가 없을 가능성이 커지게 된다. 그러나 새로운 기능을 맹목적으로 도입하는 것은 바람직하지 않다. 기능의 이점이 명확하더라도, 유지보수 측면에서 팀원들이 이를 충분히 이해하고 있는지 고려해야 한다. 또한, 해당 기능이 문제 해결에 적합한지 신중히 판단해야 한다.가독성을 높이..
[Good Code Bad Code] 가독성 높은 코드를 작성하라-3
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.146~157)를 읽고 정리한 글입니다. 설정되지 않은 값을 사용하지 말라하드 코드로 작성될 값이 필요한 경우가 존재한다. 예를 들어 단위 변환이나 계산식에 필요한 계수, 작업 재시도 최대 횟수와 같은 조정 가능한 파라미터 값 그리고 템플릿을 나타내는 문자열 등이 있다. 처음 보는 개발자는 그 의미를 쉽게 이해하기 어렵다. 코드에 설명되지 않은 값이 포함되면 혼란을 초래하고, 이는 버그로 이어질 수 있다. 따라서 해당 값이 의미하는 바를 다른 개발자들이 명확하게 이해할 수 있도록 해야 한다. 이를 위한 방법은 다음과 같다.잘 명명된 상수를 사용하라잘 명명된 함수를 사용하라 (상수를 반환하는 공급자 함수 / 변환을 수행하는 헬퍼 함수)상수나 ..
가독성 높은 코드를 작성하라-2
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.134~146)를 읽고 정리한 글입니다. 일관된 코딩 스타일을 고수하라잘 읽히는 문장을 쓰기 위해 따라야 할 문체에 관한 지침들도 있다. 코드도 마찬가지다. 일관적이지 않은 코딩 스타일은 혼동을 일으킬 수 있다.예를 들어 클래스 이름은 일반적으로 첫 글자를 대문자로 작성되는 반면 변수 이름은 소문자로 시작한다. 만약 이것을 지키지 않게 된다면 예상치 못한 버그가 발생할 수 있다. 스타일 가이드를 채택하고 따라야 한다일관된 코딩 스타일을 가지게 된다면 가독성이 좋아지고, 팀 간의 오해가 줄어들고 버그가 사라진다. 코딩 스타일이 다루는 측면명명법언어의 특정 기능 사용코드 들여쓰기패키지 & 디렉터리 구조화코드 문서화 방법 등.린터(linter)스..
가독성 높은 코드를 작성하라-1
·
📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.123~134)를 읽고 정리한 글입니다. 서술형 명칭 사용클래스, 함수, 변수의 이름은 자체적으로 의미를 명확히 전달할 수 있도록 직관적으로 지어야 한다.  서술적이지 않은 이름은 코드의 가독성을 떨어뜨린다. 이를 보완하기 위해 주석이나 문서를 추가할 수 있지만, 완전한 해결책이 되지는 않는다. 반면, 서술적인 이름을 사용하면 코드가 직관적으로 이해하기 쉬워지고, 불필요한 주석이나 문서를 줄여 코드가 더욱 깔끔해진다. 주석문의 적절한 사용클래스와 같이 큰 단위의 코드가 무엇을 하는지 요약하는 높은 수준에서의 주석문은 유용하다. 그러나 하위 수준에서 한 줄 한 줄 코드가 무엇을 하는지 설명하는 주석문은 가독성을 높이기 위한 효과적인 방법이 아..