분류 전체보기

설계

[오브젝트] 객체 지향 설계

절차지향 vs 객체지향절차지향프로세스와 데이터를 별도의 모듈에 위치시키는 방식모든 처리가 하나의 클래스 안에 위치하고 나머지 클래스는 단지 데이터의 역할만 수행public class Theater { public void enter(Audience audience, TicketSeller seller) { if (audience.getBag().hasInvitation()) { // 초대장이 있으면 Ticket ticket = seller.getTicketOffice().getTicket(); audience.getBag().setTicket(ticket); // Theater가 Audience의 가방을 직접 확인 } else { //..

우테코

[우아한테크코스] 프리코스 4주차 - 편의점 미션 회고

1.1. 복잡한 요구사항 분석과 설계미션 난이도 변화1~3주차: 단순 요구사항익숙한 도메인과 비교적 단순한 요구사항이었습니다.객체지향 설계와 TDD를 적용하는 것에 집중했습니다.코드 품질을 개선하는 연습을 했습니다.4주차: 복잡한 요구사항A4 2페이지 분량의 복잡한 요구사항이었습니다.프로모션, 멤버십, 보너스 상품 등의 복잡한 비즈니스 로직을 이해하는데 시간이 걸렸습니다 (1시간)예상 출력과 테스트 코드로부터 숨겨진 요구사항을 발견할 필요가 있었습니다.5시간 내에 구현하는 것을 도전해보면서 시간에 대한 압박감이 있었습니다.결국 구현하는데 이틀이라는 시간이 걸렸습니다.. 발생한 문제점요구사항 분석의 어려움복잡한 요구사항을 이해하는데 어려움을 겪었고, 일부 요구사항을 누락하여 파악했습니다.숨겨진 요구사항을 ..

우테코

[우아한테크코스] 프리코스 중간 회고

중간 회고지원서에 작성한 목표 달성 정도기존 목표 : 요구사항을 만족할 때까지 AI 도구를 사용하지 않겠다는 목표지원서에 작성한 "요구사항 만족 전까지 AI 도구를 사용하지 않겠다"는 목표를 지금까지 잘 지켜오고 있습니다. 1, 2주차 미션 전 과정(테스트, 구현, 리팩토링)에서 GPT나 Copilot의 도움 없이 진행했고, 테스트 통과 후 1-2일 정도만 GPT의 의견을 참고해 추가 리팩토링을 진행했습니다. 위 목표를 지키면서 얻은 점을 정리해보았습니다.첫째, 코딩 실력이 빠르게 성장했습니다.매 미션마다 구현 시간이 확연히 빨라졌고, 직접 모든 코드를 작성하다보니 문법과 작성 패턴이 더 깊이 기억에 남았습니다.둘째, 네이밍 스킬이 늘었습니다.자주 사용되는 도메인 용어나 메서드명을 문서화하여 도메인에 더..

우테코

[우아한테크코스] 프리코스 3주차 - 로또 미션 회고

3주차 미션https://github.com/woowacourse-precourse/java-lotto-7/pull/236 [로또] 김명지 미션 제출합니다. by Starlight258 · Pull Request #236 · woowacourse-precourse/java-lotto-7로또 기능 목록 1. 로또 구입 금액을 입력 받는다. 1000원 단위의 구입 금액 입력 구매 금액 저장 2. 로또를 발행한다. 로또 구매 금액으로부터 구매할 로또 수량 계산 로또 수량만큼 1~45 사이의 중github.com 느낀 점TDD를 제대로 적용하자TDD에 대한 오해처음에는 TDD를 단순히 테스트를 먼저 작성하고 구현하는 방식으로 이해했습니다. 그래서 전체 시스템의 입출력을 검증하는 통합 테스트를 작성하고 이를 통과..

우테코

[우아한테크코스] 프리코스 2주차 - 자동차 경주 미션 회고

고민한 점1주차 공통 피드백을 반영하자1주차 과제를 제출하고 공통 피드백을 확인했습니다.미처 생각하지 못한 부분이 많아서 많이 배웠습니다.1주차 과제를 피드백에 맞게 수정하고, 2주차 과제에 피드백을 고려하며 구현했습니다.특히 아래와 같은 부분에서 코드를 수정했습니다. 의도를 드러내지 않는 이름 사용하지 않기xx1, xx2처럼 파라미터에 연속된 숫자를 덧붙이는 것보다는 명확한 변수 이름을 사용하도록 수정했습니다.public class IntegerComparable implements NumberComparable { // 기존 @Override public boolean meetsThreshold(final Integer number1, final Integer number2) {..

우테코

값 객체(VO) : 일반 클래스 vs record

값 객체(VO) : 일반 클래스 vs record우테코 프리코스에서 코드 리뷰를 하는 과정에서, 값 객체를 구현할 때 일반 클래스와 record 중 어느 것으로 구현하는 것이 적절한지 이야기가 나왔다.record가 보일러플레이트 코드를 줄여주고 불변 객체를 생성해주는 장점이 있어 값 객체에 적합해보이지만, 과연 도메인 객체로 사용하는 것이 적절할까? record 간단 설명java 16에서 정식 도입되었다.데이터 전달을 위한 불변 객체를 편리하게 생성할 수 있다.필드가 모두 private final이다. 각 필드의 이름으로 getter가 생성된다.컴파일러가 생성자와 equals(), hashCode(), toString()을 자동으로 생성한다.final 클래스로 선언되므로 상속이 불가능하다. 예시일반 클..

우테코

[우아한테크코스] 프리코스 1주차 - 문자열 덧셈 계산기 미션 회고

프리코스 1주차 - 문자열 덧셈 계산기 미션 회고https://github.com/woowacourse-precourse/java-calculator-7/pull/1434 [문자열 덧셈 계산기] 김명지 미션 제출합니다. by Starlight258 · Pull Request #1434 · woowacourse-precourse/jaREADME.md 파일 참고해주세요. 감사합니다.github.com 고민한 점추상화는 어디까지 해야할까?추상화 시기이전 프로젝트에서는 여러 종류의 클래스가 필요할 때 인터페이스를 도입했다.그런데 이번 미션은 요구사항에 따라 구현할 클래스가 이미 정해진 상황이다.하지만 확장 가능한 설계를 먼저 고려해서 좋은 소프트웨어를 만들기 위해 노력해 보려고 했다. 추상화 결정 기준추상화를 ..

문제&해결

Redis 도입하기 : CI/CD 파이프라인 수정기 (Blue/Green 무중단 배포)

서론팀 프로젝트에 OAuth 기능을 도입하며 Redis를 추가할 상황이 생겼습니다.⬇️ OAuth 소셜 로그인 안전하게 구현하기 (redirect_uri, redis, token)서론OAuth의 기본 개념 소개OAuth의 핵심은 인증과 인가를 구분하는 것인증 : 사용자가 자신의 신원을 증명하는 것ex) id, pw로 로그인인가: 인증된 사용자에게 특정 리소스에 대한 접근 권한을 부여shout-to-my-mae.tistory.com 이 과정에서 기존 인프라를 수정할 필요가 있었는데, redis 도입 과정에서 겪은 트러블슈팅을 정리했습니다. 기존 인프라 구성도커 기반의 컨테이너된 환경에서 운영되고 있습니다.Blue/Green 무중단 배포 전략이 사용되었습니다.CI/CD 파이프라인은 github action에..

mint*
'분류 전체보기' 카테고리의 글 목록 (3 Page)