나를 기록하다
article thumbnail
[Java] 클래스 내의 public 변수와 getter 메서드의 대체 방법
Java 2023. 10. 25. 20:00

클래스 내의 public 변수 선언시 주의사항 우아한테크코스 프리코스를 진행하면서 사용자 클래스를 생성했는데, userNumbers를 static으로 선언하여 외부 클래스에서도 접근하여 볼, 스트라이크를 구하고 유효성 검사를 수행이 가능하도록 설계했다. 하지만 이때 경고 밑줄이 등장하면서 내가 잘못 설계한 두 가지 오류를 알려준다.하나씩 설명하겠다. Utility classes should not have public constructors 위 오류는 이전 발행 글에 기재하였다. static으로 선언하여 인스턴스를 생성하지 않고 바로 사용할 수 있도록 설계하였기에, 혹시 모를 실수를 방지하려면 설계 시 private 생성자를 이용하여 인스턴스 생성을 막아둬야 한다. 자세한 내용은 아래 글을 참고하기 바란..

article thumbnail
[TIL-41/231024] 우테코 프리코스, 빌더 패턴, 스트림, 정적 팩토리 메서드
TIL 2023. 10. 24. 23:00

우아한테크코스 - 프리코스 1주차 최근에 우아한테크코스의 프리코스를 진행하면서, 부족한 개념 보충과 리팩토링에 몰두하느라 TIL을 신경쓰지 못했다. 이럴 때 공부하는 내용이 많은 만큼 정리를 잘하여 TIL을 썼어야 했는데 반성 중이다. 프리코스를 참가하면서 정말 뛰어난 지원자들이 많다는 걸 새삼 느끼고 있다. 프리코스를 참여하는 인원들이 모인 디스코드 방이 있는데 서로 자유롭게 자료를 공유하고 토론을 하는 공간이다. 나도 공유를 해볼려 했는데 사람들이 올리는 양질의 자료를 보니 차마 내 블로그 글을 공유를 하지 못하였다. 이유는 나는 이제껏 공부하고 정리하여 블로그 포스팅을 하였지만, '내가 올린 내용들을 온전하게 이해했는가'를 스스로에게 질문했을 때, 답은 '아니오'이기 때문이다. 혼자서 공부하는 데 ..

article thumbnail
[Effective Java 3/E] 2. 생성자에 매개변수가 많다면 빌더를 고려하라
Review/Book 2023. 10. 24. 19:00

정적 팩토리와 생성자에 선택적 매개변수가 많을 때 적절히 대응하기 어렵다 정적 팩토리 메서드와 생성자의 공통된 제약 → 선택적 매개변수가 많을 때 적절히 대응하기 어려움 [예시] 식품 포장의 영양정보를 표현하는 클래스 영양정보 필수항목: 1회 내용량, 총 n회 제공량, 1회 제공량당 칼로리 등 선택항목: 총 지방, 트랜스지방, 포화지방, 콜레스테롤, 나트륨 등 → 대부분 제품은 이 선택 항목 중 대다수의 값이 0 → 프로그래머들은 이럴 때 점층적 생성자 패턴(telescoping constructor pattern)을 즐겨 사용했다. 점층적 생성자 패턴이란? 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자, ・・・ 형태로 선택 매개변..

article thumbnail
[Effective Java 3/E] 1. 생성자 대신 정적 팩토리 메서드를 고려하라
Review/Book 2023. 10. 23. 18:00

정적 팩토리 메서드(static factory method) public 생성자 - 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단 클래스는 생성자와 별도로 그 클래스의 인스턴스를 반환하는 정적 팩터리 메서드 제공 가능 [예시] boolean 기본 타입의 박싱 클래스(boxed class)인 Boolean에서 발췌한 간단한 예 기본 타입인 boolean에서 값을 받아 Boolean 객체 참조로 변환 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 여기서 나오는 정적 팩토리 메서드는 디자인 패턴에서의 팩토리 메서드(Factory Method)와 다르다. 클래스가 클라이언트에 public 생성자 대신..

article thumbnail
[객체지향의 사실과 오해] 7장. 함께 모으기
Review/Book 2023. 10. 15. 01:30

코드와 모델을 밀접하게 연관시키는 것은 코드에 의미를 부여하고 모델을 적절하게 한다. - 에릭 에반스 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점 개념 관점(Conceptual Perspective) 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 도메인은 사용자들이 관심을 가지고 있는 특정 분야나 주제를 말하며 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발 사용자가 도메인을 바라보는 관점을 반영 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심 명세 관점(Specification Perspective) 사용자의 영역인 도메인의 개념이 아니라 실제로 개발자의 영역인 소프트웨어 안에서 살아 숨쉬는 객체들의 책임에 초점 객체의 인터페이스를 바라보게 됨 프로그..

article thumbnail
[객체지향의 사실과 오해] 6장. 객체 지도
Review/Book 2023. 10. 13. 18:00

[예시] 여행 중 다른 마을로 이동해야 하는데 길을 모를 때 두 가지 방법 첫 번째, 지나가는 사람에게 마을까지 가는 길 묻기 "이 길을 따라 5km 정도 직진하면 강이 나온다. 강둑을 따라 남쪽으로 2km 이동하면 작은 야산이 나온다. 약수터 가는 길을 따라 산을 넘으면 마을이 나온다." 사람들이 올바른 길을 알려주고 지시를 올바르게 따른다면 원하는 마을로 이동 가능 일반적이지 않고 재사용이 불가능 강이나 산과 같은 랜드마크가 없다면 경로 설명에 어려움 설명만으로 경로 찾기 어려움 →기능적이고 해결지향적인 접근법 두 번째, 지도에 표시된 길을 따라가기 지도는 실세계의 지형을 기반으로 만들어진 추상화된 모델 길을 찾는 데 필요한 풍부한 컨텍스트 정보가 함축 길을 찾는 데 필요한 모든 정보가 지도 안에 포..

profile on loading

Loading...