একটি উদাহরণ দিয়ে শুরু করা যাক।
ধরা যাক, আমার কাছে একটি পদ্ধতি বলা হয়েছে exportযা ডিবি স্কিমার উপর নির্ভর করে। এবং "ভারী নির্ভর করে" এর অর্থ আমার অর্থ আমি জানি যে প্রায়শই (খুব ঘন ঘন) একটি নির্দিষ্ট টেবিলের সাথে একটি নতুন কলাম যুক্ত করার সাথে সম্পর্কিত exportপদ্ধতি পরিবর্তনের দিকে পরিচালিত হয় (সাধারণত আপনার রফতানির ডেটাতে নতুন ক্ষেত্রটি যুক্ত করা উচিত)।
প্রোগ্রামাররা প্রায়শই exportপদ্ধতি পরিবর্তন করতে ভুলে যায় যেহেতু এটি স্পষ্ট নয় যে আপনার এমনকি এটিও দেখার উচিত। আমার লক্ষ্য হ'ল প্রোগ্রামারটি স্পষ্টভাবে সিদ্ধান্ত নিতে সিদ্ধান্ত নেবেন যে তিনি exportপদ্ধতিটি দেখতে ভুলে গেছেন বা কেবল রফতানির ডেটাতে কোনও ক্ষেত্র যুক্ত করতে চান না। এবং আমি এই সমস্যার জন্য নকশা সমাধান খুঁজছি।
আমার দুটি ধারণা আছে তবে দুজনেরই ত্রুটি রয়েছে।
স্মার্ট "সমস্ত পড়ুন" র্যাপার
আমি স্মার্ট মোড়ক তৈরি করতে পারি যা নিশ্চিত করে যে সমস্ত ডেটা স্পষ্টভাবে পড়ছে।
এটার মতো কিছু:
def export():
checker = AllReadChecker.new(table_row)
name = checker.get('name')
surname = checker.get('surname')
checker.ignore('age') # explicitly ignore the "age" field
result = [name, surname] # or whatever
checker.check_now() # check all is read
return result
সুতরাং, checkerজোর করে বলা হয়েছে table_rowযে অন্য ক্ষেত্রগুলি পড়েনি। তবে এই সমস্ত জিনিস একরকম ভারী দেখায় এবং (সম্ভবত) পারফমেন্সকে প্রভাবিত করে।
" সেই পদ্ধতিটি পরীক্ষা করুন " ইউনিটেস্ট
আমি কেবল ইউনিটেট তৈরি করতে পারি যা সর্বশেষ টেবিলের স্কিমা মনে রাখে এবং প্রতিবার টেবিল পরিবর্তন হওয়ার পরে ব্যর্থ হয়। সেক্ষেত্রে প্রোগ্রামার এমন কিছু দেখতে পাবে যে " exportপদ্ধতিটি পরীক্ষা করতে ভুলবেন না "। সতর্কবার্তা প্রোগ্রামারটি আড়াল করার জন্য (বা তা নয় - এটি একটি সমস্যা) চেক আউট করে exportএবং ম্যানুয়ালি (এটি অন্য সমস্যা) এতে নতুন ক্ষেত্র যুক্ত করে পরীক্ষাটি ঠিক করে।
আমার কয়েকটি অন্যান্য ধারণা আছে তবে সেগুলি বাস্তবায়ন করতে খুব অসুবিধাগ্রস্ত বা বোঝা খুব কঠিন (এবং আমি চাই না যে প্রকল্পটি ধাঁধা হয়ে উঠুক)।
উপরোক্ত সমস্যাটি সময়ে সময়ে আমার আরও বিস্তৃত শ্রেণীর সমস্যার মুখোমুখি হয়। আমি কোডের কয়েকটি টুকরো এবং / অথবা পরিকাঠামো বাঁধতে চাই যাতে তাদের মধ্যে একটি পরিবর্তন করে সাথে সাথে অন্যটিকে পরীক্ষা করার জন্য প্রোগ্রামারকে সতর্ক করে দেয়। সাধারণত আপনার কাছে কিছু সাধারণ সরঞ্জাম থাকে যেমন সাধারণ যুক্তি আহরণ করা বা নির্ভরযোগ্য ইউনিটেট লেখার জন্য, তবে আমি আরও জটিল মামলার জন্য সরঞ্জামটি সন্ধান করছি: সম্ভবত কিছু নকশার ধরণগুলি সম্পর্কে আমি এখন অবগত।
exportআপনার বাস্তবসম্মতভাবে প্রয়োজনীয় সমস্ত কিছু আছে কিনা ?
exportস্কিমার ভিত্তিতে তৈরি করতে পারেন ?