2010-01-14 6 views
4

Bob Martin 삼촌의 "Clean Code"에 제시된 지침에 따라 방법을 축소하려고합니다.더 작은 방법

trys가 포함 된 메서드는 예외적 인 경우를 포함하지 않는 다른 메서드를 호출해야한다는 것이 하나의 권장 사항입니다.

내 문제는 이름 지정 중 하나입니다.

일반적으로 내 메소드에는 try 표현식 만 포함될 때까지 많이 남아 있지 않으며 예외의 경우를 제외하고는 메소드의 이름이 완벽하게 설명합니다.

예외적 인 "예외적 인"방법의 이름을 지정하는 데 사용하는 규칙은 무엇입니까?

private void generateAndAttachDocumentFromTemplate(File templateFile) { 
    try { 
    File generatedDocument = generateDocumentFromTemplate(templateFile); 
    if (generatedDocument != null) { 
     attachDocument(generatedDocument, container); 

     attachmentsPanel.reload(); 

     SystemControl.openDocument(generatedDocument); 
    } 
    } catch (Exception ex) { 
    Notifier.notifyIT(App.user().getEmail(), ex); 
    Dialogs.complain("Can\'t Generate Document"); 
    } 
} 
+0

먼저 레이어링, "단일 책임"및 가변적 인 통계에 대해 걱정합니다. –

+0

나는 그것에 대해서도 걱정한다. 그것은 제가 한 조각씩 리팩토링하는 레거시 시스템입니다. –

답변

5

난 당신이 tryMethodNamemethodName로을 가지고있는 규칙 (나는 그가 책에서 제시 생각)를 사용합니다.

+0

MS .NET에서이 접근법을 찾을 수 있습니다. Parse vs TryParse –

+0

빠뜨려 야합니다. 나는 이것을 좋아한다. 감사. –

+0

그래서 예외를 잡는 메소드를 "try___"또는 다른 하나라고 부릅니까? –

1

당신은 "IMPL"규칙을 사용할 수 있습니다 : 예를 들어

이 내가 찾고 있어요 방법입니다.

private void generateAndAttachDocumentFromTemplate(File templateFile) { 
try { 
    generateAndAttachDocumentFromTemplateImpl(File templateFile); 
} catch (Exception ex) { 
    Notifier.notifyIT(App.user().getEmail(), ex); 
    Dialogs.complain("Can\'t Generate Document"); 
} 
+2

"doGenerateAndAttachDocumentFromTemplate"메서드를 호출 할 것입니다. "Impl"은 대개 "인터페이스 구현"을 의미합니다. –

+0

아주 좋은 지적. 내 응용 프로그램에서는 특정 규칙을 따르지 않지만 작동합니다. –

+0

사실 "do"컨벤션이 더 좋습니다. "Impl"국제 대회가 이미 확립 된 의미를 갖는 것은 좋은 지적입니다. – ptsw

1

일부 대안 :

  • method>doMethod
  • method>method0

은 "비 뛰어난"방법은 private해야한다.

3

언제든지 메소드에 doThisANDdoThat()이 잘못된 메소드입니다. 방법은 단 한 가지만 수행해야합니다. 그들이 "작은"방법에 관계없이.

관련 문제