>  기사  >  시스템 튜토리얼  >  NASA와 같은 프로그래밍 코드를 작성하는 데 도움이 되는 최고의 프로그래머가 되기 위한 10가지 가이드!

NASA와 같은 프로그래밍 코드를 작성하는 데 도움이 되는 최고의 프로그래머가 되기 위한 10가지 가이드!

王林
王林앞으로
2024-01-06 19:02:161236검색
소개 인용문: NASA의 최고 프로그래머들이 미션 크리티컬 코드를 어떻게 작성하는지 아시나요? 코드를 더욱 명확하고 안전하며 이해하기 쉽게 만들기 위해 NASA의 제트 추진 연구소에서는 10가지 코딩 규칙을 개발했습니다.

十条准则帮助你像 NASA 顶级程序员一样编程!

NASA의 개발자 작업은 프로그래밍 세계에서 가장 어려운 작업 중 하나입니다. 이들의 주요 초점은 코드를 작성하고 안전한 미션 크리티컬 애플리케이션을 개발하는 것입니다. 이러한 이유로 엄격한 코딩 규칙을 준수하는 것이 중요합니다. 이러한 규칙은 코딩 스타일, 언어 기능 사용 등을 포함하여 소프트웨어 개발의 다양한 측면을 다룹니다. 적절한 코딩 표준에 동의하기는 어렵지만 NASA의 JPL(제트 추진 연구소)은 Powers of Ten: Rules for Development Secure Critical Code라는 코딩 규칙 세트를 따릅니다.

JPL이 오랫동안 C를 사용했기 때문에 이 규칙은 주로 C로 작성된 프로그램을 위한 것입니다. 그러나 이러한 규칙은 다른 프로그래밍 언어에도 쉽게 적용될 수 있습니다. 이러한 코딩 규칙은 주로 보안을 보장하기 위해 JPL의 수석 과학자인 Gerard J. Holzmann이 개발했습니다.

NASA의 미션 크리티컬 코드 작성을 위한 10가지 규칙:

  1. 모든 코드를 매우 간단한 제어 흐름 구조로 제한하세요. goto 문, setjmp 또는 longjmp 구조, 간접 또는 직접 재귀 호출이 없습니다.
  2. 모든 루프에는 고정된 상한이 있어야 합니다. 루프가 미리 설정된 반복 상한에 도달할 수 없는지 탐지 도구를 통해 정적으로 확인해야 합니다. 이 상한을 정적으로 증명할 수 없는 경우 이 원칙을 위반한 것으로 간주될 수 있습니다.
  3. 초기화 후에는 동적 메모리 할당을 사용하지 마세요.
  4. 한 줄에 하나의 명령문, 한 줄에 하나의 선언이라는 표준 형식을 참조한다면 함수의 길이는 종이 한 장보다 길어서는 안 됩니다. 일반적으로 이는 함수당 60줄 이하의 코드를 의미합니다.
  5. 코드의 어설션 밀도는 평균적으로 함수당 2개의 어설션입니다. 어설션은 실제 실행에서 발생할 가능성이 없는 상황을 감지하는 데 사용됩니다. 어설션에는 부작용이 없어야 하며 부울 테스트로 정의되어야 합니다. 어설션이 실패하면 어설션에 실패한 함수 호출자에게 오류 조건을 반환하는 등 명시적인 복구 작업이 수행되어야 합니다. 정적 도구의 경우, 절대 실패하지 않거나 실행되지 않는다는 것을 정적 도구로 입증할 수 있는 모든 주장은 이 규칙을 위반합니다(예를 들어, 쓸모 없는 주장(true) 문을 추가하여 이 규칙을 충족하는 것은 불가능합니다).
  6. 데이터 개체는 가능한 가장 작은 범위에서 선언되어야 합니다.
  7. void가 아닌 함수의 반환 값은 각 함수 호출마다 확인되어야 하며, 해당 매개변수의 유효성은 각 함수 내에서 확인되어야 합니다.
  8. 전처리기의 사용은 헤더 파일과 간단한 매크로 정의를 포함하는 것으로 제한됩니다. 기호 접합, 가변 인수 목록(타원) 및 재귀 매크로 호출은 허용되지 않습니다. 모든 매크로는 완전한 구문 단위로 확장 가능해야 합니다. 조건부 컴파일 지시문의 사용은 종종 모호하지만 항상 피할 수 있는 것은 아닙니다. 이는 대규모 소프트웨어 개발에서도 헤더 파일을 여러 번 포함하지 않는 표준 관행을 넘어서 하나 또는 두 개 이상의 조건부 컴파일 지시문에 대한 타당한 이유가 있어야 함을 의미합니다. 코드에서 이 작업을 수행할 때마다 도구 기반 검사기에 의해 플래그가 지정되어야 하며 그럴 만한 이유가 있습니다.
  9. 포인터 사용은 제한되어야 합니다. 특히 포인터 역참조 수준은 1개 이하이어야 합니다. 포인터 역참조 작업은 매크로 정의나 유형 선언에 암시적으로 포함될 수 없습니다. 또한 함수 포인터는 허용되지 않습니다.
  10. 개발 첫날부터 컴파일러가 가장 높은 수준의 경고 옵션을 켜서 코드를 컴파일해야 합니다. 이 설정에서 코드는 경고 없이 컴파일되어야 합니다. 코드는 하루에 한 번 이상 소스 코드 정적 분석 도구를 사용하여 검사해야 하며 경고 없이 통과해야 합니다.

이러한 규칙과 관련하여 NASA는 다음과 같이 말합니다.

이 규칙은 자동차의 안전벨트와 같습니다. 처음에는 조금 불편할 수도 있지만, 시간이 지나면 습관이 되어 사용하지 않을 수 없게 됩니다.


작가 소개:

Adarsh ​​​​Verma는 Fossbytes의 공동 창립자입니다. 그는 항상 오픈 소스, 기술적 혁신 및 완전성에 세심한 관심을 기울인 존경받는 기업가입니다. 이메일을 통해 그에게 연락할 수 있습니다 — [email protected]


위 내용은 NASA와 같은 프로그래밍 코드를 작성하는 데 도움이 되는 최고의 프로그래머가 되기 위한 10가지 가이드!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제