assert

종종 assert를 쓸까 말까 고민할 때가 있다. 아래 내용을 늘 기억하도록.

  • if 문을 써서 프로그램을 exit 해도 되지만 왜 그렇게 되었는지는 assert를 쓰는 것이 더 명확하다. (NetWeaver에서는 Dump 화면과 똑같이 보이기 때문에 좀 시껍하긴 하다)
  • debugger를 통해서도 오류를 알 수 있지만 assert를 쓰면 문제가 발생한 시점과 원인을 명확히 드러낼 수 있다.
  • 많이 써도 성능에는 상관없다.
  • 절대로 발생해서는 안되는 조건에 대해서 사용하는 것이지 정상적인 에러 상황을 처리하는 문장이 아니니 오용하지는 말자.

사실 assert는 OOP에서 쓰기에 좀 문제가 있다. 이에 대한 해결방안으로 Design by contract가 있겠지만 – C#의 Code Contracts 같은 – ABAP에서는 아직 지원되지 않고 있는 듯 하다.