ফাইলগুলিতে বিভক্ত - কত বিভাজন?


9

যদি আমি বলি যে উপাদানগুলির মডেল না করে আমার একটি শ্রেণিবদ্ধ সত্তা কাঠামো রয়েছে। এর মতো কিছু:
(হ্যাঁ, এটি তৈরি)

অস্ত্র-> বন্দুক-> অটোমেটিকগুন-> এমপি 44
বা আরও একটি শাস্ত্রীয় উদাহরণ:
সত্তা-> চলনযোগ্যতা-> শত্রু-> ওয়াকিংএনিমি

পাঠযোগ্যতা এবং সংস্থার জন্য আপনি উত্স / শিরোনাম ফাইলগুলিকে কতদূর ভাগ করবেন? এন্টি। (বা আরও ভাষা অজ্ঞেয় পদ্ধতিতে, একটি শত্রু ফাইল এবং একটি শ্রেণি ফাইল বনাম প্রতিটি শ্রেণীর জন্য একটি ফাইল?)
এছাড়াও, এটি কি পঠনযোগ্যতা এবং সংগঠন ব্যতীত অন্য কোনও কিছুকে প্রভাবিত করবে?


1
নিতপিকি, তবে আমি মনে করি না যে language-agnosticএটি কোনও উপযুক্ত ট্যাগ কারণ আপনি যে ভাষায় পার্শ্ব প্রতিক্রিয়া হিসাবে ব্যবহার করছেন তা এটির উপর নির্ভর করে।
টেট্রাড

ভাল কথা, আমি আবার ফিরে যেতে পারি বলে মনে করি।
কমিউনিস্ট হাঁস

উত্তর:


12

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

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

যদিও এক শ্রেণীর ফাইলের মধ্যে শ্রেণীর সাথে সম্পর্কিত ছোট ছোট স্ট্রাক্ট এবং এনামগুলি গ্রুপ করা দুর্দান্ত great আপনার যদি এমন এনাম থাকে যা কেবলমাত্র একটি একক শ্রেণীর দ্বারা ব্যবহৃত হয় তবে কেন এটির নিজের ফাইলে বিভক্ত করুন? শুধু তাদের একসাথে রাখুন। তবে যদি এটি অন্য শ্রেণি দ্বারা ব্যবহৃত হয় (যেমন অন্য শ্রেণীর সদস্য এই এনামের ধরণের হয়), তখন এটির নিজের ফাইল দেওয়ার সময় হয় is


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

1
আপনার এনামগুলিকে দলবদ্ধ করার অর্থ কি কোনও একক মান পরিবর্তনের ফলে সেই নেমস্পেসে এনাম ব্যবহার করা প্রতিটি ফাইলের পুনরায় সংযোগ ঘটবে?
কমিউনিস্ট হাঁস

ওয়েল, এটি সত্যিই ভাষার উপর নির্ভর করে, তবে হ্যাঁ, এটি অবশ্যই প্রভাব ফেলতে পারে। এটি আমার পক্ষে আসলেই সমস্যা নয়, কারণ আমি প্রাথমিকভাবে সি # তে বিকাশ করি (কোনও ফাইল-বাই-ফাইল সংকলন নেই) তবে এটি সি ++ এবং অন্যান্য ভাষায় সমস্যাযুক্ত হতে পারে। সর্বদা হিসাবে, ভাষা-নির্দিষ্ট বিষয়গুলি বিবেচনা করতে হবে এবং এটি তাদের মধ্যে একটি হবে :)।
মাইক স্ট্রোবেল

2

সি / সি ++ এর বাইরের অনেকগুলি ভাষা ফাইলগুলিতে বাধা আরোপ করে। রিকিট জাভার 'ফাইলের প্রতি এক শ্রেণি' উল্লেখ করেছে; পাইথন ফাইলগুলি নাম স্থান হিসাবে ব্যবহার করে; অন্যান্য ভাষাগুলি প্রায়শই সেগুলির আত্মাকে অনুলিপি করে।

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

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

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


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