比較的マイナーな質問ですが、公式のドキュメントやブログに関する意見/議論すら見つけることができませんでした。
簡単に言えば、私が唯一の目的をprivateに提供することを目的とするprivateオブジェクトがある場合、そのオブジェクトlock
に何と名前を付けますか?
class MyClass
{
private object LockingObject = new object();
void DoSomething()
{
lock(LockingObject)
{
//do something
}
}
}
LockingObject
ここで何と名付けるべきですか?また、変数の名前だけでなく、ロック時にコード内でどのように見えるかを考慮してください。
さまざまな例を見てきましたが、しっかりしたアドバイスはないようです。
の多数の使用法
SyncRoot
(およびなどのバリエーション_syncRoot
)。- コードサンプル:
lock(SyncRoot)
、lock(_syncRoot)
- これは、VBの同等の
SyncLock
ステートメント、SyncRoot
ICollectionクラスのいくつかに存在するプロパティ、およびある種のSyncRootデザインパターンの一部に影響を受けているようです(おそらく悪い考えです) - C#コンテキストにいるので、VBishの名前を付けたいかどうかはわかりません。さらに悪いことに、VBでは、変数にキーワードと同じ名前を付けます。これが混乱の原因になるかどうかはわかりません。
- コードサンプル:
thisLock
およびlockThis
MSDNの記事から:C#lockステートメント、VB SyncLockステートメント- コードサンプル:
lock(thisLock)
、lock(lockThis)
- これらが例のために最低限純粋に命名されたかどうかはわかりません
static
クラス/メソッド内でこれを使用している場合、ちょっと変です。- 編集:ロックに関するウィキペディアの記事も、この命名を例に使用しています
- コードサンプル:
PadLock
(さまざまなケーシングの)のいくつかの使用法- コードサンプル:
lock(PadLock)
、lock(padlock)
- 悪くないが、私の唯一の牛肉は、それは当然の画像呼び出した物理私は関連付けるていない傾向があり、「南京錠」抽象スレッドのコンセプトを。
- コードサンプル:
ロックするものに基づいてロックに名前を付ける
- コードサンプル:
lock(messagesLock)
、lock(DictionaryLock)
、lock(commandQueueLock)
- VB SyncRoot MSDNページの例には
simpleMessageList
、プライベートmessagesLock
オブジェクトの例があります - 実装の詳細は変更される可能性があるため、ロックしている型(「DictionaryLock」)に対してロックに名前を付けることは良い考えではないと思います。ロックしているコンセプト/オブジェクト( "messagesLock"または "commandQueueLock")に名前を付けることを好みます
- 興味深いことに、コードサンプルのオブジェクトをオンラインまたはStackOverflowでロックするためのこの命名規則はほとんどありません。
- コードサンプル:
(編集)セクション「8.12 The Lock Statement」のC#仕様には、このパターンの例があり、名前が付けられています
synchronizationObject
- コードサンプル:
lock(SynchronizationObject)
、lock(synchronizationObject)
- コードサンプル:
質問:プライベートロックオブジェクトの命名 に関する一般的な意見は何ですか?
最近、私はそれらに名前を付け始めましたThreadLock
(オプション3のようなものです)が、その名前に疑問を感じています。
私は頻繁にこのロックパターン(上記のコードサンプル)をアプリケーション全体で使用しているため、それらの堅実な命名規則についてより専門的な意見/議論を得ることが理にかなっていると思いました。ありがとう!
SynchronizationContext
非常に異なるものだからです。