একটি অপেক্ষাকৃত ছোট্ট প্রশ্ন, তবে আমি এটি সম্পর্কে অফিসিয়াল ডকুমেন্টেশন বা এমনকি ব্লগের মতামত / আলোচনা সন্ধান করতে সক্ষম হইনি।
সহজ কথায় বলতে গেলে: যখন আমার একটি ব্যক্তিগত অবজেক্ট থাকে যার একমাত্র উদ্দেশ্য ব্যক্তিগত জন্য পরিবেশন করা হয় তখন আমি lockসেই বস্তুর নাম কী রাখি?
class MyClass
{
private object LockingObject = new object();
void DoSomething()
{
lock(LockingObject)
{
//do something
}
}
}
আমাদের LockingObjectএখানে নামকরণ করা উচিত ? এছাড়াও কেবল চলকটির নাম নয় তবে লক করার সময় কোডটিতে কী দেখায় তা বিবেচনা করুন।
আমি বিভিন্ন উদাহরণ দেখেছি, তবে আপাতদৃষ্টিতে দৃ solid়ভাবে পরামর্শ দেওয়ার মতো কোনও পরামর্শ নেই:
প্রচুর ব্যবহার
SyncRoot(এবং বিভিন্নতা যেমন_syncRoot)।- কোড নমুনা:
lock(SyncRoot),lock(_syncRoot) - এটি ভিবি'র সমতুল্য
SyncLockবক্তব্য দ্বারা প্রভাবিত হয়েছে বলে মনে হচ্ছে ,SyncRootযে আইকোলিকেশন ক্লাসের কিছু অংশে বিদ্যমান সম্পত্তি এবং কোনও ধরণের সিঙ্করুট ডিজাইন প্যাটার্নের অংশ (যা তাত্ক্ষণিকভাবে একটি খারাপ ধারণা) - সি # প্রসঙ্গে থাকাকালীন, আমি কোনও ভিবিশ নামকরণ করতে চাই কিনা তা নিশ্চিত নন। আরও খারাপ, ভিবিতে ভেরিয়েবলের নামকরণ কীওয়ার্ডের মতোই। নিশ্চিত না যে এটি বিভ্রান্তির উত্স হবে কিনা।
- কোড নমুনা:
thisLockএবংlockThisএমএসডিএন নিবন্ধগুলি থেকে: সি # লক স্টেটমেন্ট , ভিবি সিঙ্কলক বিবৃতি- কোড নমুনা:
lock(thisLock),lock(lockThis) - এগুলি উদাহরণের জন্য খাঁটিভাবে নামকরণ করা হয়েছে কিনা তা নিশ্চিত নয়
- অদ্ভুত রকমের যদি আমরা এটি কোনও
staticশ্রেণি / পদ্ধতিতে ব্যবহার করি । - সম্পাদনা: লকগুলিতে উইকিপিডিয়া নিবন্ধও উদাহরণস্বরূপ এই নামকরণটি ব্যবহার করে
- কোড নমুনা:
PadLockবিভিন্ন বিবিধ ব্যবহার (বিভিন্ন ধরণের কেসিংয়ের)- কোড নমুনা:
lock(PadLock),lock(padlock) - খারাপ নয়, তবে আমার একমাত্র গরুর মাংস হ'ল এটি আশ্চর্যজনকভাবে কোনও শারীরিক "প্যাডলক" এর চিত্রটিকে আহ্বান করে যা আমি বিমূর্ত থ্রেডিং ধারণার সাথে সংযুক্ত না থাকি ।
- কোড নমুনা:
এটি কী লক করার ইচ্ছে করছে তার ভিত্তিতে লকটির নামকরণ
- কোড নমুনা:
lock(messagesLock),lock(DictionaryLock),lock(commandQueueLock) - ভিবি সিঙ্করুট এমএসডিএন পৃষ্ঠার উদাহরণে এটির
simpleMessageListএকটি ব্যক্তিগতmessagesLockঅবজেক্টের সাথে উদাহরণ রয়েছে - আমি মনে করি না যে আপনি যে ধরণের লক করছেন তার বিপরীতে লকটির নামকরণ করা ভাল ("ডিকশনারি লক") হিসাবে এটি বাস্তবায়নের বিশদ যা পরিবর্তিত হতে পারে name আপনি যে ধারণাটি বা বস্তুটি লক করছেন তার চারপাশে নামকরণকে আমি পছন্দ করি ("মেসেজস লক" বা "কমান্ডকুইউলক")
- মজার বিষয় হচ্ছে, কোড নমুনায় অনলাইনে বা স্ট্যাকওভারফ্লোতে লক করা অবজেক্টের জন্য আমি এই নামকরণ কনভেনশন খুব কমই দেখতে পাচ্ছি।
- কোড নমুনা:
(সম্পাদনা) "8.12 দ্য লক স্টেটমেন্ট" বিভাগের অধীনে সি # স্পেসে এই ধরণের উদাহরণ রয়েছে এবং এর নাম দেওয়া হয়েছে
synchronizationObject- কোড নমুনা:
lock(SynchronizationObject),lock(synchronizationObject)
- কোড নমুনা:
প্রশ্ন: আপনার মতামত কি সাধারণত নামকরণ সম্পর্কে ব্যক্তিগত লকিং বস্তু?
সাম্প্রতিককালে, আমি তাদের নামকরণ শুরু করেছি ThreadLock(পছন্দসই বিকল্পের মতো 3), তবে আমি নিজেকে এই নামটি নিয়ে প্রশ্ন করছি।
আমি প্রায়শই আমার অ্যাপ্লিকেশন জুড়ে এই লকিং প্যাটার্নটি (উপরে প্রদত্ত কোড নমুনায়) ব্যবহার করছি তাই আমি ভেবেছিলাম তাদের পক্ষে একটি শক্ত নামকরণ কনভেনশন সম্পর্কে আরও পেশাদার মতামত / আলোচনা পাওয়ার জন্য এটি বোধগম্য হতে পারে। ধন্যবাদ!
SynchronizationContextএটি বেশ আলাদা।