분류 전체보기33 자바스프링 개발자를 위한 실용주의 6. 안티패턴 스마트UI 패턴스마트 UI 패턴을 정의하자면 다음과 같다.“데이터 입출력, 비즈니스로직, 데이터베이스 통신 등 모두 UI레벨에서 처리하는 것.” 백엔드 개발자 입장에서 UI는 컨트롤러가 될 수 있다. 즉, 컨트롤러에 지나치게 많은 로직이 들어있는 경우라고 볼 수 있다. 이러한 맥락으로 본다면 스마트 컨트롤러라고 부를 수도 있다.@RestController@RequiredArgsConstructorpublic class MemberController { private final MemberService memberService; private final MemberService memberRepository; @GetMapping public Result modifyMember(St.. 2024. 11. 9. 자바스프링 개발자를 위한 실용주의 5. 순환참조 순환참조는 두개 이상의 객체나 컴포넌트가 서로를 참조하면서 의존관계에 싸이클이 생기는 것을 의미한다. S/W 설계에서 자주 볼 수 있는 안티패턴이다. 우리는 순환 참조가 안티 패턴인 것을 알고 있음에도 다음과 같은 코드를 짠다.JPA 양방향 매핑ex) Team ↔︎ MemberService Layer 간의 참조ex) TeamService ↔︎ MemberServiceSpring과 JPA를 사용하다 보면 흔히하는 실수이다. 순환참조의 문제점무한루프순환참조된 객체를 직렬화 하게 되면 무한루프에 빠진다.Member객체 안 Team 직렬화 -> Team안 Member직렬화 -> Member객체 안 Team 직렬화 -> ... 반복Json이 지원하는 어노테이션으로 해결 가.. 2024. 11. 9. 자바스프링 개발자를 위한 실용주의 4. SOLID 각 원칙은 소프트웨어의 유지보수성과 확장성을 높이는 것이다. 이를 판단하기 위한 세가지는 다음과 같다.- 영향범위- 의존성- 확장성 SOLID 소개1. 단일책임원칙단일 책임 원칙 목표단일 책임 원칙의 목표 클래스가 변경됐을 때 영향을 받는 액터가 하나여야 한다.클래스를 변경할 이유는 유일한 액터의 요구사항이 변경될 때로 제한되어야 합니다.책임에 대해 각자 의견이 다를 수 있다. 단일 책임을 정의하려면 시스템에 존재하는 엑터들을 이해해야 한다. 같은 업무임에도 불구하고 어떤 조직은 혼자서, 어떤 조직은 다수가 임한다. 2. 개방 폐쇄 원칙코드를 확장하고자 할 때 취할 수 있는 최고의 전략은 기존 코드를 아예 건드리지 않는 것이다.추상화 된 행동에 의존한다. 즉, 인터페이스에 의존한다면 신규 요구사항에 대해.. 2024. 11. 9. 자바스프링 개발자를 위한 실용주의 3. 행동 "자동차 만들어 주세요." 라는 요구사항을 받았다. 자연스레 데이터 중심으로 이어진다. 자동차에는 엔진이 있고, 프레임이 있고 등등.. 데이터 중심 사고로 빠지는 함정 중 하나이다. 하지만 객체를 구분 짓는 요인은 데이터가 아니라 행동이다.TDA(Tell, Don’t Ask)원칙을 따르자.데이터 중심의 사고보다는 행동중심의 사고를 해라// 데이터 중심class car{ private Engine engine; private Frame frame; private List wheels;}// 행동 중심class car{ public void drive() {} public void accelerate(float speed) ..}어떤 행동(drive, acceleate)을 할 수 있는지가 곧, .. 2024. 11. 9. 자바스프링 개발자를 위한 실용주의 2. 객체 종류 VO - 신뢰할 수 있고 예측 가능한 객체불변성 : 값은 변하지 않는다. 숫자 1은 영원히 숫자 1이다.값을 바꾸지 못하도록 보장.혹은 완전히 새로운 인스턴스로 반환동등성 : 값의 가치는 항상 같다. 1은 적혀있는 위치나 시간에 관계없이 항상 1이다.equals, hashCode를 오버라이딩 할 필요가 있음id를 포함하면 안됨.자가검증 : 검증할 고민 없이 그자체가 올바른 값이다. DTO - 데이터 전송간 객체데이터를 전송하는 본연의 임무를 다 하면 된다.getter/setter, public/private 사용유무와는 별개이다.@Data 어노테이션은 개발자가 데이터 중심의 사고를 하도록 한다. 행동 위주의 사고를 하는 객체지향과 멀어진다.DAO. 데이터 접근 객체도메인 로직과 DB연결 로직을 분리하기 .. 2024. 11. 9. 독립성과 은닉성(클래스와 모듈) 우리는 과거 객체지향에 대해 공부한적이 있고 독립성과 은닉성을 배웠었다.클래스에서 독립성과 은닉성은 어떤 것을 의미했을까? java, spring을 예시로 사용하겠다 클래스의 독립성과 은닉성독립성이란 무엇일까?클래스는 독립적일 수 없다. 서로 상호작용하며 작동한다. 그런 의미에서 클래스의 독립성은 무엇을 의미할까. 독립성을 갖는다는 것은 “타 클래스 사용을 하지 않아도 되는지 고민해보기”, “의존성 관리 하기” 이라고 정의하고 싶다. 첫째로 타 클래스 사용을 하지 않아도 되는지 고민해보기이다. 클래스는 타 클래스를 사용 할 수 있다. 하지만 거대한 프로그램 코드를 작성하다 보면 여러 클래스들이 서로를 복잡하게 사용하기 시작한다. 그렇기 때문에 꼭 타 클래스를 사용해야 하는지 고민해보는 것이다. 그것이 시.. 2024. 11. 3. 이전 1 2 3 4 5 6 다음