NASA의 10 코딩 규칙의 힘

이 기사는 Riccardo Giorato씨에 의해 2019년 10월에 공개된 『The Power of 10 — NASA’s Rules for Coding』의 일본어 번역입니다.
본 기사는 원저자로부터 허가를 얻은 후 기사를 공개하고 있습니다.
※ Riccardo Giorato의 개인 페이지는 여기

NASA의 10가지 규칙은 코드 검토 및 정적 분석을 어렵게 만드는 C 언어의 코딩 기법을 제거하는 것을 목표로 합니다.



NASA는 이 10가지 규칙에 대해 다음과 같이 말합니다.

이 규칙은 자동차 안전 벨트처럼 작동합니다. 처음에는 조금 위화감이 있을지도 모릅니다만, 잠시 후 그 사용법이 제2의 습관과 같이 되어, 사용하지 않는 것은 상상할 수 없게 됩니다.

Gerard J. Holzmann 10개의 규칙의 힘은 2006년에 NASA/JPL 연구소 Gerard J. Holzmann에 의해 신뢰할 수 있는 소프트웨어를 위해 창조되었다. 이러한 규칙은 검토나 정적 분석이 어려운 C 언어의 코딩 기법을 없애는 것을 목적으로 하고 있습니다. 이러한 규칙은 MISRA C 가이드라인을 보완하고 더 많은 JPL 코딩 표준에 내장되어 있습니다. NASA의 10 코딩 규칙 goto 문이나 재귀 호출과 같은 복잡한 흐름 구조를 피하십시오. 모든 루프는 항상 고정 한계를 제공합니다 (코드 폭주를 방지 할 수 있습니다.) 힙 메모리 할당 방지 한 화면에 맞게 함수 단축 함수당 최소 2개의 런타임 어설션 사용 데이터 범위를 가능한 한 작게 제한 모든 비 void 함수의 반환 값을 확인하거나 void로 형식 변환하여 반환 값이 필요하지 않음을 나타냅니다. 전처리기를 겸손하게 사용 포인터 사용을 단일 간접 참조로 제한하고 함수 포인터를 사용하지 않음 가능한 모든 경고를 활성화하고 컴파일합니다. 소프트웨어를 릴리스하기 전에 항상 모든 경고를 처리하십시오. 위의 규칙은 C 언어로 정의되었지만 일부는 현대 웹 및 모바일 앱 프로젝트에서도 사용할 수 있습니다. 몇 가지 픽업 해 보았습니다. 1. Goto 및 Recursion과 같은 복잡한 흐름 구성을 피하십시오. for에서 처리할 수 있는 간단한 중복 작업을 만들 필요가 없는 경우 재귀 호출을 사용하지 않습니다. 화성, 달, 바다 바닥 등 기계에 직접 액세스할 수 없는 장소에서 재귀는 매우 위험합니다! 2. 모든 루프는 항상 고정 한계를 제공합니다 첫 번째 규칙과 비슷하지만 루프 처리는 무한 루프 및 코드 폭주를 방지하기 위해 고정 한계를 만듭니다. 4. 한 화면에 맞게 함수 단축 함수의 길이를 한 페이지로 단축하면 프로그램의 특정 루틴의 모든 기능을 쉽게 파악할 수 있습니다. 이 길이를 초과하면 코드에 추가하는 작업이 너무 많음을 나타냅니다. 코드 중복을 방지하기 위해 함수를 작은 함수로 분할하지 않는 또 다른 문제가 발생할 수 있습니다. 6. 데이터 범위를 가능한 한 작게 제한합니다. JavaScript를 사용한다면 var를 사용해서는 안됩니다. 항상 let을 사용하여 변수 누수, 덮어쓰기, 고스트화를 방지합니다. C#과 같은 언어에도 마찬가지입니다. private 및 protected와 같이 가장 강력하고 작은 범위에서 값을 사용하십시오. 10. 가능한 모든 경고를 활성화하고 컴파일합니다. 소프트웨어를 릴리스하기 전에 모든 경고를 처리해야 합니다. JavaScript는 코드를 컴파일하지 않지만 코드에서 경고를 얻기 위해 ESLint와 유사한 도구를 쉽게 사용할 수 있습니다. 유용하지 않다고 생각하더라도 모든 것을 삭제하고 수정해야합니다. 이제 화성에 코드를 런칭 할 준비가 끝났습니다!
Mars Curiosity rover

번역 협력



Original Author : Riccardo Giorato
Thank you for letting us share your knowledge!

이 기사는 이하의 분들의 협력에 의해 공개할 수 있었습니다.
다시 한번 감사드립니다.
선정 담당 : @r_pg10
번역 담당 : @r_pg10
감사 담당: tsurumaki
게시 담당자 : @r_pg10

의견 · 감상을 기다리고 있습니다



이번 기사는 어떻습니까?
・이렇다면 좋았고, 더 이렇게 하고 싶은, 이런 편이 좋지 않은가
・이런 곳이 좋았다
등등, 솔직한 의견을 모집하고 있습니다.
받은 목소리는, 향후의 기사의 질 향상에 도움이 되시기 때문에, 부담없이 코멘트란에서 투고해 주세요.
여러분의 메시지를 기다리고 있습니다.

좋은 웹페이지 즐겨찾기