방어적 프로그래밍(Defensive Programming)
소프트웨어를 개발할 때 발생할 수 있는 오류와 버그를 최소화하고, 프로그램의 안정성을 향상시키기 위한 접근 방식.
사용 예
입력 유효성 검사: 사용자가 이름을 입력하는 곳에 길이가 만단 위 넘는 문자열을 입력하는 상황을 방지하기 위해, 입력 데이터를 검사하는 코드를 작성합니다. 이렇게 하면 프로그램이 사용자의 잘못된 입력에 대비할 수 있습니다.
예외 상황 처리: 주문 버튼을 여러 번 클릭하여 중복 주문이 발생하는 상황을 방지하기 위해, 주문 완료 후 뒤로가기로 중복 주문을 방지하는 코드를 작성합니다. 이렇게 하면 예기치 못한 상황에 대비할 수 있습니다.
유효성 확인: null 값 또는 잘못된 값이 발생하는 상황에 대비하여, 입력 데이터나 변수에 유효성 확인을 추가합니다. 이로써 프로그램이 안정적으로 실행될 수 있습니다.
유니티 예시
게임 내에서 플레이어의 체력을 관리하고 예상치 못한 문제로부터 코드를 보호하는 방법
using UnityEngine; public class PlayerHealth : MonoBehaviour { public int maxHealth = 100; private int currentHealth; void Start() { currentHealth = maxHealth; } public void TakeDamage(int damage) { if (damage < 0) { Debug.LogWarning("Negative damage values are not allowed."); return; // 방어적 프로그래밍: 음수 데미지를 허용하지 않음 } currentHealth -= damage; if (currentHealth <= 0) { Die(); } } public void Heal(int healAmount) { if (healAmount < 0) { Debug.LogWarning("Negative healing values are not allowed."); return; // 방어적 프로그래밍: 음수 치유량을 허용하지 않음 } currentHealth += healAmount; if (currentHealth > maxHealth) { currentHealth = maxHealth; } } private void Die() { // 플레이어 캐릭터가 죽었을 때의 처리 } }
외부 소스나 매개변수로 받는 값:
공유 메모리 또는 스레드:
변수 활용: 간섭 및 범위:
개발자 규칙:
테스트 주도 개발 (TDD):