가끔 가슴이 먹먹하다.
애들 짠 코드 보면 여러가지 추억들이 떠오르네...
codesaf..(codesafer)
2016-10-12 01:51
추천 6
댓글 29
다른 게시글
-
울회사 qa들 다 어림 ㅇㅇ익명(121.140) | 16.10.12추천 0
-
이번엔 시발 무슨일인지 똑같은 문자열만 받음 [1]익명(124.54) | 16.10.12추천 0
-
프갤에서 의외로 코딩 고수.list [2]익명(121.140) | 16.10.12추천 5
-
프갤러들아 자바 과제 하고있는데 초짜라서 미치겠다살려다오 5줄만 고치면됨 [1]익명(61.102) | 16.10.12추천 0
-
send랑 recv 함수 질문좀 [29]익명(124.54) | 16.10.12추천 0
-
코드몬스터 문제 덤프있는형 [2]시크(112.149) | 16.10.12추천 0
-
이런종류 문제에 되게 약한거 같아여 [7]시크(112.149) | 16.10.12추천 0
-
으아 내치킨!인생필패(kim00425) | 16.10.12추천 0
-
부끄러운 망코드 [7]시크(112.149) | 16.10.12추천 4
-
XY Problem 같긴 한데요... 질문점.. [11]ஐ(113.131) | 16.10.12추천 4
오 ㅊㅋㅊㅋ 뭐가 문제였어?
앙~ 어려운 문제였는데 잘 찾았넹~
대개 비논리적인 문제들은 다음과 같은 문제로 해결돼.
해결? 분류돼.
1. 수치 연산 오류. ( 오버플로 거나 나누기를 잘못했거나... 소수점을 기대하면서 정수를 쓰거나, round-off 거나 )
2. 이벤트를 정상적으로 생성시켜줄 수 있는 상황이 아닌경우. 즉 리소스 부족 또는 공유할 수 없는 리소스의 혼용 문제.
3. 재진입 ( re-entrance ) 문제. 이 부분은 절차적으로 실행되지 않는 쓰레드나 타이머 콜백 등에서 발생하지.
4. 포인터 ( 포인터가 쓰기용으로 사용된 모든 부분을 추적해야함 )
5. 라이브러리 / 컴파일러 오류. ( work around 밖에 답이 없음 )
6. 메모리릭이나 잘못된 연산으로 개발툴이 미쳤다. ( 재시동 -> 파워 유저 고고싱 )
* 포인터는 배열 표현도 가능하니까 당연히 배열형태로 사용되는 녀석들의 범위 초과도 검사해야하지.
7. 케이스를 놓침. ( 논리적 커버리지가 부족했음. 이런건 조건 로그를 찍는 수 밖에 )
* 객체의 해제도 당연히 메모리를 쓰는거니까 주의
8. 스택이 터졌음. ( 쥐도 새도 모르게 프로그램이 꺼져버리니 오히려 알기 쉬움 )
( 뭐 플랫폼 마다 좀 다르지만 )
9. 스태틱 영역이 터졌음. ( 마찬가지 )
10. 힙에 할당이 실패했음. ( 어지간하면 동적 할당 지양하자 )
이렇게 나열해서 보니까 많이 참고 되네요 감사합니다~
11. 생성시점이 모호함. ( 딜레이가 가변적이어서 되다 안되다~ 이런건 생성을 통합 관리해서 해결해야함 )
그치? comment out 이 거의 대부분의 원인 모를 문제도 찾을 수 있는 방법임요.
어떻게 보면 TDD 의 역방향 테스트라고 볼 수 있쥬.
생성문제나 종료시 이벤트 처리 문제를 정리하는데 싱글턴이 꽤 유용함요.
ㅋㅋ 별말씀을유~
모듈테스트가 중요한 이유만큼, 정상 동작하는 범위를 찾고 조금씩 넓혀나가서 문제의 위치를 추적할 수 있습니당. 그 시츄에이션이 재연이 너무 길어지면
숏컷을 만들고 숏컷의 논리적 무결성을 점검해보면 됩니다. 정말 일정하게 의도된 컨텍스트로 특정 상황으로 들어갈 수 있게 말이죠.
객체의 상태가 바뀔수 있는 요인들을 setter / getter 를 만들어 나누어, setter 에서 모니터링 하는 방법도 있지유.
12. 정말 아주 정말 희귀하게. 메모리 불량이나 파워불량으로 연산오류가 나오거나 뻗는 경우도 있습니다. ( 특히 똥밟기 좋은 AMD 시스템 )
-> 다른 컴퓨터에서도 문제인지 체크해보는것 밖에 답이 없음.
전 제 코드를 보면 먹먹..