문제

더 나은 코딩 관행/보다 효율적인 코드/더 예쁘게 보이도록 생각하는 것들에 대한 당신의 생각을주세요. 아니면 일반적으로 시도/캐치를 잘 활용합니까?

이것이 Java를위한 것이라고 가정 해 봅시다 (중요하다면).

편집하다: 나는 현재 나 자신을 끊임없이 구제하고 제한된 현재 코딩 관행에서 멀어지게하고 있지만, 몇 가지 점에서 그렇게해야 할 필요성에 대해 약간 찢어졌습니다. 나는 단순히 이것에 대한 관점을 요구합니다. 토론이 아닙니다.

도움이 되었습니까?

다른 팁

if 블록은 약간 빠릅니다. 당신이 그들 중 12 개를 필요로하지 않으면, 그들은 더 나은 아이디어입니다. try/catches. 코드가 실행될 때마다 예외는 예외적이어야합니다. 서버 연결 해제와 같은 희귀 한 이벤트에 대한 예외를 사용합니다 (매일 몇 번 발생하더라도). if 내 제어 가능한 변수에 대한 블록.

어떤 코드를 작성하든, 둘 다 사용하게됩니다. Java 런타임에 대해서는 말할 수 없지만 .NET 런타임에는 Try-Catch 블록 사용과 관련된 성능이 있습니다. 결과적으로, 나는 일단 잡힌 예외를 처리 할 수있는 명확한 방법이있는 영역에서만 사용하려고 노력합니다 (문제의 존재를 기록하는 경우에도).

코드에서 많은 시도-캐치 블록 또는 IF 엘스 블록을 사용하는 것을 발견하거나 방법이 다소 긴 경향이있는 경우 코드를 더 많은 수의 작은 방법으로 리팩토링하는 것을 고려하십시오. 논리의 의도는 따라 가기가 더 쉬울 것입니다.

진술이 더 좋으면 생각합니다. 당신은 모든 코드 라인을 시험해 볼 수는 없습니다. CATCH를 사용하여 코드 블록을 둘러싸고 있지만 모든 라인은 아닙니다.

그리고 예외는 느려집니다.

내 2p : 시도/캐치 사용이 가장 좋습니다.

  • 다른 코더에게 예외 처리를하고 있다는 것을 절대적으로 명확하게 만듭니다.
  • 컴파일러는 당신이하고있는 일을 이해하고보다 적절한 컴파일 타임 검사를 수행 할 수 있습니다.

내 경험상, If-conditional-logic을 사용하면 오류 처리를 비즈니스 로직과 구별하기가 더 어려워집니다.

숙련 된 개발자와 분석가가 내가 들었던 것에서 시도/캐치는 더 많은 객체 지향적이며 더 절차적일 것입니다.

나는 개인적으로 상관하지 않습니다.

시도/캐치가 느리고 성능이 인한 것이라는 사실을 알고 있지만, 내가하고 싶은 일을하기 전에 12 개의 IFS를 사용하려면 항상 시도해 볼 것입니다. 코드 줄 수를 저장하려면 잡으십시오.

그것은 내 인생을 훨씬 쉽게 검증 할 수 없게 만들고 진술이 실패하면 내 'Catch'블록에서 '다른'블록에서 한 일을하십시오.

때때로, 나는 시도/캐치에 약간의 진술을 동봉 할뿐만 아니라 어쨌든 분명히 언급합니다.

나는 내가해야 할 일을하기 전에 (1 또는 2) 검증 할 소수의 것들이있을 때 if를 사용합니다.

여기서 언급되지 않은 것이 있습니다.

if-else 문을 사용하면 코드가 실행될 때마다 조건의 최소 1 개가 실행되도록 보장됩니다. 나는 우리 모두가 if-else-elseif가 어떻게 작동하는지 알고 있지만 분명하게 ... 만약에 진술의 일부는 항상 평가됩니다. 거짓이라면 다음은 다음과 같습니다. else-IF 만까지 평가됩니다 또 다른 평가해야합니다.

따라서 if-else 문을 사용하면 성능에 영향을 미칩니다. 크게 (대부분의 경우) 크게는 아니지만 평가를 수행하는 데 CPU 시간이 걸립니다.

시도를 시도하고 내가 틀렸다면 나를 수정하고, 런타임이 필요할 때까지 고려하지 마십시오 (예 : 예외가 발생). 따라서 간단히 코드를 트러블 캐치로 래핑하면 예외가 실제로 잡히기 전까지는 성능에 영향을 미치지 않습니다.

또한, 성능이 히트를 일으키는 것은 캐치가 아니라 던지기입니다.

그리고 한 가지 주요 포인트는 조건부 논리에 시도 된 문학에 사용해서는 안된다는 것입니다. 예외 처리!

당신이 그들과 무엇을 해야할지 알고 있다면 예외를 잡는 것이 필수적입니다. 예외를 올바르게 처리 할 수있는 방법이 없다면, 일부 코드를 위해 체인을 더 잘 처리하는 방법이있을 수 있습니다.

일반적으로 응용 프로그램의 절대 최상위 수준에서 예외 핸드러를 사용하여 사용자가 예외를 수행하는 것이 좋습니다. asp.net에서는 Global.asax의 application_error 이벤트에서이를 수행 할 수 있습니다. 다른 언어/환경에서는 메인 루프에서 무엇이든지 할 수 있습니다.

그러나 항상 가장 잘 잡히지 않는 예외가 있습니다. 때로는 예외가 발생하면 응용 프로그램 상태가 심각하게 손상되어 신뢰할 수 없다는 지표입니다. 유일한 안전한 일은 죽이고 다시 시작하는 것입니다.

@personalperson- 죄송하지만 이것은 게으른 코딩입니다. IF 문이 너무 많기 때문에 시도 캐치를 사용하는 대신 코드를 리팩터링하지 않겠습니까 (즉, 유효성 검사 로직을 자체 방법에 넣으십시오). 이렇게하면 코드를 깨끗하고 읽기 쉬운 상태로 유지하고 성능을위한 모범 사례를 유지합니다.

최소한의 줄을 달성하기 위해 코드를 작성하지 마십시오. 이것은 항상 심하게 끝날 것입니다. 물론 코더 버디가 Ooh와 Aah에있는 것을 쓸 수있는 더 우아한 방법을 찾을 수 있지만, 읽기 쉬운 일을 만듭니다.

나는 맹세하고, 나는 당신의 코드와 함께 일했고, 그것은 내 머리를 아프게했다.

예외를 사용하는 것은 코드의 다른 부분을 느슨하게 결합하여 어떤 잘못이 일어 났음을 알리는 보편적 인 방법입니다. if .. nad .. nad .. 당신은 코드의 다른 부분에 임의의 변수와 다른 것들을 쉽게 스파게티 코드를 가질 수있는 다른 부분에 삽입해야한다고 상상하자.

다음으로 외부 라이브러리/패키지를 사용하고 있다고 상상해 보자. 저자는 잘못된 상태를 처리하는 다른 임의의 방법을 자신의 코드에 넣기로 결정했다고 상상해 보자. 특정 메소드가 참인지 거짓 또는 무엇이든 반환하는지 확인합니다.

예외를 사용하면 처리 오류가 훨씬 쉬워집니다. 다른 코드가 예외가 발생한다고 가정합니다. 따라서 코드를 시도 블록으로 래핑하고 자신의 방식으로 가능한 예외를 처리합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top