목록전체 글 (134)
나만의 개발 로그 | 고민 로그
객체지향프로그래밍(Object-Oriented-Programming) : 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급, 객체 내부에 선언된 메소드를 활용하는 방식 객체지향 프로그래의 특징 추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것 캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것 -> 중요한 데이터를 쉽게 바꾸지 못하도록 함, 분리로 인한 코드 재사용성 증가 상속성 : 상위 클래스의 특성을 하위 클래스가 이어 받아서 재사용하거나 추가, 확장하는 것 -> 코드의 재사용 측면, 계층적 관계생성, 유지 보수성 측면에서 중요 다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 대표적으로 오버로딩과 오버라이딩이 ..
0. 왜 굳이 테스트 코드를 써야 할까?수동 postman자동 테스트사람이 눌러야 한다머신이 대신 눌러 준다한 번만 재현하면 끝PR마다 반복새 기능이 다른 코드 깨져도 모름깨지면 파이프라인 즉시 실패 결국 “테스트 코드 = 내가 없어도 코드를 눌러 줄 Postman” 이다.1. JUnit: 순수 메서드부터 테스트 하기!class DiscountServiceTest { @Test void vip_고객은_10퍼센트_할인() { DiscountService svc = new DiscountService(); int price = svc.apply(1000, Grade.VIP); assertEquals(900, price); } }Why 이렇게 시작하나?이유설명의존성 ..
1. Lombok @NoArgsConstructor(force = true)1-1. 왜 필요한가?JPA, 직렬화, 프레임워크 프록시 등은 기본 생성자가 반드시 있어야 객체를 만들 수 있다.하지만 final 필드가 있으면 Lombok이 기본 생성자를 자동 생성하지 못한다.force = true 옵션을 주면 Lombok이 final 필드에도 임시 디폴트 값(0/false/null)을 강제로 넣어 주면서 기본 생성자를 만들어 준다.1-2. 예시 : JPA 엔티티@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED, force = true) public class ImageMeta {@Id @GeneratedValue private Long id;..
1. 문제 상황 현재 프로젝트에서 boolean타입인데 네이밍을 isActive로 하는 바람에 스웨거에서 반환하는 json에 담기지가 않아서 원인을 찾는데 엄청 고생을 했다.. 따라서 해당 내용을 정리하고자 한다. Lombok(@Getter) 규칙:boolean 필드는 “is + 파스칼케이스” 를 붙여 접근자 메서드를 만든다.→ 필드가 이미 is 로 시작하면 “is + is…”.Jackson(직렬화/역직렬화)은 자바빈 규약 을 그대로 따르므로 isActive() 를 찾지만, 코드에는 isIsActive() 만 존재 ⇒ 속성 누락.@Datapublic class UserDto { private boolean isActive; // 필드 앞에 이미 is가 붙어 있다}// 기대 get 메소드 is..