제8 장 데이터 생 성

5814 단어
제8 장 데이터 생 성
이 장 은 데 이 터 를 어떻게 효과적으로 생 성 하 는 지 를 말한다.좋 은 데이터 구조 가 가 져 온 수익 은 흔히 수요 분석 과 구조 디자인 단계 에서 나타난다.가능 한 한 좋 은 데이터 구조 가 가 져 온 수익 을 이용 하기 위해 수요 분석 과 구조 디자인 단계 에서 주요 데이터 구 조 를 정의 해 야 한다.
8.1 데이터 인식
데 이 터 를 효과적으로 생 성 하 는 첫 번 째 단 계 는 어떤 데이터 구 조 를 생 성 해 야 하 는 지 알 아야 한다.
  • 선형 표
  • 배열 실현
  • 링크
  • 창고 와 대열
  • 나무 와 이 진 트 리
  • 나무
  • 이 진 트 리 기본 개념
  • 이 진 트 리 찾기
  • 밸 런 스 이 진 트 리
  • 검 붉 은 나무
  • 그림
  • 8.2 자체 데이터 형식의 원인
    프로그램 언어 가 프로그램 에 대한 이 해 를 밝 히 는 가장 강력 한 도구 중 하 나 는 프로그래머 가 정의 하 는 변수 유형 이다.그것들 은 프로그램 을 더욱 쉽게 읽 을 수 있다.자신의 유형 을 만 드 는 몇 가지 이유:
  • 변경 을 더욱 쉽게 한다.새로운 유형의 작업량 이 매우 작 지만 이것 은 매우 큰 사용 유연성 을 가 져 올 수 있다.

  • 부동 소수점 Coordinate_t 에 대해 서 는 쌍 정밀도 부동 소수점 을 사용 할 수 있다 고 생각 하지만, 매우 확정 되 기 전에 단 정밀도 부동 소수점 만 사용 하고 싶 습 니 다.변 수 를 전문 적 으로 정의 할 수 있 습 니 다.
    typedef float Coordinate_t;
    

    지금 은 프로그램 에 변화 가 생 겼 다 고 가정 하면 결국 이중 정밀도 변 수 를 사용 해 야 한 다 는 것 을 알 수 있다.하나의 유형 을 전문 적 으로 정 의 했 기 때문에 해 야 할 일 은 유형 정 의 를 바 꾸 는 것 일 뿐이다.그리고 한 곳 에서 만 변경 하면 됩 니 다.
  • 신뢰성 을 높이 기 위해.

  • Ada 와 Pascal 에 서 는 유사 Age_t = 1~99 유형 을 정의 할 수 있다.그 다음 에 컴 파일 러 는 실행 검사 정 보 를 만들어 Age_t 유형 이 항상 1 ~ 99 범위 내 에 있 도록 한다.
  • 언어의 약점 을 보상 하기 위해.

  • C 에는 논리 적 인 유형 이 포함 되 어 있 지 않 습 니 다. 자신의 유형 을 구축 함으로써 이 단점 을 보완 하기 쉽 습 니 다.
    typedef int Boolean_t; 
    

    8.3 자체 데이터 유형의 준칙
    기능 이름 을 위 한 형식 만 들 기
    컴퓨터 자체 의 데이터 형식의 이름 을 가리 키 는 것 을 피하 고 실제 문 제 를 대표 하 는 일부분 의 이름 을 사용 해 야 한다.
    정 의 된 변수 형식의 이름 을 사용 하 는 것 을 피해 야 합 니 다.
    예 를 들 어 BigInteger 와 LongString 등 은 컴퓨터 데 이 터 를 말 하 는데 객관 적 인 세계 에서 실체의 이름 이 아니면 사용 을 피해 야 한다.
    정 의 된 형식 사용 피하 기
    유형 에 변동 가능성 이 있다 면 typedeftype 정 의 를 제외 하고 정 의 된 유형 을 사용 하지 마 십시오.기능 을 위 한 유형 을 만 드 는 것 은 매우 쉬 우 며, 프로그램 에서 이 유형의 데 이 터 를 바 꾸 는 것 은 매우 어렵다.그리고 자체 적 으로 만들어 진 기능 유형 으로 변 수 를 설명 할 때 변 수 를 설명 했다.Coordinate_x 당신 에 게 알려 준 x 에 관 한 정 보 는 float x 보다 훨씬 많 습 니 다.따라서 가능 한 한 자체 건설 유형 을 사용 해 야 한다.
    정 의 된 형식 을 다시 정의 하지 마 십시오.
    예 를 들 어 언어 에는 이미 Integer 유형 이 있 고 너 는 Integer 라 는 유형 을 자체 적 으로 만 들 었 다.프로그램의 읽 는 사람 은 종종 당신 이 정의 한 Integer 의 의 미 를 기억 하고 그것 을 언어의 표준 Integer 유형 으로 여 긴 다.
    이식 성 을 높이 기 위해 교체 유형 을 정의 합 니 다.
    표준 유형 을 다시 정의 하 는 것 을 피 하 는 것 과 달리 표준 유형 에 교체 유형 을 정의 하고 싶 을 수도 있 습 니 다. 따라서 + 서로 다른 하드웨어 환경 에서 변 수 는 모두 같은 실체 + 를 대표 합 니까?예 를 들 어 표준 INT 유형 을 대체 할 수 있 는 유형 int 을 정의 할 수 있다. 그들 사이 의 유일한 차 이 는 바로 자모의 대소 문자 이다.그러나 프로그램 을 새로운 하드웨어 환경 으로 옮 길 때 하나의 INT 유형 만 다시 정의 하면 새로운 하드웨어 환경 에서 데이터 형식 을 낡은 환경 과 서로 어 울 릴 수 있다.
    다른 형식 으로 새로운 형식 만 들 기
    이미 만들어 진 간단 한 유형 을 바탕 으로 복잡 한 유형 을 만 들 수 있다.이런 변수 유형 은 네가 원래 의 유형 으로 달성 한 유연성 을 더욱 보급 시 킬 수 있다.
    8.4 변 수 를 쉽게 설명 한다.
    템 플 릿 (template) 을 사용 하여 변수 설명
    파일 에 변수 설명 템 플 릿 을 저장 합 니 다.새로운 변 수 를 설명 할 때 이 템 플 릿 을 프로그램 에 불 러 와 서 새로운 변 수 를 설명 할 수 있 습 니 다.다음은 C 로 작 성 된 템 플 릿 입 니 다.
    extern * *; /* */
    static * *; /* */
           * *; /* */ 
    

    extern 은 컴 파일 러 에 게 이 변수 나 함수 가 다른 문서 에서 정의 되 었 음 을 알려 줍 니 다.
    이 템 플 릿 은 몇 가지 장점 이 있다.우선, 그 중에서 당신 이 요구 하 는 것 과 가장 가 까 운 줄 을 선택 한 다음 에 나머지 줄 을 삭제 하기 쉽다.둘째, 모든 줄 에서 '*' 의 역할 은 위 치 를 차지 하 는 것 이기 때문에 모든 줄 의 편집 위치 에 들 어가 기 가 매우 쉽다.셋째, '*' 변경 을 잊 어 버 리 면 문법 오류 가 발생 하여 알림 역할 을 합 니 다.넷 째, 템 플 릿 을 사용 하면 설명 형식의 일치 성 을 유지 할 수 있다.마지막 으로 미리 남 겨 진 주석 빈 칸 은 변 수 를 설명 할 때 주석 을 하 는 것 을 알려 줍 니 다. 이것 은 이후 의 프로그램 주석 작업 을 간소화 합 니 다.
    암시 적 설명
    일부 언어 는 함 축 된 변수 설명 기능 을 가지 고 있다.암시 적 설명 은 모든 언어 특성 중에서 가장 위해 성 이 있 는 특성 중의 하나 이다.
    예 를 들 어 js 코드 의 한 줄 에서 제 가 사용 하고 싶 은 변 수 는 x 입 니 다. 결 과 는 타자 나 맞 춤 법 오류 로 인해 이 변 수 는 y 로 쓰 였 습 니 다. 결 과 는 '암시 적' 으로 변 수 를 설명 한 것 과 같 습 니 다. 이런 오 류 는 가끔 발견 하기 어렵 습 니 다.
    변 수 를 명시 적 으로 설명 하 라 는 언어의 주요 장점 중 하 나 는 변 수 를 사용 할 때 더욱 신중 할 수 있다 는 것 이다.
    8.5 데이터 초기 화 원칙
    프로 그래 밍 에서 가장 큰 오류 원인 중 하 나 는 데이터 에 대한 부적 절 한 초기 화 입 니 다.다음은 오 류 를 초기 화 하 는 것 을 피 하 는 방법 입 니 다.
  • 입력 매개 변수의 유효성 을 검사 합 니 다.

  • 입력 매개 변수 에 모든 값 을 부여 하기 전에 합 리 적 인 지 를 먼저 확인 해 야 합 니 다.
  • 변 수 를 사용 하 는 위치 근처에서 초기 화
  • 변경 후 초기 화 잊 지 않도록 방지
  • 계수기 와 누산기
  • 에 각별히 주의해 야 한다.
    흔히 볼 수 있 는 오 류 는 다음 에 그것들 을 사용 할 때 제거 작업 을 하 는 것 을 잊 어 버 리 는 것 이다.
  • 초기 화 할 곳 찾기
  • 다시 초기 화 된 이 유 는 변수 가 순환 에서 여러 번 사용 되 었 기 때 문 일 수도 있 고, 변수 가 서브루틴 호출 중간 에 원래 값 을 유지 하고 제거 해 야 하기 때 문 일 수도 있 습 니 다.다시 초기 화 할 필요 가 있다 면 초기 화 문 구 는 중 복 된 코드 세그먼트 에 있 는 지 확인 해 야 합 니 다.
  • 이름 상수 에 대해 한 번 만 초기 화하 고 실행 가능 한 코드 로 변 수 를 초기 화 합 니 다
  • 변 수 를 사용 하 는 위치 근처에 있 는 실행 가능 코드 를 초기 화해 야 합 니 다.
  • 설명 한 대로 각 변 수 를 초기 화 합 니 다
  • 컴 파 일 러 를 이용 한 경고 메시지
  • 컴 파일 러 를 설정 하여 모든 변 수 를 자동 으로 초기 화 합 니 다
  • 메모리 액세스 검사 프로그램 을 사용 하여 잘못된 지침 을 찾 습 니 다
  • 일부 운영 체제 에 서 는 운영 체제 에서 잘못된 지침 을 자동 으로 찾 을 수도 있 고 메모리 액세스 검사 프로그램 을 사서 프로그램의 지침 조작 을 검사 할 수도 있다.
    Coverity 코드 정적 검색 도구
  • 실행 되 지 않 는 코드 목록
  • 초기 화 되 지 않 은 클래스 구성원 변 수 를 보 여 줍 니 다
  • 캡 처 되 지 않 은 이상 목록
  • 반환 값 을 제시 하지 않 은 return 문 구 를 보 여 줍 니 다
  • 어떤 함수 가 반환 값 이 있 지만 이 함 수 를 호출 하 는 곳 에서 반환 값 을 사용 하지 않 았 습 니 다. 이것 도 열 거 됩 니 다
  • 회수 되 지 않 은 new 가 나 온 대상 목록
  • 닫 히 지 않 은 핸들 목록
  • 코드 줄 에 정확하게 위치 하고 층 층 이 함 수 를 전개 하 는 기능 을 제공한다
  • 가능 한 수치 형식 이 넘 치 는 것 을 보 여 줍 니 다.예 를 들 어 기호 가 없 는 int 수 는 + 작업 을 하면 int 가 넘 칠 수 있 고 모두 검 측 될 수 있 습 니 다.
  • 어디 에 & 비트 연산 을 사용 해 야 합 니까? | 비트 연산 을 사용 해 서 는 안 됩 니 다. 모두 포 지 셔 닝 하고 건의 할 수 있 습 니 다
  • ostream 은 한 함수 에서 형식 이 수정 되 었 으 나, 이 함 수 를 종료 한 후 ostream 을 이전 형식 으로 복원 하지 않 았 으 며, 또한 감지 되 었 습 니 다
  • .....
  • 프로그램 에서 작업 메모리 초기 화 시작
  • 작은 매듭
  • 모든 데이터 구조의 목록 을 준비 하여 모든 문 제 를 가장 적합 한 방법 으로 처리 하 는 것 을 추천 합 니 다.
  • 자신의 데이터 형식 을 구축 하여 프로그램의 가 변성 을 증가 시 키 고 이 를 자체 설명 으로 한다.
  • 데이터 초기 화 는 오류 가 발생 하기 쉬 우 며 초기 값 이 없 기 때문에 발생 하 는 오 류 를 피한다.
  • 좋은 웹페이지 즐겨찾기