বড় মডিউল বিভক্ত করার কোনও নেতিবাচক পার্শ্ব প্রতিক্রিয়া আছে কি? [বন্ধ]


21

আমি একটি গিথুব প্রকল্প ব্রাউজ করছিলাম এবং এই মডিউলটি পেয়েছি যার 10 হাজারেরও বেশি লাইন রয়েছে।

একক মডিউলে এত কোড থাকা কি সাধারণ অভ্যাস?

এটি আমার কাছে মনে হচ্ছে এটি একাধিক মডিউলে বিভক্ত হওয়া উচিত। প্রতিটি ডিবি ইঞ্জিনের জন্য একটি হতে পারে।

এই জাতীয় একটি বিশাল মডিউল তৈরি করে "বিকাশকারী কী উপকার পাবেন (" এটি সমস্ত জায়গায় এক জায়গায় থাকা "ব্যতীত)) বা এটিকে বিভক্ত করা (" জটিলতা "ব্যতীত) কোন ক্ষতি হবে?


8 কে লাইন নয় - অবশ্যই!
BЈовић

4
এটি মডিউলটির আকার নয়, আপনি এটি কীভাবে ব্যবহার করবেন ...
জেএমকিউ

4
প্রোগ্রামগুলি মানুষের দ্বারা পড়া এবং ঘটনাক্রমে কম্পিউটারগুলি সম্পাদন করার জন্য বোঝানো হয় - ডোনাল্ড নুথ।
মাহমুদ হোসাম

1
একটি মডিউল / সাবমডিউল একটি নির্দিষ্ট কাজ করার কথা। পাইথনে 2 নম্বর যুক্ত করতে একটি (মূর্খ) মডিউলটি কেবল 2 লাইন হবে। আরও জটিল কিছু করার একটি মডিউল অবশ্যই বড় হবে। আমি বলছি কেবলমাত্র একটি ফাংশনে মডিউল / সাবমডিউলকে সীমাবদ্ধ করুন। এটি আপনার মানদণ্ড হিসাবে কেপ করুন।
c0da

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

উত্তর:


14

আপনি যা মুখোমুখি হলেন সেটি তথাকথিত " objectশ্বরের অবজেক্ট ", কারণ এটি সমস্ত কিছু করে বা সমস্ত কিছু জানে। এটি থেকে পালাতে (যদি আপনি পারেন)।

মডিউল প্রতি একটি নির্দিষ্ট সংখ্যক LOC নেই, তবে এটি এমন কিছু হওয়া উচিত যা কোড ব্রাউজ করা সহজতর করে এবং পদ্ধতিগুলি কী করছে তা সহজেই বুঝতে পারে। আমার ব্যক্তিগত অভিজ্ঞতা থেকে, যদি আপনার মডিউলটি 1 কে লাইন ছাড়িয়ে যায় * , আপনি কিছু ভুল করছেন।

* এমনকি 1 কে লাইনের মডিউলটিও খুব বড়।


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

6

এটি এমন একটি মডিউল হিসাবে উপস্থিত বলে মনে হচ্ছে যেখানে আদর্শ আকার সীমাটি প্রয়োগ নাও হতে পারে। কার্যকারিতার বেশিরভাগটি কোড এবং মন্তব্যের প্রথম 2k লাইনে। ফাইলটির বাকি অংশগুলি অনেকগুলি অ্যাডাপ্টারের ক্লাস এবং অন্যান্য সমর্থন ক্লাস যা মডিউলটিতে দৃly়ভাবে মিলিত হয়েছে বলে মনে হয়। অন্যান্য ভাষায় ক্লাসগুলি যুক্তিসঙ্গত আকারের পৃথক ফাইলে থাকবে।

আরও কিছু ডক স্ট্রিং কার্যকর হতে পারে তবে তারা ইতিমধ্যে একটি বৃহত মডিউলটির আকার বাড়িয়ে তুলবে। কোডটি যেখানে প্রয়োজন সেখানে যথাযথ মন্তব্য সহ স্পষ্ট এবং স্ব ব্যাখ্যাযোগ্য।


5

অবশ্যই প্রকৃত "সীমা" আপনার প্রকল্প এবং বিভিন্ন কারণের দ্বারা পরিবর্তিত হয়।

তবে আমি থাম্বের একটি নিয়ম দিয়ে আঁকছি: 200 পাইথন পাইথনের লাইন । অর্থাৎ পাইথনে কোনও সি বা জাভা কোড লেখা নেই, তবে পাইথনের ভাল পাইথন।


1

কি দারুন.

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

আমি পরে কাগজপত্র খনন করেছি যে সংযোগ এবং সংহতি সম্পর্কে অনেক বিষয়ে আলোচনা। হতে পারে অনেক ডিবি মডিউল থাকার ফলে মডিউলগুলির মধ্যে খুব বেশি কল আসতে বাধ্য করে যা খারাপ অনুশীলন হিসাবে বিবেচিত হয়, এটি হ'ল নিম্ন সংহতি এবং উচ্চতর সংযুক্তি?

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

আরেকটি জিনিস আমি লক্ষ্য করেছি যে কোডটির কিছু অংশ জেনেরিক হিসাবে বর্ণিত হয়েছে এবং বাকি ডিবিএস এটি থেকে প্রসারিত হয়েছে। আমি পাইথন প্রোগ্রামার নই, তবে সম্ভবত এটি কিছুটা ন্যায়সঙ্গত করতে পারে?

সুতরাং, আমার চূড়ান্ত উত্তর নেই, তবে আমি আশা করি কেউ এই বিষয়গুলিও হাইলাইট করেছে!

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