오늘 한 일 Git / Github 협업할 때 main에 바로 merge 하지말고, dev 브랜치를 기본 브랜치로 설정하고 로컬에서 dev와 병합해서 충돌이 발생하면 해결하고 push, pr 하라고 배웠다. 좋은 방식인 것 같다. 팀 프로젝트 과제가 새로 나왔다. 작은 호텔 예약 프로그램을 CUI로 만드는 것인데, 회의하면서 요구사항을 분석하고 도메인을 설계했다. 내일 다 만들어야지.. 간단하게 코드리뷰를 하고 통과하면 merge 하면서 소소하게 협업을 했다.
전체보기
오늘 한 일 자바의 애너테이션을 조금 공부하다가, 리플렉션 API를 공부했다. 2023.10.23 - [Language/Java] - [Java] 리플렉션 API 간단 정리 [Java] 리플렉션 API 간단 정리 자바의 Reflection API는 런타임에 클래스의 내부 정보를 탐색하거나 수정할 수 있게 해주는 기능이다. 컴파일 시점에 타입이 결정되는 것을 런타임 시점으로 연기할 수 있다. 주로 다이나믹 로딩, ouohoon.tistory.com
자바의 Reflection API는 런타임에 클래스의 내부 정보를 탐색하거나 수정할 수 있게 해주는 기능이다. 컴파일 시점에 타입이 결정되는 것을 런타임 시점으로 연기할 수 있다. 주로 다이나믹 로딩, 테스트 자동화, 애너테이션 기반의 설정 등에서 사용된다. 사용 단계 클래스 정보 획득: 대상 클래스의 Class 객체를 획득한다. Class myClass = MyClass.class; 멤버 정보 탐색: 메서드, 필드, 생성자 등의 멤버 정보를 가져온다. Method[] methods = myClass.getMethods(); Field[] fields = myClass.getFields(); 동적 생성 및 접근: Class 객체를 이용해 동적으로 인스턴스를 생성하거나, 메서드를 호출하고, 필드에 접근한다..
오늘 한 일 Spring boot에서 클라이언트 입력 값을 @Valid 애너테이션으로 검증하는 방법을 공부했다. 여러 예제를 봤는데 클라이언트의 입력 값은 보통 @Valid 애너테이션을 사용해서 검증한다. 복잡하면 검증 메소드를 만들어서 검증한다. 이와 관련된 글을 작성할 예정이다. 어제 만든 CUI 키오스크 고민 해결 튜터님이랑 얘기하면서 OOP에 대한 기준을 좀 잡았다. 내가 OOP 스타일을 지키면서 만들고 있는건지 확신이 없었는데, 객체의 추가/변경이 다른 객체에 영향을 최대한 주지 않으면서 가독성이 좋은 코드를 작성하는걸 목표로 해야겠다. SOLID 원칙도 지킬 수 있도록 해야지.
자바로 CUI 키오스크를 만드는게 개인 과제로 나왔다. 과제를 제출하는데 어려웠던 기술적인 부분을 적어달라고 하길래 고민했던 것들을 적었다. 코드는 깃허브에 올렸다. https://github.com/OuOHoon/nbc-chapter2-homework 고민 목록 상태 관리 키오스크의 상태에 따라서 행동하기 위해서 개발하다보니 방대한 클래스를 만들었다. 이 클래스는 가독성이 나쁘고 기능을 추가하기 어려워서 어떻게 관리하는게 좋을지 고민했다. 키오스크의 상태에 따라 관련된 필드와 메소드를 클래스로 만들어서 캡슐화 했는데, 기능 추가가 쉬워지고 가독성은 좋아졌지만 그만큼 관리해야 하는 클래스가 늘어나서 불편함을 느꼈다. // 상태 인터페이스 public interface KioskState { String ..
오늘 한 일 디자인 패턴 학습 상태 패턴, 팩토리 패턴 학습함 키오스크 프로젝트 MVC 패턴으로 전환 및 기능 개발 중복 코드를 최대한 없애면서 만들려고 했다. 반복되는 코드가 보이면 메소드로 추출했다. 중복되는 필드나 메소드를 상황에 따라 인터페이스나 추상 클래스를 상속받아 없앴다. 협력하는 객체를 만드는 것은 무엇일까 고민했다. MVC 패턴이 객체가 협력하기 쉽도록 만들어주는 구조라고 생각했다. 근데 패턴보다 더 중요한 것이 실제 모델, 뷰, 컨트롤러 객체를 어떻게 만들 것인지다. 컨트롤러가 관리하는 상태가 많고, 상태와 관련된 로직이 복잡해서 컨트롤러의 상태를 클래스로 만들어서 캡슐화했다. 상태 패턴을 적용하면서 상태 1개당 상태 클래스, 상태 모델 클래스, 상태 뷰 클래스가 생겨서 클래스의 관리가..