본문 바로가기

IT 공부/객체지향 설계 공부16

하이브리드 커플링과 오브젝트 1. 변수를 한 가지 목적으로만 사용하라. 책의 제 10장. 변수 사용 시 고려할 사항들에는 다음과 같은 조언이 있다. 변수가 한 가지 이상의 목적으로 사용되는 것은 그 변수를 만든 개발자는 몰라도, 그 변수를 읽고 코드를 이해해야 하는 다른 개발자에게는 추론을 강제한다는 점에서 나쁜 코드다. 변수를 한 가지 이상의 목적으로 사용하는 사례 중 하나는 "변수의 값에 숨은 의미를 부여하는 습관"이다. 이를 "하이브리드 커플링"이라고 부른다. 예를 들면 다음과 같다. pageCount 변수의 값은 출력된 페이지 수를 나타낸다. 만약 이 값이 -1이면 오류가 발생한 것이다. memberID는 회원의 식별 고유번호를 나타낸다. 그런데 이 값이 5000 이상이면 연체된 계정이다. 1000 이하이면 관리 계정이다. .. 2023. 12. 7.
코드 재사용과 상속에 대해 처음부터 검증된 교과서를 가지고 배워서 그런지, 상속에 대한 오해를 바로잡는 문구를 보면 오히려 이해가 가지 않는다. 많은 교과서에서 상속을 사용할 때, 코드의 재사용을 위해서 상속을 사용하지 말라고 주의한다. 하지만 나는 이게 오히려 무슨 말인지 잘 모르겠다... 코드를 재사용하는데 왜 상속이라는 번거로운 걸 하는거지..? 싶다. 여하튼, 상속을 설명할 때 계층화의 관점에서 설명하는 예시가 많다. 하지만 계층화보다는 나는 "부모클래스와 자식클래스가 서로 동일한 타입으로 간주된다"라는 설명이 조금 더 와닿는다. 기본적으로 상속의 가장 큰 특징 중 하나는 부모클래스의 public 인터페이스를 자식도 그대로 외부에 드러낸다는 점이다. 위 사항이 정말 중요한데, 왜냐하면 코드의 재사용을 위해서 상속을 한다는 .. 2023. 12. 7.
오브젝트(조영호) - 1장 객체, 설계 정리 및 리뷰 ※ 1장은 아주 간단한 극장 티켓 예매 코드를 통해 객체지향이 궁극적으로 무엇을 지향하는지 논의한다. ※ 코드는 필요하다 싶은 부분만 적었다. 코드는 책에 있으니 책을 보자. ※ 여기서는 그냥 내가 깨달은 사실, 새롭게 알게 된 사실, 정리할 만한 가치가 있는 지식만을 정리했다. ※ 책을 쉽게 읽을 수 있도록 보조 해석 자료를 만든다는 관점으로 포스팅했다. 따라서 책을 같이 봐야 한다. ※ 보조 자료에 가깝기 때문에 포스팅 제목에 "리뷰"라는 말을 붙였다. 1. 티켓 판매 애플리케이션 구현의 특징과 문제점 책에서 다소 복잡하고 장황하게 티켓 판매 애플리케이션을 구현하고 있다. 그러나 자세히 그 과정을 뜯어보면 구현 기법은 아래와 같은 단순한 규칙에 따르고 있다는 것을 알 수 있다. 도메인의 개념에서 클래.. 2023. 12. 6.
코드 컴플리트 8장 - 방어적 프로그래밍 요약 8장은 방어적 프로그래밍을 다룬다. 방어적 프로그래밍이란 마치 고속도로에서 운전할 때 앞 차량과 안전 거리를 유지하는 것과 비슷하다. 설령 다른 모듈에 의해 야기된 잘못이라도 루틴이 문제 없이 동작하도록 대처하는 프로그래밍을 말한다. 즉, 다른 출처의 실수로부터 자신의 로직을 보호하는 것이다. 1. 잘못된 입력으로부터 보호 소프트웨어 공학에서는 "Garbage In, Garbage Out" 이라는 유명한 말이 있다. 잘못된 데이터가 입력되면 잘못된 결과가 초래된다는 뜻이다. 그러나 쓰레기가 들어왔다고 아무것도 하지 않고 쓰레기를 뱉어내어선 안 된다. 쓰레기가 입력되면 그에 맞는 대처를 해야 좋은 소프트웨어다. 1-1. 외부로부터 들어오는 모든 데이터의 값을 검사하라. 파일, 사용자 입력, 네트워크 통신,.. 2023. 11. 23.