আমি জাভা মডেলটিতে অভ্যস্ত হয়েছি যেখানে আপনার ফাইলে প্রতি জনসাধারণের ক্লাস থাকতে পারে। পাইথনের এই সীমাবদ্ধতা নেই এবং আমি ভাবছি ক্লাস আয়োজনের জন্য সেরা অনুশীলন কোনটি।
আমি জাভা মডেলটিতে অভ্যস্ত হয়েছি যেখানে আপনার ফাইলে প্রতি জনসাধারণের ক্লাস থাকতে পারে। পাইথনের এই সীমাবদ্ধতা নেই এবং আমি ভাবছি ক্লাস আয়োজনের জন্য সেরা অনুশীলন কোনটি।
উত্তর:
পাইথন ফাইলটিকে "মডিউল" বলা হয় এবং এটি আপনার সফ্টওয়্যারটি সংগঠিত করার এক উপায় যাতে এটি "জ্ঞান" তৈরি করে। অন্যটি একটি ডিরেক্টরি যা "প্যাকেজ" বলে।
একটি মডিউল একটি স্বতন্ত্র জিনিস যাতে এক বা দুই ডজন ঘনিষ্ঠভাবে সম্পর্কিত ক্লাস থাকতে পারে। কৌশলটি হ'ল মডিউল এমন কিছু যা আপনি আমদানি করেন এবং আপনার সফ্টওয়্যারটি পড়তে, রক্ষণাবেক্ষণ করতে এবং প্রসারিত করতে পারে এমন লোকদের কাছে আপনার আমদানি পুরোপুরি বোধগম্য হতে হবে।
নিয়মটি হ'ল: একটি মডিউল পুনঃব্যবহারের একক ।
আপনি সহজেই একটি ক্লাস পুনরায় ব্যবহার করতে পারবেন না। আপনার কোনও সমস্যা ছাড়াই একটি মডিউল পুনরায় ব্যবহার করতে সক্ষম হওয়া উচিত। আপনার গ্রন্থাগারের সমস্ত কিছু (এবং আপনি ডাউনলোড এবং যুক্ত সমস্ত কিছু) হয় মডিউল বা মডিউলগুলির প্যাকেজ।
উদাহরণস্বরূপ, আপনি এমন কিছু নিয়ে কাজ করছেন যা স্প্রেডশিটগুলি পড়ে, কিছু গণনা করে এবং ফলাফলগুলি একটি ডেটাবেজে লোড করে। আপনার মূল প্রোগ্রামটি দেখতে কেমন চান?
from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader
def main( sourceFileName ):
rdr= Reader( sourceFileName )
c1= ACalc( options )
c2= AnotherCalc( options )
ldr= Loader( parameters )
for myObj in rdr.readAll():
c1.thisOp( myObj )
c2.thatOp( myObj )
ldr.laod( myObj )
ধারণাটি বা খণ্ডগুলিতে আপনার কোডকে সংগঠিত করার উপায় হিসাবে আমদানিটিকে ভাবুন। প্রতিটি আমদানিতে ঠিক কতগুলি শ্রেণি রয়েছে তাতে কিছু আসে যায় না। আপনি আপনার import
বক্তব্যগুলির সাথে চিত্রিত করছেন সামগ্রিক সংস্থাটি কী তা গুরুত্বপূর্ণ ।
যেহেতু কোনও কৃত্রিম সীমা নেই, এটি সত্যিকার অর্থে বোঝা যায় তার উপর নির্ভর করে। আপনার যদি মোটামুটি সংক্ষিপ্ত, সরল ক্লাসগুলির একটি গুচ্ছ থাকে যা যৌক্তিকভাবে একত্রে গোষ্ঠীযুক্ত হয়, তবে তাদের একগুচ্ছ 'এম। আপনার যদি বৃহত, জটিল ক্লাস বা ক্লাস থাকে যা গ্রুপ হিসাবে বোঝায় না, প্রতি ক্লাসে একটি ফাইল যান go বা এর মাঝে কিছু বাছুন। জিনিস পরিবর্তন হিসাবে রিফ্যাক্টর।
আমি নীচের কারণে জাভা মডেলটি পছন্দ করি। প্রতিটি শ্রেণিকে পৃথক ফাইলে স্থাপন করা উত্স কোডটি ব্রাউজ করার সময় ক্লাসকে আরও সহজে তৈরি করে পুনরায় ব্যবহারের প্রচার করে। আপনার যদি একগুচ্ছ ক্লাসগুলি একটি ফাইলে বিভক্ত হয়, তবে এটি অন্যান্য বিকাশকারীদের কাছে স্পষ্ট নাও হতে পারে যে এখানে এমন ক্লাস রয়েছে যা কেবলমাত্র প্রকল্পের ডিরেক্টরি কাঠামোটি ব্রাউজ করে পুনরায় ব্যবহার করা যেতে পারে । সুতরাং, আপনি যদি মনে করেন যে আপনার ক্লাসটি সম্ভবত পুনরায় ব্যবহার করা যেতে পারে, তবে আমি এটি নিজের ফাইলটিতে রেখে দেব।
এটি সম্পূর্ণরূপে নির্ভর করে যে প্রকল্পটি কত বড়, ক্লাসগুলি কত দীর্ঘ, যদি সেগুলি অন্য ফাইলগুলি থেকে ব্যবহৃত হয়।
উদাহরণস্বরূপ আমি প্রায়শই ডেটা-বিমূর্তনের জন্য কয়েকটি শ্রেণির ক্লাস ব্যবহার করি - সুতরাং আমার 4 বা 5 ক্লাস থাকতে পারে যা কেবল 1 লাইন দীর্ঘ হতে পারে (class SomeData: pass
)।
এগুলির প্রত্যেককে আলাদা আলাদা ফাইলে বিভক্ত করা বোকামি হবে - তবে যেহেতু এগুলি বিভিন্ন ফাইল থেকে ব্যবহৃত হতে পারে data_model.py
, তাই এগুলি পৃথক ফাইলে রাখলে বোঝা যায়, তাই আমি করতে পারিfrom mypackage.data_model import SomeData, SomeSubData
আপনার যদি এতে প্রচুর কোড সহ একটি ক্লাস থাকে, তবে এটি কেবল কিছু ফাংশন ব্যবহার করে যা এটি ব্যবহার করে, এই শ্রেণিটি এবং সহায়ক-ফাংশনগুলি একটি পৃথক ফাইলে বিভক্ত করা ভাল ধারণা হবে।
আপনার সেগুলি গঠন করা উচিত যাতে আপনি করেন from mypackage.database.schema import MyModel
না from mypackage.email.errors import MyDatabaseModel
- যদি আপনি যেখানে বুদ্ধি থেকে জিনিসগুলি আমদানি করছেন এবং ফাইলগুলি কয়েক হাজার লাইনের দীর্ঘ নয়, আপনি এটি সঠিকভাবে সংগঠিত করেছেন।
পাইথন মডিউল ডকুমেন্টেশন প্যাকেজ আয়োজন কিছু দরকারী তথ্য রয়েছে।
আমি যখন ফাইলগুলির স্নিগ্ধতায় বিরক্ত হই এবং যখন সম্পর্কিততার কাঙ্ক্ষিত কাঠামোটি প্রাকৃতিকভাবে উদ্ভূত হয় তখন আমি নিজেকে জিনিসগুলি বিভক্ত করতে দেখি। প্রায়শই এই দুটি পর্যায় মিলে যায় বলে মনে হয়।
এটি খুব বিরক্তিকর হতে পারে যদি আপনি খুব তাড়াতাড়ি জিনিসগুলি বিভক্ত করেন, কারণ আপনি বুঝতে শুরু করেছেন যে কাঠামোর সম্পূর্ণ ভিন্ন ক্রম প্রয়োজন।
অন্যদিকে, যখন কোনও জাভা বা .py ফাইলটি প্রায় 700 লাইনের বেশি চলেছে তখন আমি ক্রমাগত বিরক্ত হতে শুরু করি যেখানে "সেই নির্দিষ্ট বিট" কোথায় আছে তা মনে রাখার চেষ্টা করে।
পাইথন / জাইথনের সাথে আমদানির বিবৃতিগুলির বিজ্ঞপ্তি নির্ভরতাও ভূমিকা রাখবে বলে মনে হয়: আপনি যদি অনেক বেশি সহযোগী বেসিক বিল্ডিং ব্লকগুলিকে পৃথক ফাইলে বিভক্ত করার চেষ্টা করেন তবে ভাষার এই "সীমাবদ্ধতা" / "অপূর্ণতা" আপনাকে গ্রুপের জিনিসগুলিতে বাধ্য করবে বলে মনে হচ্ছে, সম্ভবত বরং একটি বুদ্ধিমান উপায়ে।
প্যাকেজগুলিতে বিভক্ত হওয়ার বিষয়ে, আমি সত্যিই জানি না, তবে আমি সম্ভবত একই রকম বিরক্তি এবং খুশি কাঠামোর উত্থানের একই নিয়মটি মডুলারিটির সমস্ত স্তরে কাজ করে।
আমি বলব যে এটিকে খুব বড় এবং জটিল না করেই যুক্তিযুক্তভাবে গ্রুপে থাকা যায় এমন অনেকগুলি ক্লাস স্থাপন করা।