আমি কীভাবে ম্যানেজার ক্লাস লিখতে পারি?


13

আমি মনে করি XxxManagerগেম ইঞ্জিন প্রোগ্রামিংয়ে স্টাইলের ক্লাসগুলি ব্যবহার করা খারাপ ধারণা reading Managerঅন্য একটি নাম দ্বারা যদি একটি হয়ে শেষ ।

এটি কি সত্যই অনুসরণ করা খারাপ প্যাটার্ন? যদি তাই হয়, বিকল্পগুলি কি?


2
ম্যানেজারদের সাথে কী সমস্যা?
ক্রিস ম্যাকফারল্যান্ড

blog.codinghorror.com/i-shall-call-it-somethingmanager এবং অন্যরা, যদিও আমি সত্যই এটি প্রয়োগ হয় তা নিশ্চিত না
রস টেলর-টার্নার

2
এই লিঙ্কটি প্রকৃতপক্ষে প্রযোজ্য নয়, এটি নামকরণের বিষয়ে। আমি মনে করি এই প্রোগ্রামার এসই এর জন্য আরও ভাল ফিট হতে পারে।
টিপ্পি_77

3
প্রকৃতপক্ষে, প্রোগ্রামার এসই-তে আমাদের বন্ধুরা ইতিমধ্যে এই প্রশ্নের উত্তর দিয়ে গেছে, এই এবং এটি এবং এটি একবার দেখুন । ক্রেডিট "ম্যানেজার ক্লাস প্রোগ্রামারস.সকে কীভাবে এড়ানো যায়" সহ একটি গুগল-অনুসন্ধানে যায়।
টিপ্পি_77

আপনার স্ট্যাকওভারফ্লো লিঙ্কটি থেকে @ টিপ্পি_77 Ch চয়েসের উক্তিটি: "পক্ষাঘাতের নামকরণ করবেন না Yes হ্যাঁ, নামগুলি খুব গুরুত্বপূর্ণ তবে এগুলি প্রচুর পরিমাণে সময় নষ্ট করার পক্ষে যথেষ্ট গুরুত্বপূর্ণ নয় If আপনি যদি 10 এ কোনও ভাল নামটি ভাবতে না পারেন তবে মিনিট, এগিয়ে যান। " আমি রাজী. কোডটি কোথাও যেতে হবে। আপনি দয়া করে কল করুন।
ক্রিস ম্যাকফারল্যান্ড

উত্তর:


11

"ম্যানেজার" ক্লাস বিভিন্ন কারণে সমস্যা হতে পারে। দুটি মূল কারণ হ'ল:

  • নামটি অস্পষ্ট ( আসলে "ম্যানেজমেন্ট" আসলে কী জড়িত, এবং প্রতিটি ধরণের জিনিস পরিচালনা করার জন্য কি সর্বদা একই থাকে?)
  • তারা কার্যকারিতার বালতি হওয়ার দিকে ঝোঁক দেয় যা একক দায়িত্বের নীতি লঙ্ঘন করে (এটি হল যে কোনও ধরণের একটি জিনিস করা উচিত)

প্রায়শই সেই কারণগুলির মধ্যে একটির কারণ অন্যটিকে বোঝায় বা বোঝায়।

এই বিষয়গুলি মনে রাখা ভাল জিনিস, তবে এগুলি আসলে আপনার ক্ষমতাকে পঙ্গু করতে দেবেন না আপনার গেমটি তৈরির আপনার । শেষ পর্যন্ত আপনার ক্লাসগুলি কী বলা হয় বা তারা কী করে তা কেউ যত্ন করে না। তারা আপনার খেলা সম্পর্কে যত্ন নিতে যাচ্ছেন।

বেশিরভাগ "পরিচালকদের" দুটি ভাগে ভাগ করা সাধারণত বেশ সহজ:

  • যে অংশটি আসল বস্তুগুলিকে সঞ্চয় করে এবং এগুলিতে অ্যাক্সেস সরবরাহ করে (যা আপনি "স্টোর," একটি "সংগ্রহশালা," একটি "ডাটাবেস," একটি "ক্যাশে," বা অন্যান্য বিভিন্ন জিনিস কল করতে পারেন This এটিই সেই ধরণের যা সাধারণত দায়ী is অবজেক্টের জীবদ্দশায়; অর্থ্যাৎ, যখন কোনও বস্তু এই ধরণের কোনও উদাহরণ থেকে সরিয়ে ফেলা হয় বা অন্যথায় থাকে না তখন এটি উপস্থিতি বন্ধ করে দেয়।

  • যে অংশটি আসল বস্তুগুলিকে প্রসেস করে এবং সেগুলিতে কিছু কাজ করে। এটি সেই বিষয়গুলি আপডেট করতে পারে (তারপরে এটি একটি "আপডেটেটর" বা "সিমুলেশন") বা এটি তাদের আঁকতে পারে (তারপরে এটি "ড্রয়ার" বা "রেন্ডারার")। অথবা এটি তাদের সাথে অন্য কিছু করতে পারে; গুরুত্বপূর্ণ বিষয়টি এর প্রাথমিক উদ্দেশ্য অনুসারে এটির নামকরণ করা। আপনি সাধারণত এই ধরণের উদাহরণস্বরূপ বা প্রথম ধরণের উদাহরণগুলির (যেমন কেবলমাত্র বস্তুর আজীবন পরিচালনা করেন) এর উদাহরণগুলি দিতে চান।

একটি যুক্তিসঙ্গত যুক্তি তৈরি করা যেতে পারে যে প্রথম ধরণের নামটিতে ম্যানেজার অন্তর্ভুক্ত থাকতে পারে (কারণ এটি "কিছু বস্তুর" জীবনকাল পরিচালনা করে ")। আপনি আপনার টাইপটির নাম এভাবে রাখলে পৃথিবী শেষ হবে না, যদিও আপনাকে "আইটেম ম্যানেজারদের বলবেন না" ফর্মটির হাঁটু ঝাঁকুনির প্রতিক্রিয়া জানাতে হতে পারে, তাই আপনি কেবল এ জন্য এড়াতে চাইতে পারেন।


6

আপনি যখন মন্তব্যগুলিতে লিঙ্কযুক্ত ব্লগ পোস্টটি পড়েন, তখন আপনি দেখতে পাবেন যে "অন্য নামে পরিচালক হ'লে" হ'ল এটি আপনাকে যা করতে চায় তা ঠিক। সফ্টওয়্যার বিকাশে এটি সাধারণ conকমত্য যে গ্লোবাল ভেরিয়েবলগুলি মন্দ, এবং একমাত্র বিকল্প হ'ল যে কোনও ডেটা অন্য ডেটা দ্বারা রাখা হয়।

নামের একটি শ্রেণিতে সমস্যা FoobarManagerহ'ল "ম্যানেজার" শব্দটি আপনাকে ক্লাসটি আসলে কী করে তা বলে দেয় না । উদাহরণ স্বরূপ:

  • এটি যখন ফুবারগুলির গেম মেকানিক্সকে নিয়ন্ত্রণ করে, আপনি এটির নাম রাখতে পারেন FoobarController
  • যখন এটি ফুবারকে তাত্ক্ষণিক করে কিন্তু তারপরে অন্য কোনও কিছুর নিয়ন্ত্রণ দেয়, এটি একটি FoobarFactoryবা FoobarBuilder
  • এটি যখন ফুবারগুলি স্ক্রিনে আঁকবে, এটি একটি FoobarRenderer
  • এটি foobars দ্বারা উত্পাদিত ইভেন্ট শোনার পরে, এটি একটি FoobarEventHandler
  • যখন এটি foobars সঙ্গে কিছু ঘটতে অপেক্ষা করে, এটি একটি FoobarObserver
  • এটি কোনও যুক্তি ছাড়াই কোনও ফুবার সংগ্রহের জন্য যখন কেবল বোবা ডেটা ধারক, আপনি কেবল এটির নাম দিন Foobars

আপনি এই শ্রেণীর যে কোনও একটির নাম রাখতে পারেন "ম্যানেজার"। তবে তারপরে এটি এর যে কোনও কার্যকারিতা সম্পাদন করতে পারে। এবং যখন আপনি পরে বুঝতে পারবেন যে উপরের ক্রিয়াকলাপগুলির জন্য আপনার আরও একটি প্রয়োজন, আপনি এটিকে ফুবারম্যানেজারের সাথেও সংহত করতে পারবেন। সুতরাং আপনি একটি গড অবজেক্টের সাথে সমাপ্ত হবেন যা উদ্বেগের নীতিটি বিভক্ত করে (প্রতিটি শ্রেণীর ঠিক একটি জিনিস করা উচিত)।


1
আমি প্রায়শই নামগুলি ব্যবহার করতে পছন্দ করি FoobarStoreবা FoobarRepositoryএটি কী জন্য এটি আরও পরিষ্কার করা উচিত।
লুকায়েড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.