용로그
article thumbnail
[Test] Mockito 사용법
Java 2023. 4. 17. 16:32

이번 글에서는 Mockito에 관련해서 글을 써보려 합니다. Spring이 적용된 Mockito가 아닌 JUnit으로만 사용할 수 있는 수준의 문법을 정리합니다. Mockito Test Framwork가 처음 사용하는 분들에게 불친절하다고 생각합니다. 저도 그래서 다른 크루들과 함께 공부했고 이에 대한 코드는 다음 레파지토리에 정리해두었습니다. https://github.com/wonyongChoi05/mockito-study GitHub - wonyongChoi05/mockito-study: 우아한테크코스 프롤로그 Mockito + JUnit을 이용한 테스트 작성 방식 우아한테크코스 프롤로그 Mockito + JUnit을 이용한 테스트 작성 방식 문서화. Contribute to wonyongChoi0..

article thumbnail
[Java] DTO를 잘 사용하기 위한 고찰
Java 2023. 3. 28. 16:07

우테코 1레벨 마지막 미션인 체스를 진행하면서 배운 DTO에 대해서 글을 써보려 합니다. 리뷰어와 약 하루동안 16,000자의 대화가 오갔으며, 이번 글에서는 이를 기반으로 토론한 내용을 기반으로 작성합니다. 그리고 체스라는 게임의 룰을 이해한 상태로 글을 읽으면 이해가 더 잘될 것 같습니다. 😁 😁 사건의 발단 체스라는 게임은 각 기물마다 다른 움직임 전략을 가지고 있습니다. 이를 객체지향으로 구현하는 방법은 여러가지가 있을 것입니다. 가장 대표적인 방법은 상속을 사용하는 방법일텐데요. 이는 하나의 Piece 부모 객체를 가지고 나머지 기물들이 Piece를 상속(Inheritance)받아 자신의 전략에 알맞은 전략을 따로 구현하는 방법입니다. 그리고 다른 방법으로는 전략 패턴(Strategy Patte..

article thumbnail
[Java] 상속과 조합 고민해보기
Java 2023. 3. 9. 15:23

상속(Inheritance)과 조합(Composition)은 객체지향 프로그래밍(OOP)에서 객체 간의 관계를 나타내는 데에 있어서 중요한 개념이다. 이번 글에서는 두 가지 개념의 차이점과 장단점에 대해서 알아보자. 상속(Inheritance) 상속은 객체지향 프로그래밍에서 가장 기본적인 개념 중 하나다. 클래스 간의 부모-자식 관계를 정의하여 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용 할 수 있도록 한다. 이렇게 상속을 통해 구현한 클래스를 서브 클래스(Sub Class) 또는 파생 클래스(Derived Class)라고 부르기도 한다. 보통 상속을 사용하는 방법은 아래와 같다. public class Person { private String name; private int age; publ..

article thumbnail
[Java] 개행(줄 바꿈)시 lineSeparator를 써야하는 이유
Java 2023. 3. 9. 14:04

"\n"의 문제점 String에서 줄바꿈은 Window에서 \r\n, Linux에서 \n으로 표현된다. 하지만 이런 방식은, 서로 다른 종류의 OS에서 동작하는 프로그램에서 문제가 발생할 수 있다. // Windows System.out.println("Hello\r\nWorld"); // Linux System.out.println("Hello\nWorld"); 그래서 뭐 쓰라고 System.lineSeparator()는 Java 1.7부터 사용할 수 있으며, 사용하면 시스템 종속적인 라인 세퍼레이터 문자열을 자동으로 반환하므로, 코드를 더욱 유연하게 만들어 줄 수 있다. 예를 들어, 다음과 같이 사용할 수 있다. String message = "Hello" + System.lineSeparator()..

article thumbnail
[Java] 싱글톤 패턴은 안티 패턴일까?
Java 2023. 3. 9. 13:39

우리가 프로그래밍을 하다 보면 싱글톤의 유혹을 버티지 못할 때가 있다. 싱글톤 자체의 의도는 메모리 절약이라는 좋은 근거가 될 수 있지만, 그로 인해 발생하는 문제점 또한 많은 편이다. 그래서 이번 글에서는 싱글톤의 장단점과 어떤 상황에서 안티 패턴으로 작용할 수 있는지를 알아보자. 안티패턴? 설계상의 문제로 인해 소프트웨어 시스템이 예상대로 작동하지 않거나 유지보수하기 어렵게 만드는 디자인 패턴이다. 싱글톤 패턴이란? 싱글톤은 객체지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나다. 이 패턴은 Application에서 단 하나의 인스턴스만을 생성하고, 이 인스턴스를 전역에서 사용할 수 있도록 한다. public class Singleton { private static String instan..

article thumbnail
[Java] 정적 팩토리 메서드 사용기
Java 2023. 3. 3. 13:32

정적 팩토리 메서드란? 자바 프로그래머라면 한 번쯤 들어봤을 정적 팩토리 메서드에 대해서 알아보자. 정적 팩토리 메서드가 무엇일까? 말 그대로 메서드로 정적 인스턴스를 생성한다는 뜻일 것이다. 여기서 팩토리라는 용어가 조금 생소할 수 있다. GoF 디자인 패턴 중 팩토리 패턴에서 유래한 이 단어는 객체를 생성하는 역할을 분리하겠다는 취지가 담겨있다. 생성자 대신 정적 팩토리 메서드를 고려하자 Example 1) Dealer 좀 더 쉽게 말하면 객체 생성의 역할을 하는 것이 생성자가 아닌 메서드가 대신 해주는 것이다. 말로만 설명하면 뭐가 뭔지 이해하기 쉽지 않을 것이다. 아래의 코드를 보자. public class Dealer extends User { private static final int CAN..

article thumbnail
[Java] 매직 넘버 잘 처리하기
Java 2023. 2. 27. 15:46

매직 넘버 줄이기 프로그래밍에서 상수(static final)로 선언하지 않은 수나 문자열을 매직 넘버 또는 매직 리터럴이라고 한다. 단지 상수로 선언하지 않았다고 해서 매직 넘버나 매직 리터럴이 되는 것은 아니다. 게임으로 예를 들어보자 아래는 게임 플레이어의 체력을 감소시키는 메서드다. 근데 30과 100이 무엇을 뜻하는지 알 수 있겠는가? public void decreaseStrength() { this.health -= 30 * 100; } 잘 모르겠다면 아래의 메서드를 다시 보자. 훨씬 직관적이고 읽기 쉬운 코드가 되지 않았는가? 최소한 30과 100이 무엇을 뜻하는지 알 수 있게 되었다. 30과 100이 뭘 뜻하는지 안다면 플레이어의 체력을 감소시키는 메서드가 어떤 공식으로 계산되어 적용되는..

article thumbnail
[Test] 테스트 프레임워크 JUnit5, 어노테이션과 간단한 사용법
Java 2023. 1. 31. 18:55

JUnit이란? 현재 자바 개발자 90% 이상이 사용 자바8 이상부터 사용할 수 있는 단위테스트 프레임워크 스프링 부트 2.2 버전부터 기본으로 제공 JUnit5란? 기존의 JUnit은 하나의 .jar 파일로 의존성을 불러와서 다른 라이브러리를 참조해서 사용하는 구조였는데 JUnit5부터는 자체적으로 모듈화가 되어있다. JUnit5는 JUnit Platform + Jupiter + Vintage와 같다. 아래 사진과 같이 JUnit Platform 모듈 위에 Jupiter와 Vintage가 올릴 수 있는 구조이다. JUnit5 버전은 2017년 10월에 공개 Platform : JUnit으로 작성한 테스트 코드를 실행해주는 런처를 제공 Vintage : JUnit3, 4를 지원하는 TestEngineAP..