저장 프로 시저 명명 규칙? [닫은]


11

수석 개발자 중 한 명이 "verbObject"유형의 이름 지정 ( "GetMemberByID") 대신 "objectVerb"스타일의 이름 지정 ( "MemberGetById")과 함께 저장 프로 시저에 이름 지정 규칙을 사용해야한다고 언급했습니다. 이 표준의 이유는 모든 관련 저장 프로 시저가 작업이 아니라 개체별로 그룹화되기 때문입니다.

이러한 방식으로 사물을 명명하는 방식에 대한 논리를 볼 수 있지만, 이것이 이런 식으로 명명 된 저장 프로 시저를 처음 본 것입니다. 명명 규칙에 대한 나의 의견은 이름을 자연스럽게 읽을 수 없으며 단어의 말과 절차를 결정하는 데 시간이 걸린다는 것입니다.

이것에 대한 당신의 테이크는 무엇입니까? 저장 프로 시저의 이름을 지정하는 가장 일반적인 방법은 무엇이며 어떤 유형의 저장 프로 시저 명명 규칙을 사용 했습니까?


1
"이름을 자연스럽게 읽을 수 없습니다"? 누구에 의해? 첫 자연어는 무엇입니까? 영어? 또는 다른 것?
S.Lott

9
@ S.Lott-나에게 그것은 Degobah의 늪에서 들리는 것처럼 보입니다.
TZHX

1
좋은 질문입니다! 표준이없는 것보다 일부 표준을 갖는 것이 더 좋지만, 일부 유능한 사람들은이 개념을 한층 더 발전시켜 좋은 표준을 제시했습니다. 예를 들어, 다 익스트라는 0 첫 번째 요소로서가 아니라 1. 인덱스 배열에 훨씬 더 의미가 있습니다 이유에 대해 작성했습니다 developeronline.blogspot.com/2008/04/... 그것이 겉으로는 사소한 주제, 아직 I 내기 그것을 생각해 내기 위해 약간의 땜질이 필요했습니다. 비슷하게, Spolsky는 훌륭한 시스템을 가지고 있습니다 : joelonsoftware.com/articles/Wrong.html 어떤 사고는 선천적으로 고통을 피합니다
Job

4
저장 프로 시저를 모두 제거한다고 말하고 싶습니다.)
Michael Brown

답변:


10

이렇게 봐 메소드는 코드로 어떻게 구성되어 있습니까? 방법에 따라 개체와 함께.

MyObject.GetById(int)
MyObject.Save()

저장된 procs가 해당 이름을 모방하도록하면 소스 코드와의 관계를 훨씬 쉽게 알 수 있습니다.

MyObjectGetById
MyObjectSave

좋은 지적이지만 SQL은 본질적으로 OO가 아닙니다. 실제로 Java / C # / etc와는 매우 다릅니다. 인터페이스하는 코드. SQL이 그 일을하고 Java가 그 일을하도록하는 것은 당연합니다. 코드를 생성해야하는 경우 적은 노력으로 코드를 작성할 수 있습니다.
직업

4
나는 여기서 OO가 고려되지 않는다고 생각한다. 위의 이름은 처음으로 그러한 명명 규칙을 사용하는 것처럼 부자연스럽지 않은 예입니다.
Mark Freedman

2
코드에 메소드가 "MyObject.GetById (int)"인 경우 저장된 프로 시저를 "MyObject.GetById"라고하지 않는 이유는 무엇입니까? 그룹화는 여전히 발생하며 도트는 객체 / 테이블과 원하는 동작을 구분합니다.
Chris

1
@Chris, '.'을 사용할 수 있는지 잘 모르겠습니다. proc 이름으로하지만 분명히 objectVerb를 사용하면 생각하는 것과 같은 방식으로 사물을 그룹화합니다. 나는 먼저 생각하지 않고, 내가 원하는 것을 생각한 다음 검색하는 방법을 생각합니다.
CaffGeek

1
@Mark Freedman은 반드시 OO 일 필요는 없으며 절차 언어로 사물을 같은 방식으로 그룹화하지만 실제 객체에만 있지는 않습니다. 그러나 일반적으로 코드가 변환되면 자연스럽게 객체가되는 것이 접두사입니다. strCompare, strLen 등, objectAction
CaffGeek

6

나도 그 논리를 볼 수있다. 엔티티별로 조치를 그룹화합니다. 그러나 작업이 항상 GET, PUT 및 DELETE 인 경우 이름 변경이 그다지 중요하지 않을 수 있습니다. "AccountTransferMoney"와 같은 고유 한 작업 이름이있을 때 발생하는 새로운 명명 표준의 이점이 가장 좋습니다.

가장 중요한 것은 단일 표준이 있으며 모든 표준이 따르는 것입니다.


1
공식적인 명명 표준이없는 회사 ( "접두사 sp"제외)에서 오는 경우 표준을 갖는 것이 중요합니다.
Glen Solsberry

5

더 큰 발행자가 무엇인지 결정하고 찾고자하는 프로세스를 찾거나 그 의미를 빨리 해독해야합니까?

네가 본다면:

memberGetID memberGetName memberGetThis memberListSomething memberDelete

어떤 시점에서, 당신이 이미 '회원'을 찾았다면 당신은 그것을 무시하고 거기에서 가십시오.

전화 번호부를보십시오. John Smith를 찾으려면 Smith, Dave Smith, John Smith, Robert입니다.

정말 열심히? 제임스 본드가 아니라면 사람들을 성으로 부르고 이름을 부르지 않습니다.


1
+1이 질문과 답변을 좋아합니다! 그것은 유용성을 다루며 꽤 까다 롭고 흥미로울 수 있습니다.
직업

0

"objectVerb"대신 "namespace_verbObject"를 사용할 수 있습니다 Member_GetById.
네임 스페이스별로 프로 시저를 그룹화하고 여전히 전통적인 "verbSomething"이름 지정을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.