CLI 자바 서비스 만들기 - 박은빈#4
Conversation
Added project overview, features, and class structure to README.
- App에서 사용하기위해
- App을 실행
- 뷰를 분리할 예정
There was a problem hiding this comment.
얘도 article 패키지 안에 넣어두는게 어땠을까요?
| public static final DateTimeFormatter forPrintDateTimeFormatter ; | ||
|
|
||
|
|
||
| static { |
|
|
||
| public class SystemController { | ||
| public void actionExit(){ | ||
| System.out.println("프로그램을 종료합니다."); |
|
|
||
|
|
||
| public void write(String title, String content) { | ||
| Article article = new Article(++id, title, content, LocalDateTime.now()); //게시글 작성시 Article 객체 생성 |
There was a problem hiding this comment.
메서드 반환값이 void니까 가독성 생각하면
articles.add(new``` Article(++id, title, content, LocalDateTime.now()));
이 방식도 괜찮을거같아요. 성능상으론 두 방식 모두 차이는 없으나 은빈님 방식이 디버깅할때는 유리하네요.
| import java.time.LocalDateTime; | ||
|
|
||
| @Getter | ||
| @Setter |
There was a problem hiding this comment.
세터로 다 여는 대신 갱신이 있을법한( 이번 프로젝트에선 title,content,modifiedDate) 필드값들만 업데이트 해주는 메서드를 만드는게 더 좋을거같아요.
어차피 객체 만들때 생성자로 변수들에 할당하니까 변수들은 모두 private로 외부 접근 불가능하게 만들고
public Article modify(String title,String content,LocalDateTime modifiedDate){
this.title= title;
// 생략이런 느낌으로요
|
MVC 패턴을 기반으로 Controller / Service / Repository를 명확하게 분리하신 부분과, 객체를 중앙에서 관리하는 방식 등 전체적으로 구조 설계가 인상적인 PR이었습니다! |
|
CRUD가 Repository에 잘 분리되어 있고, getArticleByIdOrPrintError 로 중복 예외처리를 하나로 묶은 게 깔끔해요. CRUD 책임이 Repository에 잘 분리되어 있는게 인상적입니다. 고생 많으셨습니다. |
|
구조 설계를 깔끔하고 목적성에 맞게 진행하신 부분이 인상적이었습니다. 고생하셨습니다! |
| String content; | ||
| LocalDateTime regDate; //객체에 원본을 넣고 출력할 때 format -> 정렬, 포맷 변경 시 용이하게 하기 위함. | ||
| private LocalDateTime modifiedDate; // 수정일 | ||
|
|
There was a problem hiding this comment.
modifiedDate만 따로 private으로 한 건 단순 오타이신가요 다른 이유가 있으신가요?
📝 CLI Java 게시판
Java 콘솔 환경에서 동작하는 텍스트 기반 게시판 서비스입니다.
사용자의 명령어 입력을 기반으로 게시글을 생성, 조회, 수정, 삭제할 수 있습니다.
🎯 주요 기능
write)list)detail [id])update [id])delete [id])exit)🧩 프로젝트 구조
🧠 설계 구조
Controller
Service
Repository
ArrayList를 활용한 데이터 저장 및 관리📦 데이터 구조
regDate: 게시글 생성 시점modifiedDate: 수정 시 갱신 (없으면 null)⚙️ 주요 구현 포인트
✔️ 1. 명령어 파싱 (Rq 클래스)
"detail 1"형태의 입력을 분리action + id구조로 처리-1로 처리✔️ 2. 날짜 처리
LocalDateTime으로 데이터 저장DateTimeFormatter를 활용해 포맷 적용modifiedDate갱신✔️ 3. 예외 처리
-1)✔️ 4. 리스트 출력
💬 실행 예시
🚀 실행 방법
🎯 배운 점
🔥 개선 방향