우테코 3주차 회고
·
Programming
검증의 책임을 어디에 둘 것인가?이번 미션에서 가장 깊이 고민한 부분은 “검증을 어디서, 어떻게 수행해야 하는가”였다. 이전 미션에서도 한 번 다뤘던 주제였지만, 이번에는 검증 항목이 훨씬 다양해지면서 그 중요성이 더 크게 다가왔다. 처음에는 하나의 검증 함수에 모든 조건을 담으려 했지만, 검증의 종류가 늘어날수록 로직이 복잡해졌고, 결국 세부적인 검증 함수로 분리하게 되었다. 이 과정에서 중복되는 로직을 공통화하여 재사용하도록 개선했지만, 구조가 깔끔해질수록 새로운 의문이 생겼다. 바로 “검증은 과연 어디에서 수행해야 하는가?”였다. 초기에는 입력 단계에서 모든 검증을 처리하려 했다. 사용자 입력 오류가 대부분의 문제를 일으킨다고 생각했기 때문이다. 그러나 테스트 코드를 작성하면서 Lotto 객체 내부..
우테코 2주차 회고
·
Programming
저번 프리코스에서는 그냥 원래 있던 테스트 코드를 참고해서 그대로 작성해봤는데, 이번 프리코스를 통해 처음으로 JUnit과 assert의 동작 원리를 직접 이해하게 되었다. 단순히 결과를 확인하기 위한 도구라고만 생각했던 테스트 코드가, 이번에는 실제로 코드의 동작을 보장하고 설계를 점검하는 역할을 한다는 것을 느꼈다. 그래서 자연스럽게 “테스트 코드를 어떻게 작성해야 하는가”뿐만 아니라, “테스트가 코드 구조에 어떤 영향을 미치는가”까지 고민하게 되었다.1. 책임의 경계를 어떻게 잡을 것인가RacingGame 클래스를 설계할 때 가장 먼저 고민한 것은 책임의 범위였다. 초기에는 자동차 생성, 이동, 우승자 계산뿐 아니라 입력 검증까지도 모두 RacingGame이 처리하도록 구현했는데, 그렇게 되면 클래..
Discord에 500 Error Webhook으로 알림 보내기
·
Programming
Webhook이란?웹 훅(은 특정 이벤트가 발생했을 때, 지정된 URL로 HTTP 요청을 자동으로 보내는 방식을 의미합니다.쉽게 말해, "이런 일이 일어나면 이 주소로 알려줘!"라고 미리 연결해 두는 것입니다.이번에 해볼건 서버에서 500에러가 발생했을 때, 이 사실을 프론트에게 혹은 팀원들에게 알리고 싶어서 하나의 팀 스페이스 디스코드나 슬랙을 통해 이 사실을 알려주도록 하는 것입니다!1. 디스코드 웹훅(Webhook) 설정먼저 디스코드에서 웹훅을 생성해 웹훅 URL을 준비해야 합니다.테스트 환경을 위해 저는 팀원들이 사용한다고 가정한 미녁 서버를 기준으로 설명하겠습니다. 웹훅을 생성하려면 먼저 왼쪽 상단의 서버 이름을 클릭해 서버 설정 메뉴로 들어갑니다. 이제 왼쪽 메뉴에서 ‘연동’을 선택한 뒤,..
AOP랑 OOP랑 뭐가 다르지?
·
Programming
AOP란?Aspect Oriented Programming은 횡단 관심사(Cross-Cutting Concern)의 분리를 허용함으로써 모듈성을 높이는 것을 목적으로 하는 프로그래밍 패러다임이다. AOP를 사용하면 여러 객체에 공통적으로 적용되는 기능(예: 로깅, 보안, 트랜잭션 관리 등)을 핵심 로직에서 분리하여 별도의 모듈(Aspect)로 관리하게 된다. 이를 통해 개발자는 반복적인 공통 기능을 매번 구현할 필요가 없어지고, 핵심 비즈니스 로직 개발에 집중할 수 있다. 예시를 들어 설명하기 위해서 여러 할인 정책이 있고, 오류 추적을 위해 로깅을 추가했다고 하자. 처음엔 FixedDiscountPolicy에 단순히 System.out.println을 위·아래로 넣어 처리했다.public class ..
SOLID 원칙: 객체 지향 설계의 5가지 기본 원칙
·
Programming
객체지향 프로그래밍(OOP, Object-Oriented Programming)은 현대 소프트웨어 개발에서 빼놓을 수 없는 중요한 패러다임 중 하나예요. 그런데 혹시 이런 생각 해본 적 있으신가요? "객체지향으로 구현만 하면 그게 다 좋은 코드인 걸까?" 사실 중요한 건 ‘무엇을 구현했느냐’보다 ‘어떻게 구현했느냐’에 대한 고민이 아닐까 싶어요. 객체지향 프로그래밍을 제대로 하려면 단순히 클래스와 객체를 사용하는 걸로 끝나선 안 돼요. 객체지향의 철학과 원칙을 제대로 이해하고, 그걸 코드에 녹여내는 것이 정말 중요하죠. 그렇다면, 잘 구현된 객체지향적 코드는 어떤 모습일까요? 어떤 형식을 갖춰야 잘 구현된 객체지향적 코드라고 할 수 있을까요? 1. SRP: 단일 책임 원칙 (Single Responsib..