নিয়ম সিস্টেমের জন্য নকশা নকশা?


12

দ্রুত মজাদার প্রকল্প হিসাবে সলিটায়ার গেমটি লেখার চেষ্টা করেছি। তবে নিয়ম সিস্টেমগুলি লেখার সময়, আমি নোংরা অনুভব করলাম , কারণ আমার কোডটি সম্পূর্ণরূপে কাঠামোগত এবং অপ্রয়োজনীয় বোধ করেছিল , মূলত কারণ আমার গেমটির যুক্তি ছিল সম্পূর্ণ স্প্যাগেটি কোড।

আমি আগে এই সমস্যার মধ্যে পড়েছি, এবং আমার প্রোগ্রামের এই অংশটি লেখার সময় সর্বদা বিশ্রী বোধ করি, তাই আমি ভাবছিলাম, কোনও গেমের নিয়ম সংজ্ঞায়নের ক্ষেত্রে কী কোনও পরীক্ষিত ও পরীক্ষিত সেরা অনুশীলন রয়েছে ?


উত্তর:


2

আমি মনে করি না যে এখানে একটি অনন্য সমাধান রয়েছে কারণ প্রচুর পরিমাণে ক্যাসিডেশন নির্দিষ্ট সমস্যা থেকে আসে।

আপনি মডেল ভিউ কন্ট্রোলার প্যাটার্নটি ব্যবহার করতে পারেন: এটি "নিয়ন্ত্রকের উপর কোনও আচরণ কীভাবে প্রয়োগ করতে হবে", আপনার বিহাইভ্যুর যা সর্বদা নিয়ম অনুসরণ করে our

আমরা যদি খুব সাধারণ নিয়ম সম্পর্কে কথা না বলি তবে আপনি যেভাবে এগুলিকে সংগঠিত করছেন তা ভাব প্রকাশের সমস্যা তৈরি করে । আপনি সর্বদা সহজ (কাঠামোগত) হওয়া এবং অভিব্যক্তিপূর্ণ হওয়া (মজাদার বিধিগুলি লিখুন) এর বিরোধী দাবির মুখোমুখি হন।

এমভিসি ব্যবহার করা আপনার কাজকে সহজতর করে কারণ মডেল একটি রাষ্ট্রকে আনুষ্ঠানিক করে তোলে যার অর্থ নিয়ম প্রয়োগ করা হয় context

বলেছিলেন যে, সহজ পরিবর্তনযোগ্য আচরণের ক্ষেত্রে জটিল আচরণ রচনার জন্য কৌশল কৌশল এবং / অথবা রাষ্ট্রীয় প্যাটার্ন ব্যবহার করে আপনি নিয়ামককে প্রয়োগ করতে কার্যকর হতে পারেন । একটি চেইন অফ-রেসোসিবিলিটি প্যাটার্ন আপনাকে নিয়ম প্রকাশ করতে সহায়তা করতে পারে যখন কোনও রাষ্ট্রীয় মেশিনটি সাবধানে ব্যবহার করা উচিত কারণ এর "রাজ্য" মডেলটির "আংশিক" অর্থে আংশিকভাবে ওভারল্যাপ করে।

কন্ট্রোলারের মধ্যে কমান্ড প্যাটার্ন ব্যবহার করা নিয়ন্ত্রণকারীর রেসোসিব্লটিটি হ্রাস করতে উভয়ই উপযোগী হতে পারে (কমান্ডটি কীভাবে মডেলটির সাথে ডিল করতে হয়) এবং কন্ট্রোলারে পূর্বাবস্থায় / পূর্বাবস্থায় ফাংশন যুক্ত করা সহজ করে তোলে ।

যে কোনও হারে, আপনাকে নকশার নিদর্শনগুলিকে গাইডলাইন হিসাবে ব্যবহার করার চেষ্টা করা উচিত: চাকাটি পুনরায় উদ্ভাবন করা এড়াতে এগুলি দরকারী, বিশেষত বর্গাকার চাকা, তবে প্রতিটি সমস্যার সমাধানের মধ্যে একগুচ্ছ (বৃত্তাকার) চাকা থাকে না।


2

আমি সেরা বা এমনকি ভাল হওয়ার বিষয়ে নিশ্চিত নই তবে আমি সাধারণত পর্যবেক্ষক প্যাটার্ন ব্যবহার করি । এটি আমার পক্ষে যথেষ্ট কাজ করেছে।


1
আপনি একটি উদাহরণ করতে পারেন?
গুস্তাভো ম্যাকিয়েল

আপনি প্রতিটি নিয়মের জন্য একটি পর্যবেক্ষক তৈরি করতে পারেন, তারপরে এগুলিকে গেমের সাথে যুক্ত করুন। প্রতিটি টার্নের গেমের পরে সমস্ত নিয়মকর্তাকে এই নিয়ম প্রয়োগ করা হয়েছে কিনা তা পরীক্ষা করতে সমস্ত পর্যবেক্ষককে ডেকে আনা হয়।
Ali1S232

0

আপনি যদি এর আগে অনেকবার কাজটি না করেন তবে আপনি সবসময় স্প্যাগেটি কোড দিয়ে শেষ করবেন। আসলে, এই মুহুর্তে, আপনি কেবল সবে শুরু করেছেন: আপনার কাছে যা আছে তা প্রাথমিক অনুমানের মোটামুটি খসড়া। এখানে অন্যান্য কিছু পরামর্শ দেখুন এবং কিছু গুরুতর পুনর্লিখন করুন। এবং তারপরে আরও কিছু পুনর্লিখন এবং তারপরে .... ব্যক্তিগতভাবে, আমি কখনই নিশ্চিত নই যে আমি আমার কোডটি সত্যিই দুর্দান্ত আকারে পেয়েছি বা এটি পুনরায় লেখার জন্য কেবল অসুস্থ হয়ে পড়েছি, তবে শেষ পর্যন্ত আমি ঠিক এটি পেয়ে যাব বলে মনে হয় না ।

দুই প্রান্ত থেকে সমস্যাটি মোকাবেলা করুন। বোধগম্যতার জন্য সামগ্রিক নকশাটি পাওয়ার চেষ্টা করুন এবং ছোট ছোট অংশগুলি বেছে নিন যা সাধারণ কাজগুলি পরিচালনা করে এবং তাদের সঠিক করে তোলে। তারপরে উভয় প্রান্ত থেকে মাঝের দিকে আপনার পথে কাজ করার চেষ্টা করুন। এবং তারপরে মাঝের দিক থেকে উভয় প্রান্তের দিকে কাজ করুন। তারপরে উপর থেকে নীচে, তারপরে নীচে থেকে তারপরে পুরো প্রক্রিয়াটি পুনরাবৃত্তি করুন।

মূলত, আপনার কাছে যা আছে তা ক্লাসের সংগ্রহ। ক্লাস এ বিবেচনা করুন, যদি ক্লাস এ ভালভাবে নির্মিত হয় তবে এর যে ক্লাসগুলি এটি ব্যবহার করে তা স্বয়ংক্রিয়ভাবে আরও ভাল কাজ করবে, তবে সেগুলি ভাল বা খারাপ। ক্লাস এ যদি ক্লাসগুলি ভালভাবে ব্যবহার করে তবে সেই ব্যবহৃত ক্লাসগুলি আরও ভাল করবে, তবে তারা ভাল বা খারাপ । সুতরাং আপনার ক্লাসগুলি যথাসম্ভব যথাযথভাবে সংগঠিত করুন, তারপরে নিশ্চিত হয়ে নিন যে প্রতিটি সম্ভবত এটি হতে পারে সেরা বর্গ।

এটি যথাসম্ভব যথাযথ হওয়া আপনার পক্ষে গুরুত্বপূর্ণ। খারাপ কোড আপনাকে তাড়ানোর দিন অবধি বিরক্ত করবে। সফ্টওয়্যার সহ, কিছুটা অতিরিক্ত পলিশ করা সর্বদা বন্ধ হয়ে যায়। (যদি না কেউ কোড ব্যবহার না করে ....)

সংক্ষিপ্তসার হিসাবে: অন্যান্য উত্তরে প্রদত্ত আসল পরামর্শটি দেখুন, আপনার পছন্দের কিছু না পাওয়া পর্যন্ত আপনার কোডটি পুনরায় লিখুন।


সুতরাং আপনার উত্তরটি মূলত "অন্যান্য উত্তরগুলি পড়ুন এবং ক্লিন কোড করুন বা আপনার অনুশোচনা হবে" ...
KaoD

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

4
আপনি কি বুঝতে পেরেছেন যে আপনি আসলে প্রশ্নের উত্তর দিচ্ছেন না?
KaoD

প্রকৃতপক্ষে, র‌্যালফের পোস্টটি প্রযুক্তিগতভাবে উত্তর ছিল কিনা তা নির্বিশেষে, আমি মনে করি রাল্ফের প্রতিক্রিয়া প্রথমে প্রশ্ন জিজ্ঞাসা করার জন্য ওপির উদ্দেশ্য সম্পর্কে কথা বলেছিল। আমি বিশ্বাস করি যে এমন কোডারের পক্ষে এটির অনেক মূল্য রয়েছে যা অনুধাবন করতে পারেনি যে আপনি প্রথমবারেই আপনার কোডটি সেরা ডিজাইনের ক্ষেত্রে বিরল। এছাড়াও, তিনি এটি মোকাবেলায় এমন একটি পদ্ধতির প্রস্তাব করেছিলেন যা দেখে মনে হয় রালফের অভিজ্ঞতা থেকেই জন্মগ্রহণ করেছে।
স্টিভ এইচ

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