তাই আগে কাছাকাছি খুঁজছি আমি দীর্ঘ পদ্ধতি খারাপ অনুশীলন সম্পর্কে কিছু মন্তব্য লক্ষ্য করেছি।
আমি নিশ্চিত নই যে আমি সর্বদা একমত যে দীর্ঘ পদ্ধতিগুলি খারাপ (এবং অন্যের মতামত চাই)।
উদাহরণস্বরূপ আমার কাছে কিছু জ্যাঙ্গো মতামত রয়েছে যা ভিউগুলিতে প্রেরণের আগে তাদের কিছু প্রক্রিয়াজাতকরণ করে, একটি দীর্ঘ পদ্ধতিটি কোডের 350 লাইন। আমার কোডটি এমনভাবে লেখা হয়েছে যাতে এটি পরামিতিগুলির সাথে সম্পর্কিত হয় - ক্যোরিসেটটি বাছাই / ফিল্টারিং, তারপরে কিছুটা পরে আমার ক্যোয়ারী ফিরে আসা অবজেক্টগুলিতে কিছুটা প্রসেসিং করে।
প্রসেসিংটি মূলত শর্তসাপেক্ষ একীকরণ, এর জটিল যথেষ্ট নিয়ম রয়েছে এটি সহজেই ডাটাবেসে করা যায় না, তাই আমার কিছু লভাল চলাকালীন লুপের সময় মূল লুপের বাইরে ঘোষিত হয়।
variable_1 = 0
variable_2 = 0
for object in queryset :
if object.condition_condition_a and variable_2 > 0 :
variable 1+= 1
.....
...
.
more conditions to alter the variables
return queryset, and context
সুতরাং তত্ত্ব অনুসারে আমার সমস্ত কোডকে ছোট পদ্ধতিতে ফ্যাক্ট করে দেওয়া উচিত, যাতে আমার সর্বাধিক এক পৃষ্ঠা দীর্ঘ হিসাবে দেখার পদ্ধতিটি থাকে।
তবে অতীতে বিভিন্ন কোড বেসগুলিতে কাজ করার পরে আমি কখনও কখনও কোডটি কম পঠনযোগ্য করে দেখি, যখন আপনার মাথার বাইরেরতম পদ্ধতি রাখার সময় আপনাকে নিয়মিতভাবে একটি পদ্ধতি থেকে পরবর্তী সমস্ত অংশের সন্ধান করতে হয়।
আমি দেখতে পেয়েছি যে একটি দীর্ঘ পদ্ধতি যা ভালভাবে ফর্ম্যাট করা হয়েছে, আপনি যুক্তিটি আরও সহজেই দেখতে পাবেন, কারণ এটি অভ্যন্তরীণ পদ্ধতিতে লুকিয়ে নেই।
আমি কোডটি ছোট পদ্ধতিতে ফ্যাক্ট করতে পারতাম, তবে প্রায়শই দুটি বা তিনটি জিনিসের জন্য অভ্যন্তরীণ লুপ ব্যবহৃত হয়, ফলে এটি আরও জটিল কোডে বা এমন পদ্ধতিতে আসে যা একটি জিনিস না করে দুটি বা তিনটি করে (বিকল্পভাবে) আমি প্রতিটি কাজের জন্য অভ্যন্তরীণ লুপগুলি পুনরাবৃত্তি করতে পারি, তবে তারপরে একটি পারফরম্যান্স হিট হবে)।
তাহলে কি এমন কোনও মামলা রয়েছে যে দীর্ঘ পদ্ধতিগুলি সবসময় খারাপ হয় না? লেখার পদ্ধতিগুলির জন্য কি সবসময় কোনও মামলা রয়েছে, যখন সেগুলি কেবল এক জায়গায় ব্যবহার করা হবে?
আপডেট: দেখে মনে হচ্ছে এক বছর আগে আমি এই প্রশ্নটি জিজ্ঞাসা করেছি।
সুতরাং আমি এখানে (মিশ্র) প্রতিক্রিয়ার পরে কোডটি রিফ্যাক্ট করেছি, এটি পদ্ধতিতে বিভক্ত করুন। এটি একটি জ্যাঙ্গো অ্যাপ্লিকেশনটি ডাটাবেস থেকে সম্পর্কিত সামগ্রীর জটিল সেটগুলি পুনরুদ্ধার করছে, তাই পরীক্ষার যুক্তিটি বাইরে রয়েছে (পরীক্ষার মামলার জন্য প্রাসঙ্গিক অবজেক্ট তৈরি করতে সম্ভবত বেশিরভাগ সময় লেগেছিল I আমার কাছে "গতকাল এটি প্রয়োজন" টাইপ হয়েছে) কারও অভিযোগ করার আগে কাজের পরিবেশ)। কোডের সেই অংশে বাগগুলি ঠিক করা এখন প্রান্তিকভাবে সহজ, তবে ব্যাপকভাবে তা নয়।
আগে :
#comment 1
bit of (uncomplicated) code 1a
bit of code 2a
#comment 2
bit of code 2a
bit of code 2b
bit of code 2c
#comment 3
bit of code 3
এখন:
method_call_1
method_call_2
method_call_3
def method_1
bit of (uncomplicated) code 1a
bit of code 2a
def method_2
bit of code 2a
bit of code 2b
bit of code 2c
def method_3
bit of code 3