개인 재정 C ++ 프로그램의 버그 방지

C ++ 프로그램의 버그 방지

차례:

비디오: [게임 해킹과 보안]FPS 오픈소스 게임핵 개발과 시큐어 코딩 - 5편 게임 핵 제작 시작(만들기) 2024

비디오: [게임 해킹과 보안]FPS 오픈소스 게임핵 개발과 시큐어 코딩 - 5편 게임 핵 제작 시작(만들기) 2024
Anonim

컴파일하는 동안 생성 된 모든 경고를 제거하거나 적어도 이해할 때까지 코드 디버깅을 시작하지 마십시오. 그런 다음 무시할 경우 모든 경고 메시지를 사용하면 좋지 않습니다. 경고를 이해하지 못하면 조심하십시오. 모르는 것은 당신을 해칠 것입니다.

명확하고 일관된 코딩 스타일 채택

명확하고 일관된 스타일로 코딩하면 프로그램의 가독성이 향상 될뿐만 아니라 코딩 실수가 줄어 듭니다. C ++ 구문을 해독하는 데 소비하는 뇌의 힘이 적을수록 프로그램의 논리에 대해 생각해 본 것이 많을수록 더 많은 것을 기억하십시오. 좋은 코딩 스타일을 사용하면 다음을 쉽게 수행 할 수 있습니다.

  • 클래스 이름, 객체 이름 및 함수 이름 차별화
  • 이름을 기준으로 객체에 대해 알고 있음
  • C + + 기호와 전 처리기 기호를 구별합니다 (# 정의 된 객체가 두드러 져야 함).)
  • 동일한 레벨에서 C ++ 코드의 블록 식별 (이는 일관된 들여 쓰기의 결과 임)

또한 모듈의 함수 또는 클래스에 대한 정보를 제공하는 표준 모듈 헤더를 설정해야합니다. (아마도 당신 인 것 같습니다), 날짜, 사용중인 컴파일러의 버전 및 수정 내역이 포함됩니다.

코드 작성시 주석 작성

모든 것이 작동 될 때까지 기다리지 않고 주석을 작성한 다음 되돌아 가서 주석을 추가하는 경우 코드를 주석으로 작성하면 오류를 피할 수 있습니다. 방대한 양의 헤더와 함수 설명을 나중에 작성할 때까지는 시간을 들이지 않고 코드를 작성하는 동안 짧은 주석을 추가 할 시간이 있습니다.

간단한 코멘트가 있어야합니다. 그들이 그렇지 않다면, 그들은 가치가별로 없으며 대신 다른 것을해야합니다. 프로그램을 작동 시키려고 할 때 얻을 수있는 모든 깨달음이 필요합니다. 며칠 전 작성한 코드를 보면 짧고 서술적인 설명이 무엇을하려했는지 정확하게 파악할 수 있도록 도와줍니다.

또한 일관된 코드 들여 쓰기 및 명명 규칙을 사용하면 코드를 더 쉽게 이해할 수 있습니다. 코드를 다 읽고 나면 읽기 쉽지만 코드를 작성하는 동안 코드를 읽기 쉽도록하는 것이 매우 중요합니다. 그 때 도움이 필요할 때입니다.

모든 경로를 한 번에 한 번씩 실행하십시오.

프로그래머는 프로그램이하는 일을 이해하는 것이 중요합니다. 좋은 디버거로 프로그램을 한 단계 씩 실행하는 것보다 더 나은 느낌을주는 것은 없습니다. (대화식 컴파일러의 IDE에 포함 된 디버거는 정상적으로 작동합니다.)

그 외에도 프로그램을 작성할 때 일부 기괴한 동작을 파악하기 위해 원료가 필요할 수도 있습니다. 새로운 기능이 작동 할 때 단일 기능을 수행하는 것보다 재료를 더 잘 제공하는 것은 없습니다. 마지막으로, 기능이 완료되고 프로그램에 추가 될 준비가되면, 모든 논리 경로가 최소한 한 번 이동해야합니다. 버그는 함수의 나머지 부분과 함께 팟에 던져지기보다는 함수 자체가 검사 될 때 훨씬 쉽게 발견 할 수 있습니다. 그리고 여러분의 관심은 새로운 프로그래밍 문제로 옮겨갔습니다.

연산자 오버로딩 피하기

두 개의 스트림 I / O 연산자

연산자 << ()

연산자 >> () 및 할당 연산자 연산자 = () , C ++에 익숙해 질 때까지 연산자 오버로드를 막아야합니다. 오버로드 된 연산자를 사용하면 새로운 클래스의 유틸리티와 가독성을 높일 수 있지만 과부하 연산자는 거의 필요하지 않으며 새로운 프로그래머로서 디버깅 문제를 크게 증가시킬 수 있습니다. 적절한 공용 멤버 함수를 정의하고 사용하여 동일한 효과를 얻을 수 있습니다. 몇 개월 동안 C-Plus-Plussing을 해본 후에는 언제든지 돌아가서 통신 수 과부하를 마음껏 즐기십시오. 잔액 처리

일반적으로 프로그래머는 힙 메모리를 동일한 수준으로 할당하고 해제해야합니다. "멤버 함수

MyClass:: create ()

가 힙 메모리 블록을 할당하고 호출자에게 반환하면 MyClass:: release () 멤버 함수가 있어야합니다. 메모리를 힙으로 반환합니다. 특히, MyClass:: create () 는 부모 함수가 메모리 자체를 해제 할 필요가 없어야합니다. 부모 함수가 MyClass:: release () 를 호출하는 것을 잊어 버릴 수도 있지만, 가능성은 다소 감소합니다. 예외 처리를위한 예외 사용 C ++의 예외 메커니즘은 오류를 편리하고 효율적으로 처리하도록 설계되었습니다. 이제이 기능이 표준화되었으므로 사용해야합니다. 결과 코드는 작성하기가 쉽고 읽기 쉽고 유지 보수가 쉽습니다. 게다가, 다른 프로그래머들이 기대하기 시작했습니다. 실망시키지 않으실 겁니다. 그렇습니까? 다중 상속 피하기

연산자 오버로딩과 같은 다중 상속은 처음 시작할 때 처리 할 필요가없는 또 다른 수준의 복잡성을 추가합니다. 다행히도 대부분의 실제 관계는 단일 상속으로 설명 될 수 있습니다.

Microsoft MFC 클래스와 같은 상용 라이브러리에서 상속 된 다중 클래스를 자유롭게 사용할 수 있습니다.Microsoft는 클래스를 설정하는 데 상당한 시간을 투자했으며 그 작업이 무엇인지 알고 있습니다.

C ++에 대한 귀하의 이해 수준에 익숙해 진 후에는 다중 상속 계층 구조를 설정하십시오. 그렇게하면 필요한 경우 준비가 완료됩니다.

C ++ 프로그램의 버그 방지

편집자의 선택

Dragon Go! iPhone 및 iPad 용 앱 - 인형

Dragon Go! iPhone 및 iPad 용 앱 - 인형

Dragon Search를 사용하시는 분이라면 Dragon Go를 사용하는 것이 좋습니다! Nuance는 iPhone 3GS, iPhone 5, iPhone 4, iPod touch (3 세대), iPod touch (4 세대) 및 iPad에서 사용할 수 있도록 무료로 다운로드 할 수있는이 앱을 만들었습니다. (iOS 4.0 이상이어야합니다.) Android 기기에서도 사용할 수 있습니다. 드래곤가! ...

드래곤에서 피할 수있는 10 가지 실수 말하기 - 인형

드래곤에서 피할 수있는 10 가지 실수 말하기 - 인형

모두가 실수를 저지르고 어떤 사람들은 정말 크고 재미있게 만든다. 실수. NaturallySpeaking을 사용하여 많은 실수를 저 지르므로 때때로 수시로 일부를 만들 수도 있습니다. 내가 묻는 것은 다음과 같습니다. 내가 미리 짐작했던 10 가지 분명한 실수를하지 마십시오. 원래의 수. 창조적으로 행동하십시오. 거기서 나가서 ...

NaturallySpeaking을위한 10 가지 시간 절약 팁 - 인형

NaturallySpeaking을위한 10 가지 시간 절약 팁 - 인형

때로는 잘하고 그냥 사용하는 것의 차이 새로운 소프트웨어는 더 지혜롭고 경험 많은 스승의 충고 한 부분입니다. 누군가가 당신에게 전에 말했었 으면 좋을 10 가지가 있습니다. 대화 상자의 단축키 사용 대화 상자, 라디오 버튼, 확인란의 다양한 기능 ...

편집자의 선택

Google SketchUp 8에서 새로운 지형 모델을 만드는 법 - Google에서 모델링 할 때 인형

Google SketchUp 8에서 새로운 지형 모델을 만드는 법 - Google에서 모델링 할 때 인형

SketchUp을 사용하면 지형을 만들어야 할 수 있습니다. 건물에 대한 패치를 모델링하든 센트럴 파크를 다시 디자인하든 기존 데이터로 지형을 모델링 할 수 있습니다. 기존 데이터는 일반적으로 등고선 또는 토폴 라인 형태로 도착합니다. 지형지도에서 볼 수있는 삐걱 거리는 선을 알고 있습니다.

SketchUp에서 드레이프로 경로와 도로를 만드는 법 - 스케치 업에서 드레이프 도구

SketchUp에서 드레이프로 경로와 도로를 만드는 법 - 스케치 업에서 드레이프 도구

드레이프 도구가 작동 함 쿠키 커터와 조금 같다. 그것을 사용하여 객체의 가장자리를 직접 그 아래에있는 다른 표면으로 전송합니다. 아마도 당신은 부드럽게 경 사진 지형을 가지고 있으며, 당신은 그것에 사행 경로를 그리기를 원할 것입니다. 경로는 윤곽선을 따라야합니다.

SketchUp 모델을 3D 인쇄 용 부품으로 자르는 방법 - 인형

SketchUp 모델을 3D 인쇄 용 부품으로 자르는 방법 - 인형

SketchUp 모델 자르기 Intersect Faces 도구를 사용하여 그룹을 결합하는 것과 매우 유사합니다. 더 큰 오브젝트와 교차하여 커팅의 새 가장자리가 될 커터로 지오메트리를 사용할 것입니다. 모델이 매우 단순하고 SketchUp을 사용하는 경우 ...

편집자의 선택

Route Prefix를 사용하여 Junos - dummy에서 라우팅 필터를 생성하는 방법

Route Prefix를 사용하여 Junos - dummy에서 라우팅 필터를 생성하는 방법

라우팅 정책은 특정 경로가 라우팅 테이블에 수용되거나 일부 인접 라우터에 보급되는 것을 방지하기위한 것입니다. 경우에 따라 특정 경로 또는 경로 집합을 일치시키는 것이 유용 할 수 있습니다. 이렇게하려면 경로 필터를 사용합니다. 경로 필터는 특정 IP 주소 또는 접두어 범위에서 일치합니다. ...

Junos 라우터에서 COS의 코드 포인트 별명을 사용하는 방법 - 인형

Junos 라우터에서 COS의 코드 포인트 별명을 사용하는 방법 - 인형

전달 수업은 고통 스러울 수 있습니다. 더 좋은 방법은 코드 포인트 별칭을 사용하는 것입니다. CoS (Class of Service) 정책을 결정할 때 비트 패턴을 지정하는 대신 비트 패턴을 나타내는 별칭 이름을 정의 할 수 있습니다. 이러한 별칭을 코드 포인트 별칭이라고합니다. 간단히 말하자면 코드 포인트를 사용하십시오 ...

Junos 라우팅 정보를 요약하는 방법 - 더미

Junos 라우팅 정보를 요약하는 방법 - 더미

때때로 라우팅 정보를 간단하게 요약 할 수 있습니다 라우터. 예를 들어, 네트워크에서 OSPF를 방금 구성 했으므로 라우팅 테이블에 특정 수의 OSPF 경로가 표시 될 것으로 예상됩니다. show route summary 명령을 실행하여 모든 경로를 볼 수 있습니다 ...