처음으로 버그를 해결하다

늪지대·2022년 9월 13일
0
post-thumbnail

개발공부를 시작하기로 결심하고 나서 가장 먼저 산 책은 '개념부터 처음 배우는 프로그래밍'이었다. 독학으로 이해가 잘 될지 의문이었지만 책의 설명은 아주 깔끔했다. 책을 보며 차곡차곡 진행하던 중 9장 숫자야구를 만드는 코드가 제대로 작동하지 않았다. 아무리 반복해서 코드를 다시 읽어도 문제점이 보이지 않아 책의 저자이신 포프킴님께 질문을 드렸다. 하루만에 답장을 해주셨는데 버그 중 2가지를 가르쳐주신뒤 나머지는 직접 디버깅 해보라고 말씀하셨다. 찬찬히 다시 읽어보니 책과 다르게 만든 부분이 2군데 있었고, 총 4개의 버그를 고친뒤 숫자야구 코드가 정상적으로 작동했다!


for (int i = 0; i < 3; i++) //1. 디버깅전 int i = 0; i < numbers.Length; i++
            {
                Console.WriteLine(numbers[i]);
            }

            int[] guesses = new int[3];
            string[] inputMessages = { "> 첫번째 숫자를 입력하세요", "> 두번째 숫자를 입력하세요", "> 세번째 숫자를 입력하세요" };

            while (true)
            {
                for (int i = 0; i < 3; i++)
                {
                    Console.WriteLine(inputMessages[i]);
                    guesses[i] = int.Parse(Console.ReadLine());

                }
                Console.WriteLine("> 공격수가 고른 숫자");

                for (int i = 0; i < 3; i++)
                {
                    Console.WriteLine(guesses[i]);
                }
                if (guesses[0] == guesses[1] || guesses[0] == guesses[2] || guesses[1] == guesses[2]) // 2.디버깅전 guesses[1] == guesses[1] 3.코드끝에 ;을 사족으로 붙임-포프님이 가르쳐주신 버그
                {
                    Console.WriteLine("같은 숫자를 입력하면 안됩니다");
                    continue;
                }
                
                    int strikeCount = 0;
                    int ballCount = 0;


                    for (int i = 0; i < 3; i++)
                    {
                        for (int j = 0; j < 3; j++)
                        {
                            if (guesses[i] == numbers[j]) //4.디버깅전 guesses [i] == guesses [j]
                            {
                                if (i == j)
                                {
                                    strikeCount++;
                                }
                                else
                                {
                                    ballCount++;
                                }
                            }
                        }
                    }

이번 경험을 통해 깨달은 것은
1.컴퓨터는 잘못이 없다 내 잘못이지
2.몇번 봐도 모르겠으면 시간이 지나고 마음을 가라앉힌뒤에 다시 디버깅 할 것

이 두가지 교훈을 얻었다. 확실히 포프킴님께 질문하기 전 에는 짜증이 난 상태로 찾으려 하다보니 마음만 조급해지고 전혀 코드가 눈에 들어오지 않았는데 다음날 차분한 마음으로 다시 보니 10분이 지나기도 전에 버그를 찾을 수 있었다.

profile
비전공자 코린이

0개의 댓글