Development

Error/개발환경

[Git] 잘못된 브랜치에 커밋 했을때 대처법

🔍 개요 프리코스를 진행하면서 실수로 branch를 만들고 체크아웃을 하지 않고 미션을 진행했다. 이런 경우 첫 번째 커밋을 제외한 나머지는 전부 롤백시키고, 그동안 진행한 커밋들을 branch로 옮겨야 하는데.. 1.새로운 브랜치 생성 및 체크아웃 먼저 옮길 브랜치를 생성하고 해당 브랜치로 체크아웃합니다. git checkout -b 2.커밋 해시 찾기 git log # 첫 번째 커밋 해시를 확인하세요. (방향키로 조작 가능) git reset --hard git log 명령어를 사용하여 main 브랜치의 첫 번째 커밋 해시를 찾습니다. (만약 다른 해시로 복구하려면 그걸 복사) 그런 다음 첫 번째 커밋 상태로 브랜치를 초기화합니다. 는 실제 첫 번째 커밋의 해시로 교체해야 합니다. 3.main 브랜치..

Study/우아한 테크 코스

테스트는 왜 해야할까? 내가 생각하는 테스트코드를 작성하는 이유

테스트와 OCP의 관계 테스트를 작성하는 여러 이유 중 하나는 객체 지향 설계 원칙 중 OCP(Open-Closed Principle)와 관련이 있다. 이 원칙은 클래스는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다는 것을 의미한다. 이 원칙을 지키지 않을 경우, 테스트하기 어려운 코드가 발생할 수 있다. 예를 들어, 랜덤한 숫자를 가져와야 하는 로직이 있다면, 이 로직을 테스트하는 것이 어려울 수 있다. 랜덤넘버를 이용한 코드와 테스트 [문제 상황] 랜덤한 숫자를 이용해서 게임을 진행하는 코드가 있다고 가정하자. 이러한 로직은 직접 테스트하기 어렵다. public class RandomGame { public String play() { int randomNumber = (int) (Math..

Study/우아한 테크 코스

[우아한 테크 코스] 프리코스 - 2주차, 레이싱카 회고

1일차 개발에 들어가기 전 기능 목록 구현을 위해 1주차와 마찬가지로 하지만 1주차의 경험을 바탕으로 설계를 진행하였다. 플로우 차트는 요구 사항에 맞게 금방 구현했었는데, 문제는 역시 클래스 다이어그램을 설계하는 과정이었다. 이번에는 컨트롤러, 서비스, 뷰, 모델로 프로젝트를 구성하기로 생각을 했었다. 이유는 컨트롤러에서 프로그램을 제어하는 책임과, 비즈니스 로직까지 포함되어 있어 처음에 계획했던 것 이상의 책임을 가지게 되었기 때문에 비즈니스 로직을 처리하는 서비스를 만들기로 했다. 서비스에서는 모델에 접근하여 비즈니스 로직을 처리하고, 컨트롤러는 입출력과 서비스를 제어하는 역할을 맡겼다. 이렇게 하니 조금 더 코드가 간결해지고 테스트하기 용이해졌다고 판단했다. 그 다음 고민은, 유효성 검증과 메시지..

개발환경

[Github] 코드 리뷰 쉽게 하는 방법

❓ 개요 코드 리뷰를 해보려는데 어떻게 해야되는지 헷갈리는 경우가 많습니다. 팁들을 모아 코드를 리뷰하는 방법에 대해 알아보겠습니다. 먼저 Github 레포지토리에서 PR에 들어가게 되면 위의 이미지와 같이 확인이 가능합니다. 그 다음 Files changed를 누르면 아래와 같은 이미지로 나타나는데 이제 코드 리뷰를 하기 전 쉽게 소스코드들을 따라갈 수 있게 "." 물음표 옆에 위치한 점을 누르면 이렇게 웹 에디터가 나타납니다! 이러면 소스코드를 따라가면서 파악하기도 쉽고, (Ctrl + 클릭) 보기에도 좋습니다. 이제 코드 옆 + 버튼을 클릭하게 되면 이렇게 리뷰를 할 수 있고, 댓글 추가를 누르면 리뷰가 달리게 됩니다! ++ 추가로 이런 리뷰들이 많이 달리면 코드를 보기가 어려운 경우가 종종 있는데..

Study/우아한 테크 코스

private 메소드 테스트 꼭 해야 할까?

private 테스트 해야돼? private 메소드는 어떻게 하나요? 라는 질문이 우테코 단톡에 올라왔다. 리플렉션을 사용하는 방법(개인적으로 절대 사용하지 않는) 내가 답변했던 package-private을 사용하는 방법 테스트 자체를 하지 않는 방법(말도 안된다고 생각했다.) 말도 안된다고 생각 했던 이유는 가장 중요한게 내부 구현인데 그걸 테스트 하지 않는다고? 라고 생각했었기 때문이다. 그래서 나도 package-private을 사용해서 private을 해제하고 내부 구현의 개발을 진행하였다. 그런데 이게 진짜 맞을까? 라는 생각이 들었다. 처음에 이펙티브 자바 접근 제한자에 대해서 공부할 때 package-private(default)에 대해서 알게 되었고, 이를 테스트시에 풀어줘도 된다. 라는..

Study/이펙티브 자바

[Effective Java 3E] 로 타입은 사용하지 말라

💥 개요 한글 용어 영문 용어 예시 매개변수화 타입 parameterized type List 실제 타입 매개변수 actual type parameter String 제네릭 타입 generic type List 정규 타입 매개변수 formal type parameter E 비한정적 와일드카드 타입 unbounded wildcard typ List 로 타입 raw type List 한정적 타입 매개변수 bounded type parameter 재귀적 타입 한정 recursive type bound 한정적 와일드카드 타입 bounded wildcard type List에는 (null 외에는) 어떤 원소도 넣을 수 없다. 다른 원소를 넣으려 하면 컴파일 시점에 오류가 발생한다. @Test void 와일드카드타..

Study/우아한 테크 코스

MVC 패턴, 우아한 테코톡 내용 총 정리

MVC패턴 왜 쓰는 걸까? 우테코를 진행하면서, mvc 패턴에 대해서 막연히, 추상적으로 알고 있었던 부분에 대해서 우아한 테코톡을 보며 mvc의 대한 발표 내용을 정리해보았다. 개인적으로 영상을 보면서 1시간 이내의 짧은 시간으로 많은 부분에 대한 확신을 얻어갔던 것 같다. 제리 발표 내용 정리 1.Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다. 2.View 내부에 Model의 코드만 있을 수 있고 Controller 코드가 있으면 안된다. 3.View가 Model로부터 데이터를 받을때는 사용자마다 다르게 보어주어야 하는 데이터에 대해서만 받아야 한다. 4.Controller는 model과 View에 의존해도 된다. 5.View가 Model로부터 데이터를 받을 때, 반드..

Study/우아한 테크 코스

[우아한 테크 코스] 프리코스 - 1주차, 숫자 야구 회고

[1일차] 처음에 뭐부터 할지 고민하다 기능 목록을 먼저 정의하라는 요구사항에 따라 기능 목록을 작성했다. 기능 목록을 어떤식으로 나타내야 사용자에게 보기 좋을까? 를 생각했고, 나라면 그림이 제일 위에 있으면 좋겠다 라고 생각해서 다이어그램을 그리기로 했다. 그 전에 꼼꼼하게 진행방식, 미션 제출 방법, 체크리스트 등을 꼼꼼하게 다 읽고 기능 요구 사항을 살펴봤다. 간단해보이지만 단순하게 코딩테스트처럼 문제를 푸는것을 원하지 않기에, 그리고 자바를 통한 개발이 익숙하지 않아 학부때 배운 책을 다시 펴고 이 문제는 어떻게 해결하지? 라는 생각부터 했다. 그 이후에는 어느정도 정리가 돼서 내가 개발할 대략적인 그림을 플로우 차트를 통해서 그리기로 마음을 먹었고, 머메이드의 Docs를 통해 다이어그램을 그리..

mntdev
'분류 전체보기' 카테고리의 글 목록 (4 Page)