본문 바로가기
개발/기본) 기본기

기본기) Off-by-one error (인덱스 에러)

by 테샤르 2024. 7. 23.

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는 사소한 실수로 발생하기 쉽지만, 큰 문제를 야기할 수 있다.

위의 예시들을 참고하여, 항상 배열이나 문자열 등의 인덱스를 정확히 계산하고, 루프 범위를 설정할 때 주의하는 것이 중요하고 해당 데이터에 대한 가드 케이스 문법형태로 로그를 남기는 것을 추천한다.

 

 

 

★☆☆☆☆

 

반응형

댓글