ストアドプロシージャの命名規則 [閉まっている]


11

シニア開発者の一人は、「verbObject」タイプの命名(「GetMemberByID」)ではなく、「objectVerb」スタイルの命名(「MemberGetById」)などのストアドプロシージャの命名規則を使用する必要があると述べています。この標準の理由は、関連するすべてのストアドプロシージャがアクションではなくオブジェクトごとにグループ化されることです。

このように名前を付ける方法のロジックはわかりますが、この方法で名前が付けられたストアドプロシージャを見たのは初めてです。命名規則についての私の意見は、名前は自然に読むことができず、単語が何を言っているのか、手順が何をするのかを判断するのに時間がかかるというものです。

これについてどう思いますか?ストアドプロシージャに名前を付けるより一般的な方法はどれですか?また、どのタイプのストアドプロシージャの命名規則を使用しましたか?


1
「名前は自然に読めない」?誰によって?あなたの最初の自然言語は何ですか?英語?または、他の何か?
-S.Lott

9
@ S.Lott-私にとっては、デゴバの沼地で聞こえるかのように見えます。
TZHX

1
いい質問です!いくつかの標準を持つことは、標準がないことよりも優れていますが、一部の有能な人々はこの概念をさらに進めて、優れた標準を考案しました。例えば、ダイクストラは、それが最初の要素として、0ではなく1でインデックスアレイにそんなに多く理にかなっている理由について書かれていdeveloperonline.blogspot.com/2008/04/...それは、一見些細な話題であり、まだIベット彼はそれを思い付くためにいじくり回しました。同様に、スポルスキは素敵なシステムを持っていますjoelonsoftware.com/articles/Wrong.htmlいくつかの思考の先行投資は痛み回避
仕事

4
一緒にストアドプロシージャを削除すると言う;)
マイケルブラウン

回答:


10

このように見てください。メソッドはどのようにコードで整理されていますか?オブジェクトごとに、メソッドがハングアップします。

MyObject.GetById(int)
MyObject.Save()

ストアドプロシージャにその命名を模倣させることで、ソースプロシージャとの関係を簡単に確認できます。

MyObjectGetById
MyObjectSave

良い点ですが、SQLは本質的にオブジェクト指向ではありません。実際、Java / C#/ etcとはまったく異なります。それとインターフェースするコード。SQLが処理を実行し、Javaが処理を実行するのはごく自然なことです。コードを生成する必要がある場合は、少しの労力でコードを作成できます。
ジョブ

4
私はオブジェクト指向がここで考慮されるとは思わない。上記は、このような命名規則を最初に使用するように見えるかもしれないほど不自然ではない方法の単なる例です。
マークフリードマン

2
コード内のメソッドを「MyObject.GetById(int)」にすることで、ストアドプロシージャが「MyObject.GetById」とも呼ばれないのはなぜですか?グループ化は引き続き行われ、ドットはオブジェクト/テーブルと必要なアクションを分離します。
クリス

1
@クリス、「。」を使用できるかどうかわかりません proc名で、しかし確かにobjectVerbを使用すると、考えられるのと同じ方法で事がグループ化されます。最初に取得するのではなく、自分が欲しいものを考えてから、それを取得する方法を考えます。
CaffGeek

1
@Mark Freedman、それが必ずしもオブジェクト指向であるということではなく、手続き型言語で物事を同じ方法でグループ化します。実際のオブジェクトにはありません。ただし、通常、コードが変換された場合に自然にオブジェクトになるものを接頭辞として付けます。strCompare、strLenなど、objectAction
CaffGeek

6

私もロジックを見ることができます。エンティティごとにアクションをグループ化します。ただし、アクションが常にGET、PUT、およびDELETEである場合、命名の変更はそれほど重要ではない場合があります。「AccountTransferMoney」などの一意のアクション名がある場合に発生する新しい命名標準の最大の利点がわかります。

最も重要なことは、単一の標準があり、誰もがそれに従うということです。


1
正式な命名基準(「prefix with sp」以外)を持たない会社から来た場合、重要なのは標準を持つことだけです。
グレンソルズベリー

5

大きな発行者を決定し、探しているprocを見つけるか、その意味をすばやく解読する必要がありますか?

表示される場合:

memberGetID memberGetName memberGetThis memberListSomething memberDelete

ある時点で、「メンバー」が既に見つかったら、それを無視してそこから進みます。

電話帳を見てください。ジョン・スミスを見つけたいなら、スミス、デイブ・スミス、ジョン・スミス、ロバート

本当にそんなに難しい?ジェームス・ボンドでない限り、私は人々を姓で呼んでから名で呼んではいけません。


1
+1この質問と回答が大好きです!それは使いやすさを扱っており、それはかなりトリッキーで興味深いものになる可能性があります。
ジョブ

0

「objectVerb」の代わりに、「namespace_verbObject」などを使用できますMember_GetById
名前空間でプロシージャをグループ化し、従来の「動詞」の命名を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.