장마가 시작되려나 봅니다. 대신 바람도 불고 많이 시원해 졌군요..올 여름은 어떻게 버틸지 암담합니다.. 오늘은 소햏 야그남기는 대신에 소햏 스스로 복습도 할겸 해서 간단하게만 글 남기겠습니다.. 여러 고수햏들이 보실때 웃기지도 않은(?)것들도 있습니다만.. ^^ 너그러이 봐주시길.. 코드를 짜면서 가장 많이 쓰는게 무엇인가 생각을 해봤습니다.. 포인터와 구조체는 일단 제껴두고( 일전에 이것 없이 한번 짜봤는데.. 너무 지저분해지고 구조를 파악하기 어려운 문제가 생기더군요..) 조건문과 분기문, 선택문이 가장~! 많이 쓰게 되더 군요.. 소햏 그중에서도 if문을 가장 쓰고 있습니다. 그래서 예전에 메모해놓은것들을 쭈욱 살펴보니 초창기때 작성해놓은것들중 어설픈(?)것들도 있더군요. 예를 보겠습니다.. if(AppData->App_Size > 0) {       AppData->AllthatSize = AppData->App_Size; } else if(AppData->Ap_SegmentSize > 0) {      AppData->AllthatSize = AppData->SegmentSize/(sizeof(AppData)); } ( 개인적으로 전역변수를 별로 좋아하지 않습니다.. 구조체에 몰아넣고 포인터만 들고 댕기는스타일입니다.) 위 간단한 조건문입니다.. 문법상 에러는 없지요.. 하지만 잘못된 코드 입니다.. 저런식의 코드는 암묵적인 버그를 발생할 소지가 있습니다.. 나중에 디버그하려고 찾을려면 찾기도 힘들지요..^^ 올바르게 고쳐 보겠습니다. if(AppData->App_Size > 0) {       AppData->AllthatSize = AppData->App_Size; } else {         if(AppData->Ap_SegmentSize > 0)         {              AppData->AllthatSize = AppData->SegmentSize/(sizeof(AppData));          } } 첫번째 예제와 틀린점은 one depth 더 들어갔습니다. 대신에 확실하게 구분이 되지요.. 첫번째 예제에서는 비교되는 조건이 애메합니다. 문법상 에러는 아니지만, 무엇을 비교해서 결과를 도출해 내는것인지 확실하게 하지 않으면 아주아주 잡기 힘든 버그를 스스로 품고 있는경우가 되어 버립니다. 두번째 예제는 AppData->App_Size 값을 비교해서 처리하게 되어 있습니다. 그래서 다른사람이 봐도 알 수 있지요.. (사실 짧은 예제로 왜 첫번째 예제가 잘못되었는가 알기는 힘듭니다. 1만, 5만 라인이 넘어기 시작하면 위 같은 코드는 무서운 폭탄이 되서 돌아옵니다..-_-;;;) 그리고 실무에서는 혼자서 코드하는 경우는 별로 없습니다. 대부분 팀 단위로 움직이기 때문에 다름사람과의 소통은 아주 기본적이고 매우 중요한 문제입니다. 첫번째 같은 예제로 헷갈리기 시작한다면...팀이 삐걱거리지요..^^ 오늘도 두선이 없네요... 그럼 모두 즐거운 시간 되세요~~ 내용 추가---------- 쓰다보니 왜 잘못되었나 내용이 부실하더군요.. if(a > 0) {   c = d; }else if( b > 0) {   d = e; } 이런식의 코드입니다. 간략하게 해야 눈에 더 잘들어 오겠지요? 첫번째 if문에서 a라는 값을 비교했습니다... 맞으면 c 값을 d값에서 가져와서 c의 값을 쓰는거지요.. 그런데 두번째 if문에서 b의 값을 비교했습니다. a를 비교하다 말고 엉뚱하게 b를 비교하고 있습니다. 원래의 목적(a의 값이 0보다 큰것인가 작은것인가..??? )을 잊어버린체 b를 비교합니다. 이 if문에서 주체는 a입니다.. 그리고 c를 값을 변경시켜 쓸려고 하는것이지요.. 만의 하나. b값이 0보다 작거나 같다면??? 위 조건문은 쓸모가 없어집니다..애초에 a의 값을 비교해서 무엇인가를 할려고 했는데.. a를 비교하다 말고 b를 비교를 해서 딴짓을 한다는것은 작성시에는 잘 알겠지만. 코드가 길어지다보면 위 조건문은 정확성을 보장하기 어렵습니다. 극히 일부는 저런식의 코드가 필요한 경우가 있지만, 말그대로 극히 일부입니다.. 코드의 가장 중요한 점은 정확성의 보장입니다. 어떤 함수에 1를 넣으면 2가 나온다는 100%정확한 보장이 있어야 합니다. 그렇지않으면 당장은 문제가 없을 수 있지만  이러한 함수들이 모여서 결국 버그로 이어지기 때문입니다~~