Study

Study/이펙티브 자바

[Effective Java 3E] 로 타입은 사용하지 말라

💥 개요 한글 용어 영문 용어 예시 매개변수화 타입 parameterized type List 실제 타입 매개변수 actual type parameter String 제네릭 타입 generic type List 정규 타입 매개변수 formal type parameter E 비한정적 와일드카드 타입 unbounded wildcard typ List 로 타입 raw type List 한정적 타입 매개변수 bounded type parameter 재귀적 타입 한정 recursive type bound 한정적 와일드카드 타입 bounded wildcard type List에는 (null 외에는) 어떤 원소도 넣을 수 없다. 다른 원소를 넣으려 하면 컴파일 시점에 오류가 발생한다. @Test void 와일드카드타..

Study/우아한 테크 코스

MVC 패턴, 우아한 테코톡 내용 총 정리

MVC패턴 왜 쓰는 걸까? 우테코를 진행하면서, mvc 패턴에 대해서 막연히, 추상적으로 알고 있었던 부분에 대해서 우아한 테코톡을 보며 mvc의 대한 발표 내용을 정리해보았다. 개인적으로 영상을 보면서 1시간 이내의 짧은 시간으로 많은 부분에 대한 확신을 얻어갔던 것 같다. 제리 발표 내용 정리 1.Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다. 2.View 내부에 Model의 코드만 있을 수 있고 Controller 코드가 있으면 안된다. 3.View가 Model로부터 데이터를 받을때는 사용자마다 다르게 보어주어야 하는 데이터에 대해서만 받아야 한다. 4.Controller는 model과 View에 의존해도 된다. 5.View가 Model로부터 데이터를 받을 때, 반드..

Study/우아한 테크 코스

[우아한 테크 코스] 프리코스 - 1주차, 숫자 야구 회고

[1일차] 처음에 뭐부터 할지 고민하다 기능 목록을 먼저 정의하라는 요구사항에 따라 기능 목록을 작성했다. 기능 목록을 어떤식으로 나타내야 사용자에게 보기 좋을까? 를 생각했고, 나라면 그림이 제일 위에 있으면 좋겠다 라고 생각해서 다이어그램을 그리기로 했다. 그 전에 꼼꼼하게 진행방식, 미션 제출 방법, 체크리스트 등을 꼼꼼하게 다 읽고 기능 요구 사항을 살펴봤다. 간단해보이지만 단순하게 코딩테스트처럼 문제를 푸는것을 원하지 않기에, 그리고 자바를 통한 개발이 익숙하지 않아 학부때 배운 책을 다시 펴고 이 문제는 어떻게 해결하지? 라는 생각부터 했다. 그 이후에는 어느정도 정리가 돼서 내가 개발할 대략적인 그림을 플로우 차트를 통해서 그리기로 마음을 먹었고, 머메이드의 Docs를 통해 다이어그램을 그리..

Study/이펙티브 자바

[Effective Java 3E] 멤버 클래스는 되도록 static으로 만들라

💥 개요 중첩 클래스(nested class)란 다른 클래스 안에 정의된 클래스를 말한다. 중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야 한다. 🔍 중첩 클래스의 종류 정적 멤버 클래스 멤버 클래스(비정적) 익명 클래스 지역 클래스 정적 멤버 클래스 다른 클래스 안에 선언, 바깥 클래스의 private 멤버에도 접근이 가능하다. 정적 멤버 클래스는 정적 멤버와 똑같은 접근 규칙을 적용 받는다.(private이면 바깥 클래스에서만 사용 가능) 흔히 바깥 클래스와 함께 쓰일 때만 유용한 public 도우미 클래스로 쓰인다. public class Calculator { //static을 명시하지 않아도 nested enum은 static으로 선언..

Study/이펙티브 자바

[Effective Java 3E] 태그달린 클래스보다는 클래스 계층구조를 활용하라

💥 개요 두 가지 이상의 의미를 표현할 수 있으며, 현재 표현하는 의미를 태그값으로 알려주는 클래스를 본 적이 있을 것이다. package effectivejava.chapter4.item23.taggedclass; class Figure { enum Shape { RECTANGLE, CIRCLE }; // 태그 필드 - 현재 모양을 나타낸다. final Shape shape; // 다음 필드들은 모양이 사각형(RECTANGLE)일 때만 쓰인다. double length; double width; // 다음 필드는 모양이 원(CIRCLE)일 때만 쓰인다. double radius; // 원용 생성자 Figure(double radius) { shape = Shape.CIRCLE; this.radius =..

Study

객체지향 프로그래밍 5가지 설계 원칙(SOLID 원칙)

SOLID SOLID란 객체 지향 프로그래밍을 하며 지키야 하는 5가지 원칙으로, SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙) 의 앞글자를 따서 만들어졌습니다. SOLID 원칙을 철저히 지키면 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 됩니다. 단일 책임 원칙(SRP) SRP는 하나의 모듈이 하나의 책임을 가져야 한다는 것 입니다. 여러 대상 또는 액터들에 대해 책임을 가져서는 안되고, 모듈이 변경되는 이유는 하나여야 합니다. @Service @RequiredArgsConstructor public class UserService { private final UserReposito..

Study/이펙티브 자바

[Effective Java 3E] 인터페이스는 타입을 정의하는 용도로만 사용하라

💥 개요 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 합니다. 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인터페이스로 무엇을 할 수 있는지를 얘기해주는 것 입니다. 인터페이스는 오직 이 용도로만 사용해야 합니다. ☠️ 상수 인터페이스 (안티패턴 - 사용금지) public interface PhysicalConstants { // 아보가드로 수 (1/몰) static final double AVOGADROS_NUMBER = 6.022_140_857e23; // 볼츠만 상수 (J/K) static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23; // 전자 질량 (kg) static final double ELECTRON_MAS..

Study/이펙티브 자바

[Effective Java 3E] 인터페이스는 구현하는 쪽을 생각해 설계하라

💥 개요 자바 8 전에는 기존 구현체를 깨뜨리지 않고 인터페이스에 메서드를 추가하는 방법은 없었습니다. 인터페이스에 메서드를 추가하면 대부분 컴파일 오류가 발생하는데 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성은 아주 낮기 때문입니다. 자바 8부터 default method가 추가 되어 인터페이스에 메서드를 추가할 수 있게 되었지만 위험이 완전히 사라진 것은 아닙니다. 🔍 default method 디폴트 메서드(default method)를 선언하면, 그 인터페이스를 구현한 후 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 됩니다. 이처럼 기존 인터페이스에 메서드를 추가할 수 있게 되었지만, 모든 기존 구현체가 매끄럽게 연동되라는 보장은 없습니다. 디폴트 메서드는 구..

mntdev
'Study' 카테고리의 글 목록 (4 Page)