-
Notifications
You must be signed in to change notification settings - Fork 5
[ BE ] (docs) 9WEEK #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
지난주에 작성한 코드를 수정, 보완할 것이기에 비교용으로 올려둡니다.
지난주에 작성한 코드를 수정, 보완할 것이기에 비교용으로 올려둡니다.
알아야하는 이론을 조사해 요약했습니다.
할인 정책을 바꾸어주었는데 아직 고정 금액 할인과 정률 할인을 구분하는 방법을 찾지못함
위반 사례를 발견하여 업데이트합니다.
DIP 원칙을 지키기 위해 인터페이스를 만들었습니다.
할인 정책을 구분하기 위해 enum을 생성하였습니다.
고정 금액 할인을 위한 메서드 생성
정률 할인을 담당하는 메서드의 이름을 구분하기 쉽도록 바꾸어주었습니다.
할인 정책이 무엇인지 받아와 어떤 정책을 적용하는지 골라내어 상품 가격을 계산하고 반환합니다.
ItemOrder() 메서드를 호출할때마다 객체를 생성해야해서 바깥에 빼주었고, 할인 정책 구분을 위한 인자도 추가해주었습니다.
[BE] (perf) 1 WEEK 로 교체 1주차 정답 코드로 교체합니다. 1주차 정답 코드를 수정해 커밋하겠습니다.
[ BE ] (feat) RateDiscountPolicy 클래스 생성 정률 할인 정책을 위한 클래스를 생성했습니다. 할인율을 변수에 담고 if 문으로 걸러내어 VIP이면 10%를 할인할 수 있도록 만들었습니다.
[ BE ] (feat) CalculatePrice 인터페이스 생성 고정 금액 할인과 정률 할인 정책중 후에 바뀔수 있으므로 인터페이스를 만들어 클래스를 따로 빼내어 만들어주기 위해 상속받을 인터페이스를 생성했습니다.
[ BE ] (feat) CalculatePriceFix 클래스 생성 고정 금액 할인 정책으로 바꿀 시 클래스만 바꾸어주도록 설계했습니다.
[ BE ] (feat) CalculatePriceRate 클래스 생성 정률 할인 정책으로 바꿀 시 클래스만 바꾸어주도록 설계했습니다.
[ BE ] (pref) Order 클래스 수정 할인 정책의 변화에 따라 계산 법이 달라지므로 클래스만 바꾸어주어 계산하고 반환하도록 수정했습니다.
[ BE ] (docs) 위반 사례를 찾아서 해결책 제시 Order 클래스의 위반 사례 - OCP 위반을 찾아, 정률 할인와 고정 금액 할인 계산법을 따로 클래스로 빼내는 것으로 해결책을 제시했습니다.
[ BE ] (pref) Order 클래스의 변수 이름 수정 변수이름과 메서드 이름이 겹쳐서 변수이름을 변경하였습니다.
[ BE ] (pref) OrderService 클래스의 할인 정책 변경 고정 금액 할인에서 정률 할인으로 바뀌었으므로 적용하는 메서드 또한, 바꾸어주었습니다.
[ BE ] (perf) RateDiscountPolicy 클래스 수정 할인율을 반환하는 것이 아닌, 할인된 금액을 반환하는 것이 맞다고 판단되어 수정하였습니다.
[ BE ] (perf) Order 클래스 수정 DiscountPolicy 클래스에서 할인한 가격을 반환하도록 수정을 하여 상품가격계산 메서드를 상품가격-할인한 가격 으로 계산하는 방식으로 수정하였습니다.
[ BE ] (perf) 할인율 관련 모든 자료형 수정 할인율 계산할때 소수점이들어가는데, int 자료형을 쓰니 0이 반환이 되어 float 형으로 바꾸어주었습니다.
[ BE ] (perf) Order 클래스 수정 calculatePrice() 메서드는 SRP 위반이라 생각되어 빼주었습니다.
[ BE ] (perf) OrderService 인터페이스 수정 Order 클래스에 있던 calculatePrice() 메서드를 빼와 서비스에 넣어주었습니다.
[ BE ] (perf) OrderServiceImpl 클래스 수정 인터페이스에 calculatedPrice() 메서드를 추가해주어 구현해주었습니다.
[ BE ] (perf) service 메서드명 수정 다른 분들이 메서드 명을 보고 어떤 기능의 메서드인지 알기 쉽도록 메서드명을 모두 수정하였습니다.
[ BE ] (perf) multiDeleteStudentInForById() 메서드 수정 학번으로 학생의 정보가 잘 삭제되었으면 true를 안되었으면 false를 반환하도록 수정하였습니다.
shinywoon
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
항상 협업을 염두하고 누군가 제 코드를 쉽게 읽고 해석할 수 있도록 신경써서 코딩해야합니다.
앞으로 더 좋은 방향의 발전을 기원합니다.
| public void update(Long id, Students updateStudent){ | ||
| Students findStudent = findById(id); | ||
| //DB 에서 회원 정보를 찾는다 [ 이미 별도 메서드로 구분 되어 있음 ] 추상화 레벨 2 | ||
| Students findStudent = store.get(id); | ||
| //Entity 정보를 수정한다. : 추상화 레벨 2 | ||
| findStudent.setName(updateStudent.getName()); | ||
| findStudent.setGrade(updateStudent.getGrade()); | ||
| findStudent.setMajor(updateStudent.getMajor()); | ||
| //DB 에 새로운 정보를 저장한다. : [ 이미 별도 메서드로 구분 되어 있음 ] 추상화 레벨 2 | ||
| save(findStudent); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
public void update(Long id, Students updateStudent){
Students findStudent = findById(id);
Users updatedStudent = updateUserInformation(updateStudent);
save(updatedStudent);
} }
private updateUserInfomation(Students updateStudent){
findStudent.setName(updateStudent.getName());
findStudent.setGrade(updateStudent.getGrade());
findStudent.setMajor(updateStudent.getMajor());
}위 프로그램과 한번 비교해 보시면 차이점을 알 수 있을까요?
| public void deleteStudent(Long studentId); | ||
| public void updateStudent(Long studentId, Students updateStudent); | ||
| public void multiDeleteStudent(List<Long> studentId); | ||
| public Students showStudentInForById(Long studentId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제 개인적인 취향으로는
public Studnets showStudentInformationBy(Long studentId);이런식으로 작명합니다.
[ BE ] (build) 12 WEEK
[ BE ] (feat) 학생 정보에 관한 enum 클래스 생성 학생 정보에 필요하면서 제한적인 정보들을 enum 클래스로 생성해주었습니다.
[ BE ] (feat) 학생 클래스 생성 학생의 정보를 담을 클래스를 생성하였습니다. 회원가입을 할땐 signUpFormData() 메서드를 회원정보를 수정할땐 updateFormData() 메서드를 호출하도록 하기위해 메서드를 따로 생성했습니다.
[ BE ] (feat) repository 생성 저장소로 Map을 사용하였습니다.
[ BE ] (feat) repository save() 기능 구현 학생정보를 저장하는 메서드를 구현하였습니다.
[ BE ] (feat) repository findById() 기능 구현 학생의 정보를 학번으로 찾도록하는 메서드를 구현하였습니다.
[ BE ] (feat) repository findAll() 기능 구현 메모리에 저장되어있는 모든 학생의 정보를 가져오는 메서드를 구현하였습니다.
[ BE ] (feat) repository updateStudentInfomation() 기능 구현 학생의 정보를 수정하는 메서드에 활용할 기능 메서드를 구현하였습니다.
[ BE ] (feat) repository update() 기능 구현 학생의 정보를 수정하는 메서드를 구현하였습니다.
[ BE ] (feat) service 클래스 생성 제약조건을 걸어 각각 다른 정보를 반환하기 위해 Object 자료형으로 반환형식을 설정해두었습니다.
[ BE ] (feat) service 구현 클래스 생성
[ BE] (feat) service saveStudent() 구현 회원가입을 진행할 때 어떠한 부분이 요구사항을 충족시키지 못했는지 알려주기위해 해당 정보를 반환하도록 만들었습니다.
[ BE ] (feat) service showStudentByStudentId() 구현 찾으려는 학생의 정보가 없으면 null을 반환하도록 만들었습니다.
[ BE ] (feat) service showAllStudents() 구현 저장소에 학생 정보가 아무것도 없으면 null 을 반환하도록 만들었습니다.
[ BE ] (feat) service updateStudentByStudentId() 구현 수정하려는 학생의 정보가 없다면 null을 반환하고 수정하려는 정보가 요구사항을 충족시키지 못했다면 해당 정보를 반환해주도록 만들었습니다.
[ BE ] (feat) 제약 조건 클래스 생성 학번, 이름, 학과, 학기, 학년에 관한 제약 조건을 확인하는 메서드를 만들 예정입니다.
[ BE ] (feat) 학번 제약 조건 확인 메서드 생성 학번의 길이가 7인지, 숫자로 이루어져있는지 확인하는 메서드를 생성하였습니다.
[ BE ] (feat) 이름 제약 조건 확인 메서드 생성 이름이 한글로 이루어져있는지, 2글자 이상 7글자 이하인지 확인하는 메서드를 생성하였습니다.
[ BE ] (feat) 학과 제약 조건 확인 메서드 생성 학과가 소프트웨어, 컴퓨터공학, 산업디자인학과 중 하나인지 확인하는 메서드를 생성하였습니다.
[ BE ] (feat) 학기 제약 조건 확인 메서드 생성 학기가 1학기, 2학기 중 하나인지 확인하는 메서드를 생성하였습니다.
[ BE ] (feat) 학년 제약 조건 확인 메서드 생성 학년이 1~5학년인지 확인하는 메서드를 생성하였습니다.
[ BE ] (feat) controller 클래스 생성 매핑은 /student 로 해주었습니다.
[ BE ] (feat) controler addStudent() 구현 학생정보를 저장하는 메서드를 호출하는 메서드를 생성하였습니다.
[ BE ] (feat) controler showStudentByStudentId() 구현 학번으로 학생을 찾는 메서드를 호출하고 그 정보를 넘겨주는 메서드를 생성하였습니다.
[ BE ] (feat) controler showAllStudents() 구현 모든 학생의 정보를 찾는 메서드를 호출하고 그 정보를 넘겨주는 메서드를 생성하였습니다.
[ BE ] (feat) controler updateStudentByStudentId() 구현 학생의 정보를 수정하는 메서드를 호출하는 메서드를 생성하였습니다.
[ BE ] (docs) 9WEEK
9주차 스피링 MVC 5-7장 알아둬야하는 부분만 요약하였습니다.
저번주에 PR보냈는데 왜 안됐는지 모르겠네요,,