-
안전한 코드를 작성하는 10가지 방법. (By NASA)칼럼 2023. 11. 4. 00:36
개발자는 많은 코드를 작성하면서 또한 많은 실수를 저지른다.
실수하지 않기 위한 방법을 소개한다.
위키디피아에 작성된 나사의 10가지 개발원칙을 살펴보자.
The Power of 10: Rules for Developing Safety-Critical Code - Wikipedia10가지 원칙은 아래와 같다.
- goto및 recursion과 같은 복잡한 흐름 구문을 피하십시오.
- 모든 루프에는 고정된 경계가 있어야 합니다. 이렇게 하면 코드 런어웨이를 방지할 수 있습니다.
- 힙 메모리 할당을 피하십시오.
- 기능을 인쇄된 단일 페이지로 제한합니다.
- 함수당 최소 2개의 런타임 어설션을 사용합니다.
- 데이터 범위를 가능한 한 최소로 제한합니다.
- void가 아닌 모든 함수의 반환 값을 확인하거나 void로 캐스팅하여 반환 값이 쓸모가 없음을 나타냅니다.
- 전처리기는 가급적 사용하지 마십시오.
- 포인터 사용을 단일 역참조로 제한하고 함수 포인터를 사용하지 않습니다.
- 가능한 모든 경고를 활성화하여 컴파일합니다. 그런 다음 소프트웨어를 출시하기 전에 모든 경고를 해결해야 합니다.
일반적으로 모든 개발자가 위의 원칙을 지킬 필요는 없다.
(위 원칙중 일부는 C언어 레벨이다.)
다만, 지금까지 겪어본 케이스 중 꼭 지켜야 할 내용이 있어 아래와 같이 소개한다.
1. 모든 루프에는 고정된 경계가 있어야 한다.
- 재귀 제한, O(1)
6. 데이터 범위를 가능한 한 최소로 제한
- "SELECT * FROM USERS" (X) -> "SELECT * FROM USERS WHERE ID = @ID" (O)
7. void가 아닌 모든 함수의 반환 값을 확인하거나 void로 캐스팅하여 반환 값이 쓸모가 없음을 나타낸다.
- ref 참조 금지, 클래스는 하나의 기준에 따라 작성.
- 진입점에 input 선언과 output 선언을 반드시 해야 함. object 금지
위 3가지는 개발자라면 반드시 지켜야 한다.
특히, 7번 항목은 매우 중요하다.
object가 좋아보이고 쉬워 보여도 한번 잘 못 된 길로 들어서면 돌이킬 수 없다.
시스템이 운영되고 하루에 10억을 번다면, 그 때 시스템은 단순한 코드 덩어리가 아니라 사람처럼 되어 버리기 때문이다.
함부로 죽일 수 없고, 바꿀 수 없다.
'칼럼' 카테고리의 다른 글
데이터베이스 기술은 '있으면 좋은' 것이 아닙니다. (0) 2023.11.14 개발에 관하여 하고 싶은 이야기 : 파트 2 - 데이터베이스 다중화 (1) 2023.11.14 개발에 관한 하고 싶은 이야기 : 파트1 - 웹 개발과 분산 (1) 2023.11.14 웹 개발자가 되기 전에 반드시 알아야 하는 내용 (0) 2023.11.12 .Net Multiplatform (1) 2023.11.03