[워밍업클럽3기] 백엔드 코드 - 박우빈 발자국 2주차

[워밍업클럽3기] 백엔드 코드 - 박우빈 발자국 2주차

출처

[워밍업클럽 리더블코드 ]
[워밍업클럽 테스트코드]

 

👣발자국2주차👣

🏫배운 내용 🏫

주석의 양면성

  • 자주 변하는 정보는 최대한 주석 사용 지양하기

  • 우리가 가진 모든 표현방법을 총 동원해서 → 코드에 녹여 → 주석 사용 지

지뢰찾기 리팩토링

  • 게임의 상태를 주석으로 설정하는 대신 → ENUM으로 관리

  • 그래서 외부에서 호출해서 사용하기

무한루프 반복 구조는 위험

  • 특정 상황에서만 반복문 돌도록 바꿔줘야한다.

  • 지뢰찾기 같은 케이스에서는 게임이 “진행중” 일때만 반복문 돌 수 있도록 처리하기

변수와 메서드의 나열 순서

💡

상태변경 메서드 >> 판별 메서드 >> 조회 메서드 순으로 나열 하자

이때, 메서드 우선순위는 공개 메서드에서 private메서드 순으로 내려와야한다.

 

 

자동테스트?

  • 그동안 내가 학원에서 배워온 건, 수동테스트 였나보다

  • 스프링부트에서 애너테이션을 활용하여 수동사냥만 해왔던 것..인가?

  • 그리고 단위로 /unit으로 쪼개서 (메소드,클래스별로) 테스트를 진행 ⇒ 단위테스트

    • 그러다보니 검증속도도 빠르고 안정적임

     

     

    JUnit이란?

    • 단위 테스트를 위한 프레임워크 → 퀜트백 프레임워크

    • 풍부한API제공해주는 프레임워크로 테스트 코드 작성해보자

       

       

       

      JUnit vs assertJ 두개의 차이점

      • AssertJ 의 장점

        • 자연어 가까워 가독성이 좋다

        • 체이닝 방식이 가능함

      • JUni5의 단점

        • assertEquals는 단순히 "Expected: A, Actual: B" 결과물만 추출함

        • 기능이 단순하고 제한적

     


assertJ 다양한 메서드

기본적인 검증 isEqualTo() : 두 값이 같은지 비교 isNull() : 값이 null인지 비교 isTrue() : 값이 true인지 비교

컬렉션 검증 hasSize() : 컬렉션의 크기 비교 —> 리스트의 사이즈 찾기 contains() : 컬렉션에 특정 요소가 포함되어 있는지 확인 isEmpty() : 컬렉션이 비어 있는지 확인

 

🎶경계값 조건 * 정수가 3이상일때, A라는 조건 만족해야함.

해피케이스

  • 경계값 활용하기 !

  • 즉, 3에대한 테스트를 짜보자.

  • 5에 대해는 만족하지만, 3이 만족이 안될 수 있잖아 !

예외 케이스

  • 2로 조건값보다 더 아래쪽 범위로 테스트 하기


인사이트

칭찬

  • 깃 사용법에 대해 좀더 연구하고, 프로젝트에 적용하며 강의를 따라가려고 노력하였다.

  • 깃에 대해 전혀 몰랐던 사람으로,,, 개발 공부하기 위해선 깃 활용이 무척이나 중요하다는 걸 깨달았다.

  • 코드리팩토링시 강의를 보며 , 강사님이 로직 처리를 하는 한단계 한단계씩 끊어서 정리하였다.

  • 테스트코드 진행시, 테스트하기 어려운 부분을(요구사항에 맞게 테스트 로직을 짰는데, 그 요구사항이 개발하는 시점의 요구사항이랑 충돌이 될때 )

    • 잘 이해하고 숙지하며 이 로직에 대해선 따로 분리하여 테스트 코드 관리하는 시야가 필요하다.

  •  

아쉬움

  • 그러나, 동영상 일시정지를 하고 노션에 정리한다고 한들, 온전히 내것이 되는가? 아쉬움이 남아있다.

  • 이상태로 다시 한번 해보세요~ 주어지면 , 아무것도 못한다.

  • 내 스스로 코드를 짜보는 학습이 필요할 것 같다.

  • 이번 미션11 코드 제출도 어디서 어떻게 시작 해야 할지 막막하다

 

앞으로 어떻게?

  • 지금도 지뢰찾기 코드 마스터 하지도 않고, 미션 제출도 선생님 코드 따라치기만 했었다.

  • 지뢰찾기 로직을 파악하기엔 내 머리가 아직 준비가 안되었고, 내 마음의 여유가 준비되지 않은 상태였다.

  • 현재 국비학원 졸업작품으로 팀프로젝트를 지난주에 시작 하다보니, 우선순위는 팀포폴이다.

  • 그래서 시간을 내어 지뢰찾기 코드를 마스터 하기에는 조금은 어려울 듯 하여 ,,,,

    • 팀포폴이 어느정도 마무리가 되어가면 그때 지뢰찾기 자바 코드 눈에 익히고 리팩토링 수업을 다시 들으며

    • 공부를 해야 할 것 같다는 생각이 든다.

 

 

 


🧑🏻‍💻두번째 중간점검

 

나의 코드를 다른분 코드와 비교해보자 !

미션4 미션 공통 피드백

  1. static정적 메소드는 빼자 ( 인텔리제이 단축키 사용한 사람 적.발)

 


풀스택 취업 준비

백엔드의 매력은 ?

  1. 눈에 예쁘게 보이는거 좋아하는데 → 프론트 개발자도 고민 → 프론트 앤드를 어느정도 잘 할줄 아는 백앤드 개발자가 되기로 함

  2. 성향상 잘 맞을 것 같았다. 복잡한 방식을 여러 방법으로 접근 할 수 있는게 성향이 잘 맞았다.

 

따라치기만 하는 지금 상황

  1. 어려움 보다는 익숙함의 문제이다 . 어려움건 10%일뿐 .

  2. 익숙하지 않아서 거부감이 드는 것 일뿐,

  3. 진짜 어려운건 아님 . 석박사 해야지 알수있는 정도는 아님

  4. 메타인지 및 의도적으로 수련하는 것이 가장 빠르고 명확하다

 

💡될때까지 반복해라.💡



계층구조 패키지 나누기 기준이란?

도메인중심 ( 유저, 히스토리, 오더 )

  • 도메인별로 관심사가 명확해짐

  • 프로젝트가 커서, 도메인별로 떨어져야한다 → 아주 좋아

  • 유저가 회원이라는 도메인이 정말 중요해서 떼어야함 → 아주 유리 하다

  • 컨트롤러,서비스 계층들이 각각 저 도메인별로 나누어져 있다보니, 패턴이 달라질 수 있음

  • 공통기능이 멀리 떨어져 있으니, 공통기능이 중복으로 생성 될 우려가 있음

 

레이어 중심 ( 컨트롤러,서비스,모델)

  • 한눈에 레이어러 보기 좋아.

  • 도메인간 결합도가 증가해서 MSA전환이 불리하다

 

💡작은 프로젝트이면 레이어중심이 좋다

💡큰 프로젝트는 도메인 중심으로 잡자.

 


개발 면접

  1. a 먼저 개발 지식 질문 CS기초, 스프링등

  2. b 이력서 기반 질문

  3. 인성 질문 (개발에 대한 태도 )

  • 질문의 빈도는 A>B>C

  • 그러나 C가 별로이면 무조건 탈락


취업준비에 대해

  1. 회사가 원하는 기술들 JD가 무엇인지 공통적으로 찾고 있는 기술스택이 무엇인지 찾아보기

  2. 그리고, 그 회사만이 찾고있는 기술,팀 도메인이 무엇인지 챙겨보기

  3. 예상질문리스트 검색해서 → Interview Question Driven 취준 하기

댓글을 작성해보세요.


채널톡 아이콘