본문 바로가기

두고두고 볼 것11

핵심 정리 다형성으로 인터페이스 구현한 구현체 받아서 로직 수행하도록,, 객체의 핵심은 기능을 제공하는 것이다. 요구사항에 따라 데이터를 사용하는 방법(로직)을 개발하는 것이 코딩인 것 같음. 캡슐화 : 기능을 제공하고 구현 상세를 감춘다 캘슐화를 통해 기능을 사용하는 코드에 영향을 주지 않고(or 최소화) 내부 구현을 변경할 수 있는 유연함 캡슐화는 data를 들고 있는 객체에서 해당 데이터를 사용하여 기능을 구현하도록 변경 가능한 것을 찾는 것도 방법이다. 캡슐화2의 사례와 비슷하게 다른 객체에서 데이터를 가져오고, 판단하고, 변경하는 기능의 코드는 데이터를 소유한 객체에 기능을 추가함으로써 통째로 캡슐화가 가능하다. 2023. 1. 19.
테스트 코드의 중요성 테스트 코드의 중요성 테스트 코드는 기능에 대한 불확실성을 감소시킬 수 있으며, 기존에 개발된 기능을 안전하게 보호해준다. ex : A 기능 개발 했는데, B 기능 문제 발생하는 경우 테스트 코드 작성은 개발 단계 초기에 문제 발견에 도움을 주기 때문에, 개발 시간을 단축! ex : 충분한 테스트 코드 없이 빠르게 배포하면 배포 후 문제가 발견되기 때문에 + 다른 부분에서 찾은 내용 1. 개발 과정에서 문제를 미리 발견할 수 있다. 2. 기능 추가와 리팩토링을 안심하고 할 수 있다. 3. 빠른 시간 내 코드의 동작 방싱과 결과를 확인할 수 있다. 4. 좋은 테스트 코드를 작성하려 하다보면, 자연스럽게 좋은 코드가 만들어 진다. 5. 잘 작성한 테스트는 문서 역할을 한다. (코드리뷰를 돕는다.) Spock.. 2022. 11. 13.
객체지향 설계 및 구현 예시 /** * 음식점에서 음식 주문하는 과정 구현 * 요구사항 * 객체지향 설계 및 구현 * 1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민 (해당 단계에서 전부 도출하는 것이 아니라 생각나는 부분까지만 도출함) * ㄴ 손님, 메뉴판, 돈까스/냉면/만두, 요리사, 요리 * 2. 객체들 간의 관계를 고민 * ㄴ 손님 ---- 메뉴판 * ㄴ 손님 ---- 요리사 * ㄴ 손님 ---- 요리 * 3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기 * ㄴ 손님 --- 손님 타입 * ㄴ 돈까스/냉면/만두 --- 요리 타입 * ㄴ 메뉴판 --- 메뉴판 타입 * ㄴ 메뉴 --- 메뉴 타입 * 4. 협력을 설계 * 5. 객체들을 포괄하는 타입에 적절한 책임을 할당 * 6. 구현하기기 * */ 2022. 11. 2.
일급 콜렉션 일급 콜렉션이란? 리스트 형태로 된 변수 하나만 가지는 클래스이다. 이 클래스를 만들었을 때 장점은, 해당 리스트 변수를 가지고 하는 책임(메서드) 들이 이 일급 콜렉션 클래스로 이동할 수 있게 된다. 그러면 리스트 변수에 해당하는 작업에 변경이 필요하게 되었을 때 이 일급 콜렉션 클래스에서 변경하면 되겠다는 판단을 바로 할 수 있다. (유지보수 편의성 향상) 아래는 일급 콜렉션 예시 public class Courses2 { private final List courses; public Courses2(List courses) { this.courses = courses; } public double multiplyCreditAndCourseGrade(){ return courses.stream() ... 2022. 9. 22.