[매일매일] 백엔드 기술 일기: “에러가 났을 때 해결하는 능력”은 어떻게 키울 수 있나요?(전략 패턴)
매일 아침 ☀️ ‘매일메일’에서 받은 질문 #177을 학습·정리해 블로그에 기록합니다.오늘 주제는 “에러 해결 능력은 어떻게 키우나요?” 입니다.
전략 패턴이란?전략 패턴(Strategy Pattern) 은 객체의 행위를 동적으로 변경하고 싶은 경우, 코드를 직접 수정하는 것이 아닌 추상화된 전략의 구현만을 바꿔 객체의 행위를 변경하는 디자인 패턴입니다. 자바 언어의 요소와 함께 설명해 드리자면, 객체의 행위를 Interface로 정의하고, Interface의 메서드를 구현하는 구현체들을 주입하는 것이 전략 패턴의 대표적인 형태입니다.
class Car {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private final MoveStrategy strategy;
private final int position;
public Car(MoveStrategy strategy, int position) {
this.strategy = strategy;
this.position = position;
}
public Car move(int input) {
if(strategy.isMovable(input)) {
return new Car(strategy, car + 1);
}
return this;
} }
interface MoveStrategy { boolean isMovable(int input); }
class EvenNumberMoveStrategy implements MoveStrategy {
1
2
3
4
@Override
public boolean isMovable(int input) {
return (input % 2) == 0;
} }
class OddNumberMoveStrategy implements MoveStrategy { … }
class PrimeNumberMoceStrategy implements MoveStrategy { … }
1️⃣ 핵심 한 줄 요약에러 해결 능력은 “읽기 + 추측 + 실험”의 반복에서 자라납니다. 구글링도 기술이고, 디버깅도 훈련입니다.
2️⃣ 에러 해결의 3단계 루틴
단계
설명
팁
- 에러 로그를 읽는다
콘솔/터미널/브라우저 등에서 빨간 글씨를 두려워하지 않기
at line XX → 위치 확인, ReferenceError 같은 키워드 먼저 파악
- 키워드 중심으로 구글링
에러 메시지 복붙보다는 핵심 단어 위주 검색
“Cannot read properties of undefined” + 라이브러리 이름
- 실험하고 좁혀간다
코드를 한 줄씩 주석처리/변형해가며 원인 찾기
Git 커밋을 자주 남겨 실험 단위 분리
3️⃣ 실전 예시❌ TypeError: Cannot read properties of undefined (reading ‘map’)
// 잘못된 코드 예시 export default function UserList({ users }) { return ( <ul> {users.map((user) => ( <li key={user.id}>{user.name}</li> ))} </ul> ); }
// 이 코드에서 users가 undefined일 경우 ‘map’을 쓸 수 없어 에러 발생
✔️ 해결 과정
// 1. 초기값 확인 (예: props 또는 상태 초기화) const [users, setUsers] = useState([]); // ✅ 빈 배열로 초기화
// 또는 부모 컴포넌트에서 전달 시 props 기본값 설정 UserList.defaultProps = { users: [], };
// 2. 조건부 렌더링 export default function UserList({ users }) { return ( <ul> {Array.isArray(users) && users.map((user) => ( <li key={user.id}>{user.name}</li> ))} </ul> ); }
4️⃣ 에러 해결 능력 키우는 습관✅ Stack Overflow 활용법: 질문 제목은 최대한 구체적으로, 코드 포함은 필수✅ ChatGPT 활용법: “내 코드 전체가 아니라 의심되는 블록만 올려 설명”✅ 실전 에러 로그 아카이브 만들기:Notion이나 블로그에 “나만의 에러 사전” 작성“무엇이 원인이었고, 어떻게 해결했는지” 중심으로 정리
5️⃣ Today’s Takeaways에러는 “피할 것”이 아니라 “읽고 대화할 대상”이다.에러는 내 실수를 찝어주는 AI 조교라고 생각해보자.해결력이 뛰어난 개발자는 코드를 완벽히 짜는 사람이 아니라, 에러를 빠르게 추적하는 사람이다.
✍🏻 마무리 메모처음에는 막막하지만,하루에 하나씩 ‘읽고 해결해본 에러’를 기록해보면조만간 구글 검색어가 날카로워지고, 로그만 봐도 방향이 보이기 시작할 거예요.내일도 한 걸음씩 성장하기 위해,[매일매일] 카테고리에서 함께 학습해요! 😊
참고 자료 및 출처https://victorydntmd.tistory.com/292
[디자인패턴] 전략 패턴 ( Strategy Pattern ) 전략 패턴 ( Strategy Pattern )객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여,객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니다.간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴입니다. 01. 전략 패턴 사용 이유예를 들어, 기차( Train )와 … victorydntmd.tistory.com
https://www.youtube.com/watch?v=vNsZXC3VgUA
https://www.youtube.com/watch?v=hL0gdGJgI4k
https://www.maeil-mail.kr/question/177
매일메일 - 전략 패턴에 대해서 설명해주세요. 전략 패턴(Strategy Pattern) 은 객체의 행위를 동적으로 변경하고 싶은 경우, 코드를 직접 수정하는 것이 아닌 추상화된 전략의 구현만을 바꿔 객체의 행위를 변경하는 디자인 패턴입니다. 자바 언어의 요소와 함께 설명해 드리자면, 객체의 행위를 Interface로 정의하고, Interface의 메서드를 구현하는 구현체들을 주입하는 것이 전략 패턴의 대표적인 형태입니다. ```java class Car { private final MoveStrategy strategy; private final int position… www.maeil-mail.kr