[데브코스] Gradle로 프로젝트 만들기 (feat. Lombok)

Updated: Categories:

W1D5 - Gradle에 대해 알아보고 프로젝트를 구현해보자!

Gradle

  • 빌드도 해주지만 외부 라이브러리 설치(의존성 관리)도 담당해준다. ( nodejs의 package.json 비스무리
  • https://search.maven.org/ 여기서 라이브러리 검색 가능
  • 라이브러리 검색 후 gradle 코드 복사 -> build.gradle 파일의 dependency 부분에 붙여넣기 -> gradle refresh


Lombok

설치

  1. https://projectlombok.org/setup/gradle
  2. build.gradle에 추가해주고 위에 뜨는 refresh 버튼 클릭
  3. IntelliJ 세팅 -> Plugin에 Lombok 설치

image

사용법

  • 생성자나 toString, equals 등 기본적인 객체 정의를 대신 만들어주는 기능
  • Annotation을 달아서 사용한다
// Constructor ToString Equals HashCode Getter를 대신 정의해줌
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
@Getter
public class User {
    private int age;
    private String name;
}


Final

  • 강의를 듣다가 처음보는 final이라는 키워드가 등장했다.
  • 그래서 따로 정리해보았다. 🚀 포스팅 이동


숫자야구 프로젝트

요구사항 및 설계

- 숫자야구 게임 설계
- 요구사항 파악하기
- 게임의 룰을 이해
    - 동작환경, 데이터의 범위
    - 3자리 숫자 사용. (확장 가능하다.)
    - 중복된 숫자를 사용하지 않는다.
    - 1~9 를 사용한다. (0은 사용하지 않음)
    - Console 상에서 동작하는 프로그램을 제작.
- 일을 객체로 나누기/객체를 연관짓기
    - Engine
        - BaseBall
        - NumberGenerator
        - Input
        - Output
    - Application
        - App
        - Console
        - FakerNumberGenerator
- 핵심로직 설계하기
    - Flow Chart

구현하면서 느낀점

  1. 초기 설계를 대충이라도 해놓고 구현해야 빠르고 정확한 구현이 가능함
  2. main business logic 에는 어떠한 외부 라이브러리의 의존성도 사용하지 않는다
  3. 테스트가 필요할때 기존 코드를 수정 X
    • 객체지향적(추상화, 상속관계) 설계가 잘 되어있다면 테스트용 객체?를 쉽게 추가할 수 있다.
  4. Stream 관련 메소드가 정말 많다.
    • 상황에 따라 적절한 메소드를 선택해야함
    • 각 메소드 파라미터에 어떤 Functional Interface 종류?가 들어가는지 알고있어야 함
    • 해당 메소드의 return type이 뭔지 알고있어야 함
  5. ‘코딩을 잘한다’의 의미를 다시 생각해보았다..
    머리속에 객체지향설계가 박혀있어서 이걸 숨쉬듯이 코드에 녹여내는게 진짜 고수인 것 같다.