블로그
전체 82025. 03. 31.
0
워밍업 클럽 3기 BE 클린코드&테스트 - 1주차 발자국
회고 추상과 구체일반적인 추상과 프로그램에서의 추상은 더 많은 부분이 숨겨져 있다.논리, 사고의 흐름함수를 이용하여 분리 할경우 early return 과 depth를 줄여서 코드가 바로 읽히도록 해야 한다.Optional은 보이며 바로 처리하자.객체지향 패러다임각 객체들은 책임을 가지고 있고 관심사의 분리로 이루어 진다.Getter/Setter 대신에 꼭 필요한 함수를 지정해 사용하여야 한다.SOLID/DI/IoC를 이용하여 각 개체들을 설계 및 생성/ 주입객체지향 적용하기 Entity와 도메인을 사용 상속과 추상화를 이용하여 리팩토리 하자. 배운점 평소에 아무 생각없이 작성하던 코드를 다시금 곱씹어보게 되었다. 코드를 무작정 작성하기 보다 먼저 생각하고 작성하게 되었다.
백엔드
・
클린코드
2025. 03. 30.
0
Readable-code 인프런 워밍업 4주차 후기
강의 요약 테스트에 관한 역할 관한 조언 하나의 테스트는 문서의 기능을 가진다. 테스트의 환경을 다른 개발자들과 공유하여 규칙을 만든다.각자의 테스트는 다른 개발영역에 영향을 주어서는 않된다.각 테스트 환경은 개별적으로 독립성이 보장되어야 하며 공유 자원을 이용해서는 않된다. Spring Rest Docs 를 이용하여 문서화를 할수 있다. 회고현업에선 쓰고 있는 Spring Rest Docs를 다시 한번 회고할수 있었다.Swagger -> Spring Rest Docs로 변경하는 입장에서는 훨씬 프로덕션 코드의 생산성을 올린다.테스트작성시 코드가 많은 단점이 있지만 정상적으로 테스트가 이루어 지면 코드의 신뢰도가 생긴다.
백엔드
・
클린코드
・
테스트코드
2025. 03. 27.
0
워밍업 클럽 3기 Code 과정 Day 18 미션
1. @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 차이점 @Mock, @SpySpring Context가 없이도 동작가능 Mock은 가짜 객체를 만드는 반면 Spy는 진짜 객체를 감싸서 만듬.Mock은 동작을 지정하지 않으면 기본값을 반환 Spy는 동작을 지정하지 않으면 실제 객체의 동작을 유지 @MockBean, @SpyBeanSpring Context 에서 주입을 해줌 기본적인 Mock, Spy 처럼 동작을 함. @InjectMocks기본적인 Mock 객체들을 테스트 주입(Mock, Spy) 2. 테스트 항목 @BeforeEach, given절, when절에 배치@BeforeEach void setUp() { 0-1. 사용자1 생성에 필요한 내용 준비 0-2. 사용자2 생성 0-3. 사용자1 게시물 생성에 필요한 내용 준비 0-4. 사용자1 게시물 생성 0-5. 사용자2 생성에 필요한 내용 준비 0-6. 사용자2 생성} @DisplayName("사용자가 댓글을 작성할 수 있다.")@Testvoid writeComment() { // given 1-1. 사용자1의 댓글 생성에 필요한 내용 준비 // when 1-2. 사용자1의 댓글 생성 // then 검증} @DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")@Testvoid cannotUpdateCommentWhenUserIsNotWriter() { // given 2-1. 사용자1의 댓글 생성에 필요한 내용 준비 2-2. 사용자1의 댓글 생성 // when 2-3. 사용자2가 사용자1의 댓글 수정 시도 // then 검증 }@DisplayName("사용자가 댓글을 수정할 수 있다.")@Testvoid updateComment() { // given 3-1. 사용자1 댓글 생성에 필요한 내용 준비 3-2. 사용자1 댓글 생성 // when 3-3. 댓글 수정 // then 검증} 결론적어도 하나의 게시물과 사용자는 생성을 한후 해당 테스트를 처리 한다. 테스트를 위해 각 테스트마다 중복된 사용자를 만들기 보다 미리 선언 후 이용하는 것이 낫다고 판단.중복된 코드도 회피를 할수 있다.
백엔드
・
코드테스트
・
워밍업클럽
2025. 03. 23.
0
[인프런 워밍업 스터디 클럽 3기] 디자인 3주차 발자국
입력 컴포넌트 미션라벨/텍스트박스/체크박스/스위치 등을 이용하여 체계적으로 생성그전에 만들어 놓았던 여러 Variable 들을 이용하여 전체적인 디자인 시스템이 만들어져감여러 컴포넌트들을 모아서 하나의 그룹으로 만들수 있음.하나의 그룹에 만들어진 컴포넌트들을 재조립해서 새롭게 다른 컴포넌트를 만들 수 있음.만들어진 복합 컴포넌트들은 해당 속성들을 계속 사용 가능함.아쉬웠던 점내껄로 만들기 위해서는 차근차근 따라 가야 하지만 툴 다루기가 너무 어려움.단축키를 많이 알고 많이 써봐야지 속도가 제대로 붙을꺼 같음.
BOLD
・
UI/UX
・
볼드UI/UX
2025. 03. 23.
0
[인프런 워밍업 클럽 3기 BE 클린코드 & 테스트 스터디 ] 발자국 3주차
3주차레이어드 아키텍처(Layered Architecture)와 테스트각 계층별로 단위 테스트로 진행 작은 단위로 테스트를 진행하며 전체 테스트를 의미하는 부분은 아님 Persistene Layer 테스트SpringBootTest / DataJpaTest 어노테이션의 차이점 가장 기본적인 테스트로 디비에 데이터가 제대로 저장되는지 처리 테스트 후 Rollback 처리 Business Layer 테스트구체적인 복잡한 로직들의 테스트를 위함 처리 Persistence Layer에서 자동으로 처리되던 Rollback을 직접 처리 해야 함CQRS 패턴을 이용하여 R/CUD 분리
백엔드
・
CleanCode
2025. 03. 16.
0
[워밍업-백엔드3기] ReadableCode 2주차 회고
2주차 새롭게 배운 내용들일급 컬렉션업무도메인별로 하나의 객체를 생성하며 해당 객체는 업무를 책임진다.Enum추상화된 객체이며 상수를 이용한다.예외관리예외를 미리 막을수는 없다. 그러기에 리팩토링을 항상 생각하며 작성하는 순간 레거시가 되므로 예외를 막기에 힘쓰자.Optional의 파라미터 사용을 지양하자.무분별한 Optional은 도리어 문제를 야기 시킨다. 보이면 바로 해제하자.2주차 회고 회사 업무 때문에 강의를 쫓아가기 힘들었으나 쉬는 시간 짬을 내어서 수강했다. 라디오를 듣듯이 하고 코드를 봐야 하는 경우 따로 시간을 내어 쫓아가야 한다. 강의를 들으면서 머릿속에 코드를 그릴수 없다면 꼭 코드를 쳐보기를 바란다.
백엔드
・
클린코드
・
ReadableCode
・
워밍업클럽
・
박우빈님강의