আমি প্রচুর 2-3 কে লাইন ফাইল সন্ধান করছি এবং এগুলি এত বড় হওয়া উচিত বলে মনে হয় না।
উত্সরূপে উত্স কোড ফাইলটিকে "খুব বড়" বলার জন্য একটি ভাল মাপদণ্ড কী?? উত্স কোড ফাইলের সর্বাধিক পরিমাণ লাইনের মতো কোনও বিষয় আছে কি?
আমি প্রচুর 2-3 কে লাইন ফাইল সন্ধান করছি এবং এগুলি এত বড় হওয়া উচিত বলে মনে হয় না।
উত্সরূপে উত্স কোড ফাইলটিকে "খুব বড়" বলার জন্য একটি ভাল মাপদণ্ড কী?? উত্স কোড ফাইলের সর্বাধিক পরিমাণ লাইনের মতো কোনও বিষয় আছে কি?
উত্তর:
আদর্শ মডেল হিসাবে আমি নিম্নলিখিত মানদণ্ডগুলি ব্যবহার করি (মার্টিন বেকেটের পরামর্শ অনুসারে অনুরূপ যুক্তি সহ, অর্থাতাতাত্ত্বিক কাঠামোর দিক দিয়ে চিন্তা করার জন্য এবং কোডের রেখার ক্ষেত্রে নয়):
বিধি 1
প্রতি ফাইলের জন্য একটি শ্রেণি (সি ++ এ: একটি শ্রেণি -> একটি শিরোনাম এবং একটি বাস্তবায়ন ফাইল)।
বিধি 2
আমাদের মস্তিষ্ক বিভ্রান্ত না হয়ে একই সময়ে যে পরিমাণ আইটেমগুলি পর্যবেক্ষণ করতে পারে সেটিকে সাতটি বিবেচনা করা হয়। 7 এর উপরে আমরা কী দেখি তার একটি সংক্ষিপ্ত বিবরণ রাখা আমাদের কঠিন মনে হয়। অতএব: প্রতিটি শ্রেণীর 7-10 এর বেশি পদ্ধতি থাকা উচিত নয়। 10 টিরও বেশি পদ্ধতিযুক্ত একটি শ্রেণি সম্ভবত খুব জটিল এবং আপনার এটি বিভক্ত করার চেষ্টা করা উচিত। বিভাজন একটি খুব কার্যকর পদ্ধতি কারণ প্রতিবার যখন আপনি কোনও শ্রেণি বিভক্ত করেন আপনি প্রতিটি পৃথক শ্রেণীর জটিলতা কমপক্ষে 2 এর একটি ফ্যাক্টর দ্বারা হ্রাস করেন।
বিধি 3
এক বা দুটি স্ক্রিনে ফিট না হওয়া একটি মেথড বডিটি অনেক বড় (আমি ধরে নিই যে একটি পর্দা / সম্পাদক উইন্ডো প্রায় 50 টি লাইন)। আদর্শভাবে, আপনি একটি উইন্ডোতে পুরো পদ্ধতিটি দেখতে পাবেন। যদি এটি না হয় তবে আপনার লুকানো হয়ে যাওয়া পদ্ধতির অংশটি ভুলে না গিয়ে আপনাকে কেবল কিছুটা উপরে এবং নীচে স্ক্রোল করতে হবে। সুতরাং, পুরো পদ্ধতির বডিটি পড়তে যদি আপনাকে একাধিক স্ক্রিন উপরে বা নীচে স্ক্রোল করতে হয় তবে আপনার পদ্ধতিটি সম্ভবত খুব বড় এবং আপনি সহজেই ওভারভিউটি হারাতে পারেন।
আবার, ব্যক্তিগত সহায়তা পদ্ধতি ব্যবহার করে বিভাজন পদ্ধতিগুলি পদ্ধতি জটিলতা খুব দ্রুত হ্রাস করতে পারে (প্রতিটি বিভাজনে জটিলতা কমপক্ষে অর্ধেক হয়ে যায়) is আপনি যদি অনেকগুলি ব্যক্তিগত সহায়তা পদ্ধতির প্রচলন করেন তবে সেগুলি সংগ্রহের জন্য আপনি পৃথক শ্রেণি তৈরির বিষয়টি বিবেচনা করতে পারেন (যদি আপনার জনসাধারণের চেয়ে আরও বেশি ব্যক্তিগত পদ্ধতি থাকে তবে সম্ভবত একটি দ্বিতীয় শ্রেণি আপনার মূল শ্রেণীর ভিতরে লুকিয়ে রয়েছে))
এই খুব রুক্ষ অনুমান একত্র করা:
সুতরাং একটি উত্স ফাইল যা ২০০০ লাইনের বেশি রয়েছে সম্ভবত এটি খুব বড় এবং খুব অগোছালো হতে শুরু করে।
এটি সত্যিই একটি খুব মোটামুটি অনুমান এবং আমি এই মানদণ্ডগুলি পদ্ধতিগতভাবে অনুসরণ করি না (বিশেষত কারণ যথাযথ রিফ্যাক্টরিং করার জন্য যথেষ্ট সময় নেই)। এছাড়াও, মার্টিন বেকেটের পরামর্শ অনুসারে, এমন পরিস্থিতি রয়েছে যেখানে শ্রেণিটি পদ্ধতিগুলির একটি বৃহত সংগ্রহ এবং শ্রেণিটি আরও ছোট করার জন্য তাদের কোনও কৃত্রিম উপায়ে বিভক্ত করার কোনও অর্থ হয় না।
যাইহোক, আমার অভিজ্ঞতায় কোনও ফাইল অপঠনযোগ্য হতে শুরু করে যখন উপরের প্যারামিটারগুলির মধ্যে একটির সম্মান না করা হয় (উদাহরণস্বরূপ 300 লাইন পদ্ধতির বডি যা ছয়টি পর্দা বিস্তৃত করে, বা 5000 লাইন কোডের একটি উত্স ফাইল)।
না - কোড লাইন শর্তাবলী নয়। ড্রাইভারের যৌক্তিক গ্রুপিং হওয়া উচিত। উদাহরণস্বরূপ একটি বড় ফাইলে অবশ্যই একাধিক ক্লাস থাকা উচিত নয়
আপনার যদি এমন একটি শ্রেণি থাকে যা বৈধভাবে কয়েকশ পদ্ধতিতে থাকে (থ্রিডি মডেলিং বলতে অসম্ভব নয়) তবে এটিকে স্বেচ্ছাসেবী ফাইলগুলিতে বিভক্ত করা অনেক কম সুবিধাজনক হবে। মেমরির দুষ্প্রাপ্যতা এবং প্রসেসরগুলি ধীর হওয়ার সময় আমরা এটি করতাম - এবং এটি একটি ব্যথা ছিল, ক্রমাগত ফাংশন সংজ্ঞাটির জন্য অনুসন্ধান করে।
যখন এতে থাকা কোডটি অযৌক্তিক হয়ে যায়। উদাহরণস্বরূপ: আপনি যে পদ্ধতিটি / শ্রেণি / ফাংশনটি সন্ধান করছেন (এবং সম্পাদনা / ডিবাগ করতে হবে) সেখানে রয়েছে কিনা তা আপনি কেবল কোড দেখে বলতে পারবেন না, এবং যদি তা হয় তবে তা কোথায়।
আপনার আইডিই / সম্পাদকের পছন্দ এবং বৈশিষ্ট্যগুলি যদিও এই উচ্চতর সীমাটির প্রকৃত পরিমাণকে প্রভাবিত করবে। কোড ভাঁজ , ফাংশন / পদ্ধতি তালিকা এবং অনুসন্ধান এই বিকাশের দৃশ্য উপস্থাপিত মুহুর্ত স্থগিত করবে ।
কিন্তু যখন এটি হয়, এটি এটি বিভক্ত করার সময়।
এখানে একটি বিকল্প দৃষ্টিভঙ্গি: আপনি কীভাবে ফাইলের আকার সীমাবদ্ধ করবেন সে সম্পর্কে জিজ্ঞাসা করছেন। আমার অভিমত এমন অনেকগুলি কারণ রয়েছে যা বড় কোড ফাইলগুলিকে খুব সমস্যাযুক্ত করে তোলে। কখনও কখনও কোড ফাইল বিশাল হয় তবে এর বিষয়বস্তু ভাল ক্লাস্টারযুক্ত এবং অত্যন্ত পরিষ্কার কোড রয়েছে, যাতে আকারটি কোনও উল্লেখযোগ্য সমস্যা না ঘটে। আমি প্রচুর ফাইল দেখেছি যা উচ্চ এলওসি থাকা সত্ত্বেও খুব পঠনযোগ্য।
এলওসি মেট্রিকটিতে আলতো চাপার পরিবর্তে আমি এই বড় ফাইলগুলিতে কোডটি প্রায়শই কীভাবে ভেঙে যায় তা বোঝার জন্য ইতিহাসের ডেটা ব্যবহার করার বিষয়ে চিন্তা করব। সাধারণত এর কারণ হ'ল বিকাশকারীদের একই ফাইলে সম্পর্কিত অন্যান্য স্থানগুলি পরীক্ষা করতে এবং পর্যাপ্ত বোঝাপড়া ছাড়াই "কুইক ফিক্স" মানসিকতার সাথে পরিবর্তন করার জন্য ধৈর্য ধরার সময় নেই।
আরও বড় বিপদ হ'ল কপি-পেস্ট কোডের উপস্থিতি। কপি-পেস্ট কোডিং প্রাকৃতিকভাবেও এলওসি বৃদ্ধির গতি বাড়ায়। আমি মনে করি কপির পেস্ট অপসারণ কিছু ম্যাজিক সংখ্যার নীচে এলওসি রাখার চেয়ে আরও বেশি অনর্থক। খাঁটি অনুলিপি-পেস্টের পাশাপাশি বড় ফাইলগুলিতে দ্বিতীয় বিপদও রয়েছে: ওভারল্যাপিং কার্যকারিতা। ফাইলটি যত বড়, আপনি সম্ভবত একই ফাইলের অন্য কোনও বিভাগে থাকা কিছু স্নিপেটকে পুনরায় প্রয়োগ করতে পারেন।
সুতরাং, যতক্ষণ না বড় ফিক্সগুলির জন্য বাগ ফিক্স অনুপাত (সমস্ত সংঘাতে বাগ ফিক্সের অনুপাত ) কম থাকে, পরিস্থিতি সহনীয়। দয়া করে git log
এটির জন্য চেষ্টা করুন এবং কতগুলি কমিট ত্রুটির সাথে সম্পর্কিত তা স্কিম করুন। অথবা এমন কোনও সরঞ্জাম ব্যবহার করুন যা এটি স্বয়ংক্রিয়ভাবে বিশ্লেষণ করতে ও কল্পনা করতে পারে, যেমন সফটগ্রাম ।
এটি বিবেচনা করুন Metaphor
। কোডের দৈর্ঘ্যের ক্ষেত্রে, আমি মনে করি আমাদের নিম্নলিখিতগুলি বিবেচনা করা উচিত:
The Cat in The Hat (50 pp.)
এবং
Lord of The Rings (1,178 pp.)
এতে কোনও দোষ নেই Lord of the Rings
। এটি একটি কল্পিত বই। The Cat in the Hat
এছাড়াও একটি দুর্দান্ত বই। উভয়ই 5 বছরের বাচ্চাদের দ্বারা বোঝা যায়, তবে সামগ্রীর কারণে কেবলমাত্র একজনই উপযুক্ত।
আমার বক্তব্য, যখনই আমরা পারি 5 বছর বয়সী লিখিত কোডটি বোঝা উচিত। Cyclomatic Complexity
কোড তৈরি করার সময় বিকাশকারীদের বিবেচনা করা উচিত এমন একটি গুরুত্বপূর্ণ ধারণা। যথাসম্ভব কার্যকারিতা এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ানোর জন্য লাইব্রেরিগুলি ব্যবহার এবং তৈরি করা। এইভাবে আমাদের কোডটি আমরা যা দেখেছি তার চেয়ে বেশি খণ্ডের কথা বলতে পারে।
আমাদের বেশিরভাগই সমাবেশ কোড লিখছেন না । তবে আমাদের কোডের মূলটি হল সমাবেশ। 10000 লাইনের সমাবেশের মাধ্যমে সন্ধান করা পাইথনের 10000 লাইনের চেয়ে শক্ত, যদি এটি সঠিকভাবে করা হয়।
তবে কিছু কাজের জন্য 500 থেকে 1000 লাইন লিখতে হবে। কোড সহ আমাদের লক্ষ্যটি পরিষ্কার কোডের 300 টি লাইন লিখতে হবে।
বিকাশকারী হিসাবে, আমরা "লর্ড অফ দ্য রিংগুলি" লিখতে চাই। যতক্ষণ না আমরা একটি বাগ পেয়েছি এবং ইচ্ছা করি আমরা "ক্যাট ইন টু দ্যাট" লিখতাম। কোডিংকে অহংকারের পরিমাপ করবেন না। কেবল সাধারণ ফ্যাশনে জিনিসগুলিকে কাজ করুন।
বিকাশকারীরা কোড নথি করতে চান না, (আমি ব্যক্তিগতভাবে ডকুমেন্টেড কোড পছন্দ করি, আমি সে স্বার্থপর নই)। সুতরাং এমন কোডটি লিখবেন না যা কেবল আপনি বুঝতে বা পড়তে পারবেন। Cat in the Hat
কোড লিখুন ।
আমরা সবাই জানি আপনি জেআরআর টলকেন (আপনার মাথায়)। মনে রাখবেন আপনার কাছে বাগ ফ্রি কোড দিয়ে প্রমাণ করার মতো কিছুই থাকবে না।
রূপকের আর একটি কারণ।
বেশি পরিমাণে পাঠক ধন ছড়িয়ে দেবেন না। আপনি যদি একদল লোকের সাথে কাজ করেন এবং তাদের সকলকে একই একটি বৃহত ফাইল পরিবর্তন করতে হয় তবে আপনি সম্ভবত নিজেকে git
মার্জ নরকে পরিণত করবেন।
সবাই প্রত্যাবাসন পছন্দ করে।
-> বলেননি কেউ!
টিএল; ডিআর পাঠযোগ্যতার উপর ফোকাস করুন। আপনার কোড এবং সহায়তাকারীকে যতটা সম্ভব একাধিক লাইন এবং ফাইলগুলিতে ছড়িয়ে দিন। একক ফাইলে 8 বা 9 ক্লাস নিক্ষেপ করবেন না, এটি কোডটি পড়া কঠিন এবং বজায় রাখা আরও শক্ত করে তোলে। আপনার যদি একটি বড় শর্তের কোড বা লুপ থাকে তবে ভাষাটি সমর্থন করে যদি সেগুলি ল্যাম্বডাসে পরিবর্তন করে বিবেচনা করুন। কোড পঠনযোগ্যতা বাড়ানোর জন্য ইউটিলিটি ফাংশনগুলিকে একটি দুর্দান্ত উপায় হিসাবে বিবেচনা করা উচিত। ভারী বাসা বাঁধুন।