[데브코스] Gradle로 프로젝트 만들기 (feat. Lombok)
Updated: Categories: TILW1D5 - Gradle에 대해 알아보고 프로젝트를 구현해보자!
Gradle
- 빌드도 해주지만 외부 라이브러리 설치(의존성 관리)도 담당해준다. ( nodejs의 package.json 비스무리
- https://search.maven.org/ 여기서 라이브러리 검색 가능
- 라이브러리 검색 후 gradle 코드 복사 ->
build.gradle
파일의 dependency 부분에 붙여넣기 -> gradle refresh
Lombok
설치
- https://projectlombok.org/setup/gradle
build.gradle
에 추가해주고 위에 뜨는 refresh 버튼 클릭- IntelliJ 세팅 -> Plugin에
Lombok
설치
사용법
- 생성자나 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
구현하면서 느낀점
- 초기 설계를 대충이라도 해놓고 구현해야 빠르고 정확한 구현이 가능함
- main business logic 에는 어떠한 외부 라이브러리의 의존성도 사용하지 않는다
- 테스트가 필요할때 기존 코드를 수정 X
- 객체지향적(추상화, 상속관계) 설계가 잘 되어있다면 테스트용 객체?를 쉽게 추가할 수 있다.
- Stream 관련 메소드가 정말 많다.
- 상황에 따라 적절한 메소드를 선택해야함
- 각 메소드 파라미터에 어떤 Functional Interface 종류?가 들어가는지 알고있어야 함
- 해당 메소드의 return type이 뭔지 알고있어야 함
- ‘코딩을 잘한다’의 의미를 다시 생각해보았다..
머리속에 객체지향설계가 박혀있어서 이걸 숨쉬듯이 코드에 녹여내는게 진짜 고수인 것 같다.