Off-by-one error (인덱스 에러)
"Off-by-one error"는 프로그래밍에서 매우 흔히 발생하는 실수로,
예상한 값보다 1이 더 많거나 적게 처리되는 오류를 말한다.
대부분은 Index 의 시작 0 과 연관이 있다.
반응형
< 배열 인덱스 접근 >
int[] numbers = {1, 2, 3, 4, 5};
// 잘못된 접근: IndexOutOfRangeException이 발생할 수 있음
for (int i = 0; i <= numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
// 올바른 접근
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
< 슬라이싱 및 부분 문자열 >
string text = "Hello, World!";
// "World"를 추출하고자 할 때
string sub = text.Substring(7, 5); // "World"
// 잘못된 접근: ArgumentOutOfRangeException이 발생할 수 있음
string subError = text.Substring(7, 6); // "World!"
< 컬렉션의 끝 요소 접근 >
List<int> list = new List<int> {1, 2, 3, 4, 5};
// 잘못된 접근: ArgumentOutOfRangeException이 발생할 수 있음
int last = list[list.Count];
// 올바른 접근
int lastCorrect = list[list.Count - 1];
Off-by-one error는 사소한 실수로 발생하기 쉽지만, 큰 문제를 야기할 수 있다.
위의 예시들을 참고하여, 항상 배열이나 문자열 등의 인덱스를 정확히 계산하고, 루프 범위를 설정할 때 주의하는 것이 중요하고 해당 데이터에 대한 가드 케이스 문법형태로 로그를 남기는 것을 추천한다.
★☆☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)C# : Namespace 명명 규칙 (0) | 2024.10.05 |
---|---|
기본기)C#) 튜플 값 변경 List<(enum,bool)> (0) | 2024.08.08 |
기본기) 타입 추론 (Type Inference) (0) | 2024.05.17 |
기본기)C# Null 전파 사용(dotnet style null propagation) (0) | 2024.05.13 |
기본기) 비교 연산 차이 (Equls , == ) (0) | 2024.04.23 |
댓글