Dart 오답노트 39 : assert

샤워실의 바보·2024년 1월 9일
0
post-thumbnail

Dart 언어에서 assert 키워드는 코드 실행 중 특정 조건이 참인지 확인하기 위한 방법입니다. 주로 개발 과정에서 사용되며, 조건이 거짓이라면 assert 문은 실행을 중단하고 AssertionError를 발생시켜 코드 작성 및 테스트 중에 버그나 의도하지 않은 동작을 잡아낼 수 있도록 돕습니다.

assert에 대해 알아야 할 주요 사항은 다음과 같습니다:

  1. 디버그 모드 전용: assert 문은 디버그 모드에서만 작동합니다. 릴리즈와 프로파일 빌드에서는 무시됩니다. 즉, 프로덕션 환경에서 앱 성능에 영향을 주지 않습니다.

  2. 문법: assert 함수의 문법은 다음과 같습니다:

    assert(조건, 선택적메시지);
    • 조건: 평가될 표현식입니다. 조건이 참이면 실행이 계속됩니다. 거짓이라면 AssertionError가 발생합니다.
    • 선택적메시지: 선택 사항이며, assert가 실패했을 때 출력될 메시지를 제공할 수 있습니다.
  3. 사용 사례: 변수가 null이 아닌지, 또는 함수 호출 후 특정 조건이 참인지 확인하는 등, 불변 조건을 체크하는 데 주로 사용됩니다.

assert를 사용한 Flutter 코드 예제는 다음과 같습니다:

void someFunction(String text) {
  // 텍스트가 비어있지 않는지 확인합니다.
  assert(text.isNotEmpty, '텍스트는 비어있을 수 없습니다.');
  
  // ... 나머지 코드 ...
}

이 예제에서 someFunction이 빈 문자열로 호출되고 앱이 디버그 모드에서 실행 중이라면, assert 문은 앱이 AssertionError를 발생시키고 중단시킵니다. 이를 통해 개발 중 문제를 알아차리고 수정할 수 있습니다.

다음은 assert를 사용하여 리스트가 비어있지 않는지 확인하는 더 복잡한 예제입니다:

void processList(List<String> items) {
  // 리스트가 비어있지 않는지 확인합니다.
  assert(items.isNotEmpty, '리스트에 최소 하나의 아이템이 포함되어야 합니다.');

  // 리스트의 첫 번째 아이템이 null이 아닌지 확인합니다.
  assert(items.first != null, '리스트의 첫 번째 아이템은 null이면 안 됩니다.');

  // ... 리스트 처리 로직 ...
}

위의 예제에서 processList 함수는 비어있지 않은 리스트를 받아야 하며, 리스트의 첫 번째 아이템이 null이 아니어야 한다는 것을 assert를 통해 확인합니다. 이러한 assert 사용은 개발 과정에서 오류를 사전에 방지하는 데 도움을 줍니다.

기억하세요, assert 문은 프로덕션 환경에서 사용자 입력을 검증하거나 일반적인 오류 처리를 위해 사용되어서는 안 됩니다. 개발 단계에서 실수를 조기에 발견하기 위한 도구입니다.

profile
공부하는 개발자

0개의 댓글