>

실제로 "질문"이 아니므로 CW로 만들고 있습니다.

assert

키워드는 훌륭합니다!

만약 당신이 작성한 코드에 자신감을 느끼게되지만, 오늘 작은 테스트 클래스 (<20 줄)를 만들 때까지 소개 된 이후로 절대 사용하지 않는 것을 깨달았습니다.

헥! 실제로 매우 유용한 로거는 거의 사용하지 않지만 오늘까지는 어설 션을 사용하지 않는다는 것을 알았습니다.

어설 션을 사용하십니까? 그렇지 않다면 이유가 무엇입니까?


  • 답변 # 1

    90 년대에 많은 주장을 사용하는 법을 배웠습니다. 좋은 방어 코딩입니다.

    그러나 실제로 코드를 실제로 실행하고 코드가 깨지는 위치를 알려주는 단위 테스트로 인해 이것이 대체되었다고 생각합니다. 디버그 어설 션은 누군가가 실제로 디버그 코드를 실행하고 UI 또는 로그를 보도록 요구했습니다. 단위 테스트로이를 자동화 할 수 있습니다.

  • 답변 # 2

    항상 사용합니다. "충돌 초기"철학을 실천하는 좋은 방법입니다. 잘못된/손상된 출력을 처리하는 것보다 어설 션이 실패한 이유를 해결하는 것이 좋습니다.

    문제는 일종의 습관이되어야한다는 것입니다. 나는 그 중 어떤 곳도 거의 보지 못합니다. 사람들은 그것에 익숙하지 않고 거의 사용하지 않거나 사람들이 사용하지 않으며 코드 전체에서 엄격하게 흩어집니다. "아, 여기에 무언가를 가정하고 있음을 암시합니다. '어설 션 (ASSUMPTION)'을 명시 적으로 확인하겠습니다."

  • 답변 # 3

    어설 션을 사용하여 내 코드에 오류가 발생하지 않습니다. 값이 맵에 있어야한다는 것을 알고 있으면 assert 키워드를 사용하여 해당 값을 주장합니다. 매개 변수가 null이 아니어야한다는 것을 알고 있다면 그것을 주장합니다. 매개 변수가 널일 수 있음을 알고 있으면이를 확인하고 적절한 예외를 처리합니다.

    Code Complete 또는 Effective Java에서 읽었습니다. 어설 션은 프로그래밍 오류를 감지하는 데 사용해야합니다. 예외는 예외적이지만 가능한 상황을 처리하는 데 사용해야합니다. 값이 널이 아님 (계약에 정의 된대로)이 아니라는 것을 알고 있으면 코드의 모든 메소드에서 널을 점검 할 필요는 없지만 값이 널이 아닌 경우 주장하기 위해 아프지 않습니다. 어설 션은 매개 변수 -ea를 VM에 지정하는 경우에만 활성화되며 비활성화 된 경우 응용 프로그램의 성능에 영향을 미치지 않아야합니다.

    더 많은 로깅을 사용해야합니다 :-). 추적, 디버그 및 정보를 사용하는시기를 배우고 애플리케이션이 수행하는 모든 것을 기록하는지 확인하십시오. 프로덕션 환경에서 왜 무언가가 작동하지 않는지 알아 내야 할 때 삶이 훨씬 쉬워집니다.

  • 답변 # 4

    짧은 대답-예

    긴 답변-항상 그런 것은 아니지만 자주 발생합니다. 나는 일반적으로 (프로그램이 실행되는 동안) 아무것도 할 수 없으며 로깅이 실제로 필요하지 않은 오류에 대해 어설 션을 사용합니다. 예를 들어-특정 값이 범위를 벗어 났는지 또는 포인터가 NULL인지 확인해야하는 경우 일부 값이 있어야합니다.

    "파싱 파일"및 "파일을 찾을 수 없습니다"와 같은 다른 것들에 대해서는 보통 예외가 발생합니다. 그렇게하면 오류를 기록하고 대신 실패 안전 파일/방법을 사용할 수 있습니다.

    Falaina와 매우 동의합니다. "HEY! 여기에 몇 가지 가정을하고 있습니다"

  • 답변 # 5

    단위 테스트 후 어설 션을 실제로 사용하는 유일한 방법은 다음과 같습니다. 메소드의 불변을 다른 프로그래머에게 알리는 것이 소개됩니다. 그리고 어쨌든 무시할 주석보다 실제 코드 에서이 작업을 수행하는 것이 훨씬 좋습니다. 단언을 무시하기 어렵다!

  • 이전 html - 머리글과 바닥 글 사이의 DIV 높이를 100 %로 만드는 방법
  • 다음 sorting - php - zip을 알파벳 순서로 정렬