감상평 : 개발능력만큼 설계능력을 끌어 올릴 것
1.1 좋았던점 :
- http 통신, db사용, sql문, html tag,java script 등 전반적 이해도가 꽤 올라감.
- DTO를 사용하면서 귀동냥으로 배운 프로젝트 중반부터는 GPT를 한몸처럼 사용하면서 개발생산성이 매우 높아짐.
1.2 아쉬운점 :
- 첫 프로젝트 였던만큼 head-on으로 부딪혔던 면이 많이 있었던 것같다 ; 데이터 모델링이라는 개념이 없어 순서도 조차 그리지 못하고 우선 코딩부터 시작하였고 이는 코드의 복잡성과 시행착오를 발생시킴
-> 추후 요구사항 모델링을 충실히 하여, 순서도와 데이터모델을 통해서, 중복성을 찾아내고 이를 추상화하기 위해 깊은 고민할 것. 개발능력만큼 설계능력을 끌어올릴 것
코드리뷰 : OCP원칙에 따라서 중복성제거를 고민할것.
2.1 DBservice 내에서 코드 중복성에 대한 고민
-db table에 대응되도록 DTO가 4개가( DTOBookmark.java, DTOBookmarkGroup.java, DTOWifi.java, DTOHistory.java ) 있었는데 모두 table명, 칼럼명, sql문 , crud기능정도만 차이가 있고 중복되는 코드들이 상당했음. 이 중복을 줄일 방안은 없을지?
-> SOLID원칙 중에 OCP(개방폐쇄원칙)에 따라서 한개의 dbservice내에서 4개의 DBtable을 관리하는 것이 아니라, 이를 interface로 만들어서 각 db table별 service에 상속하게 하였으면 어땠을지?
a. db table 조작방식은 db connection - statement 생성 - stament 실행 - 자원 close로 이루어져있는데 db connection이라는 공통부분은 별개의 method로 뽑아서 method 내 method호출로 대체가능
public class ConnectionFactory {
private static final String URL = "jdbc:mariadb://localhost:3306/seoulwifi";
private static final String USER = "wifiuser";
private static final String PASSWORD = "!tkdghk6226";
static {
try {
Class.forName("org.mariadb.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException("MariaDB Driver not found", e);
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
b. 그 외에는 개별적인 sql문 및 테이블이라 하나의 메소드로 묶기는 어렵지만, 가독성과 유지보수성을 위해서 추상클래스로 format을 정형화 하는 것을 고려할 수 있음.
public abstract class AbstractDao<T> {
protected abstract void setParameters(PreparedStatement stmt, T entity) throws SQLException;
protected abstract T readFromResultSet(ResultSet rs) throws SQLException;
protected abstract String getCreateQuery();
protected abstract String getReadQuery();
protected abstract String getUpdateQuery();
protected abstract String getDeleteQuery();
'개발 프로젝트 > 2024 제로베이스 프로젝트' 카테고리의 다른 글
제로베이스 연습프로젝트 : 매장 테이블 예약 서비스(2) 문제발생 및 해결 (0) | 2024.08.27 |
---|---|
제로베이스 연습프로젝트 - 매장 테이블 예약 서비스(1) 서비스 요구사항 및 설계 (0) | 2024.08.20 |
제로베이스 서블릿 JSP프로젝트 : 위치기반 공공와이파이 확인시스템 <2> 위치기반 공공와이파이 확인시스템 - readme 작성 (0) | 2024.07.13 |
제로베이스 서블릿 JSP프로젝트 : 위치기반 공공와이파이 확인시스템 <2> - trouble shooting (0) | 2024.07.10 |
제로베이스 서블릿 JSP프로젝트 : 위치기반 공공와이파이 확인시스템 <1> 개발시작전 요구사항 분석 (0) | 2024.06.24 |