Bob 아저씨가 '명사구 이름'이란 무슨 뜻입니까?


14

나는 Uncle Bob의 Clean Code 를 읽고 있습니다. 나는 영어를 모국어로 사용하지 않기 때문에 다음 진술을 이해할 수 없었습니다.

클래스와 객체는 같은 명사 또는 명사구 이름이 있어야 Customer, WikiPage, Account,와 AddressParser. 피 단어가 좋아 Manager, Processor, Data, 또는 Info클래스의 이름입니다. 클래스 이름은 동사가 아니어야합니다.

나는의, 아무도 알 수 없기 때문에 Manager, Processor, Data, 그리고 Info동사는, 그렇지? 그가 강조하고 싶은 실제 요점은 무엇입니까?


어쩌면 밥 아저씨는 자원으로서의 미덕을 칭찬 할 때 RESTful 한 생각을 채택하고있을 것입니다.
rwong

답변:


21

세 점은 분리되어 있습니다.

  • 클래스 이름은 명사 또는 명사구 여야합니다 . 이것은 수업의 이름이 동사의 주제가 될 것임을 의미합니다. 객체 지향 디자인의 경우, 메소드는 클래스가 나타내는 것에서 발생하는 동사입니다.

  • 일부 단어는 피해야합니다. Manager가능한 신 클래스를 나타냅니다 . InfoData더미 데이터 컨테이너를 나타낼 수있다. 이와 같은 단어는 문제 공간의 모델링이 잘못되었음을 나타낼 수 있습니다.

  • 동사는 절대 클래스 이름이 아니어야합니다. 첫 번째 요점-클래스 모델 사물, 메소드 모델 조치를 참조하십시오.


1
이와 같은 단어는 문제 공간의 모델링이 잘못되었음을 나타낼 수 있습니다. -문제의 공간이 선택된 이름과 관계없이 잘못 모델링되거나 모델링되지 않았다고 생각할 것입니다. 좋은 이름은 나쁜 디자인에 도움이되지 않습니다. 좋은 디자인은 나쁜 이름으로 인해 거의 손상되지 않습니다.
Ingo

그리고 실제로 클래스를 구축하는 방법과 외부 세계와의 상호 작용 방식을 고려할 때이 단계를 한 단계 더 낮출 수 있습니다. 클래스의 속성은 일반적으로 명사이고 클래스의 메서드는 일반적으로 동사입니다
PeteH

프로젝트에 "관리자"또는 "정보"또는 "데이터"라고 부르는 클래스가있는 경우 12 개의 클래스가있을 수 있으므로 이러한 이름을 사용하지 않습니다. ThisManager, ThatManager 및 AnotherManger 등이 있습니다.
gnasher729

그는 동사가 클래스 이름에 있어서는 안된다고 말하지만, 나는 의미있는 문맥 추가하기를 다시 읽고 있었고 29 페이지의 그의 예제에서 그는 클래스 이름을 GuessStatisticMessage라고합니다. 나는 명사가 아닌 추측으로 동사를 사용하는 동사를 해석하기 때문에 규칙에 혼란스러워합니다. dictionary.com/browse/guess?s=t
데빈 글리슨 램버트

2
@DevinGleasonLambert 그러나 그것은 추측하지 않습니다. 추측 통계 메시지입니다. 메시지는 명사입니다. 추측 통계는 추측 통계에 대한 메시지 인 메시지 유형을 설명합니다.
Thomas Owens

7

그는 사물 (명사)과 행동 (동사)을 구별하려고합니다 . 기존의 객체 지향 디자인에서는 클래스를 사물로 생각하고 그 메소드를 수행 할 수있는 동작으로 생각합니다. 위해 관리하는 동안 돌봐 또는 조정하는 관리자가 관리하는 사람이나 것입니다.

입문 서적은 일반적으로 BarkBite 메소드를 사용하여 Dog 라는 클래스와 같이 가능한 가장 단순하고 가장 명백한 용어로 정리합니다 . 실제 수업에서 구별은 종종 조금 더 미묘하지만 여전히 있습니다. 그러나 Bob 아저씨가하고있는 요점은 매니저 는 명사이지만, 매니저 가하는 일에주의를 기울이는 것입니다. 관리 또는 방법.


5
불행히도, 이런 종류의 사고는 잘못된 설계로 이어질 수 있습니다. 주요 예 중 하나는 은행 계좌의 전형적인 입문 예입니다. 거의 모든 OO 교과서에서 Account객체 balance는 필드이며 필드이며 transfer방법입니다. 그러나 올바른 디자인은 다음과 같습니다 Transfer. 객체, account필드 및 balance방법입니다. 이것이 은행 시스템이 실제로 구현되고 은행이 실제로 컴퓨터보다 먼저 작동하는 방식입니다.
Jörg W Mittag

@ JörgWMittag : 그주의 이야기는 답으로 게시 할 가치가 있습니다. 이것들은 일반적인 지침이며, 드물게는 분해가 나빠질 수 있습니다.
smci
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.