new 객체로 받아서, 그걸 collect 해서 new list로 받기
이 분의 코드에서 특이점을 몇가지 발견해서 나도 적용해보고자 하는데,
안 그래도 PR 리뷰에 해당 내용이 있어서 내가 찾은 자료와 함께 참고 링크를 첨부한다.
(추가 중...) 쭉 읽어보고 지금까지 내가 생각한 정리는
Getter Setter 를 쓰지 말아야하는 이유가 뭘까?
이 분의 코드에서 영감을 받아 나도 적용해보려고 한다! 조건에 없지만 생각해서 만드는 것 재밌는 자세다!!
나의 경우 다른 객체의 메소드를 사용하기 위해 1회성이면 new 객체().메소드 해서 쓰고, 여러번 써야하면 인스턴스 변수로 선언해두고 객체 = new ~ 로 쓰곤했다. 그런데 이 분의 코드에서 모든 객체는 아니고 일부 객체에서 객체 = new ~ 가 아니라 객체 = 객체.getInstace 로 쓰는 걸 보았다. getInstace에는 생성된 게 없으면 new 객체를 리턴하고 이미 생성된 객체가 있으면 거기에 값을 넣어 리턴하는 식이다.
db같은 경우는 이게 필요할 것 같다. 전체 프로그램을 통틀어서 한 번만 생성되고 거기에 계속 쌓여야하기 때문에! 적용해서 db 만들어봐야겠다.
싱글톤 패턴이 필요한 이유와 실제 서비스에 적용까지
LazyHolder 기법 (Effective java 3th - Item4)
본문 발췌
싱글톤 패턴이 필요한 이유
프로그램 내 에서 어떤 객체가 단 1개만 존재해야 한다.
프로그램 내부의 여러 부분에서 이 객체를 공유하며 사용한다.
위와 같은 상황에서, 싱글톤 패턴은 객체가 프로그램 내부에서 단 1개만 생성됨을 보장하며
멀티 스레드에서 이 객체를 공유하며 동시에 접근하는 경우에 발생하는 동시성 문제도 해결해주는 디자인 패턴.
이전에 배웠던 ^~$ 정규식이 아닌 matches를 활용하는 방법이 있다.
matches 메서드는 Java에서 문자열과 정규식 패턴을 비교하여 두 문자열이 정확히 일치하는지 여부를 판단하는 데 사용. 이 메서드는 String 클래스에 내장되어 있으며, 다음과 같은 방식으로 사용된다.
boolean matches(String regex)
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String input = "123"; // 여기에 검사할 문자열을 넣으세요.
// 세 자리인지 확인
boolean isThreeDigits = input.matches(".{3}");
// 중복된 숫자가 없는지 확인
boolean noDuplicateDigits = !input.matches(".*(\\d).*\\1.*");
// 0을 포함하는지 확인
boolean noZero = input.matches(".*0.*");
// 숫자인지 확인
boolean isNumeric = input.matches("\\d+");
// 결과 출력
System.out.println("세 자리 숫자인지 확인: " + isThreeDigits);
System.out.println("중복된 숫자가 없는지 확인: " + noDuplicateDigits);
System.out.println("0을 포함하지 않는지 확인: " + noZero);
System.out.println("숫자인지 확인: " + isNumeric);
}
}
이 분의 코드를 보고 '오호!' 싶었다. 나는 상수, static constant 클래스에 넣어놓고 썼는데 그 중에 결과 부분은 enum으로 해도 좋을 것 같다!
작년 피어리뷰에 있던 피드백인데 나도 생각해봐야하는 부분 같다!
이 분의 코드를 보고 private 메소드를 테스트 해야할 때 overiding을 써봐야겠다고 생각했다!
작년 피어 리뷰를 보면서 추상화 수준이라는 말이 어떤 건지 궁금해서 정리해보려고 한다.
그럼 추상화 수준이 같다는 것은 무엇인가? 책의 46페이지에 "...추상화 수준이 아주 높다.
반면, ... 추상화 수준이 중간이다.
그리고 ...같은 코드는 추상화 수준이 아주 낮다."라는 말이 쓰여있다.
결국, 추상화 수준은 높음, 중간, 낮음으로 분류 할 수 있다.
추상화 수준을 분류하는 기준은 무엇인가?
동일하게 46페이지에 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다고 했다.
함수의 추상화 수준은 다음 단계로 갈수록 낮아진다.
그리고 이 수준이 같아야 함수가 하나의 일을 한다고 할 수 있다.
이제 추상화 수준이 높다, 낮다는 구분이 가능해졌다.
하지만 추상화 수준이 중간이라는 것은 무엇인가?
높지도 않고 낮지도 않은상태인데 A-1 또는 A-1-1은 추상화 수준이 중간인가?
아니다 A-1과 A-1-1은 추상화 수준이 높다고 할 수 있다.
추상화 수준이 중간이라는 것은 같은 추상화 수준을 가진 함수끼리의 연관을 말한다.
그러니까 저자인 로버트 C 마틴은 추상화 수준이 높지도 낮지도 않은 중간은 지양한다고 말하는것 같다.
결론: "추상화 수준은 높음, 중간, 낮음으로 구분 할 수 있고
추상화 수준을 높음으로 유지하고 추상화 수준이 중간은 지양한다.
11로 바꾸기
3주차 지킬 컨벤션 사항 적어놓고 완전 지켜보기
player<int>
이부분을 int가 아니라 ball 등의 객체로 원시값 포장하기
restart 1, 2 입력값 받는 것 같은 부분도 enumrestartRequest
으로 객체화 할 수 있었겠구나.
test를 위한 것이라는데 이유가 모르는 부분이라 알아보기