আমি সম্প্রতি ক্লিন কোড বিকাশ সম্পর্কে একটি ওয়েবসাইট পড়ছি (আমি এখানে একটি লিঙ্ক রাখি না কারণ এটি ইংরেজিতে নেই)।
এই সাইটটির দ্বারা প্রদত্ত নীতিগুলির মধ্যে একটি হ'ল ওপেন ক্লোজড নীতি : প্রতিটি সফ্টওয়্যার উপাদান এক্সটেনশনের জন্য উন্মুক্ত এবং পরিবর্তনের জন্য বন্ধ থাকা উচিত। উদাহরণস্বরূপ, আমরা যখন কোনও ক্লাস প্রয়োগ করেছি এবং পরীক্ষা করেছি তখন আমাদের কেবল বাগগুলি সংশোধন করার জন্য বা নতুন কার্যকারিতা যুক্ত করার জন্য এটি পরিবর্তন করা উচিত (যেমন নতুন পদ্ধতি যা বিদ্যমানগুলিকে প্রভাবিত করে না) do বিদ্যমান কার্যকারিতা এবং বাস্তবায়ন পরিবর্তন করা উচিত নয়।
আমি সাধারণত একটি ইন্টারফেস I
এবং সংশ্লিষ্ট বাস্তবায়ন শ্রেণীর সংজ্ঞা দিয়ে এই নীতিটি প্রয়োগ করি A
। যখন ক্লাস A
স্থিতিশীল হয়ে উঠেছে (প্রয়োগ ও পরীক্ষিত), আমি সাধারণত এটি খুব বেশি সংশোধন করি না (সম্ভবত, মোটেও নয়), অর্থাত্
- যদি নতুন প্রয়োজনীয়তা উপস্থিত হয় (যেমন কার্য সম্পাদন, বা ইন্টারফেসের সম্পূর্ণ নতুন বাস্তবায়ন) যার কোডে বড় পরিবর্তন দরকার, আমি একটি নতুন বাস্তবায়ন লিখি
B
এবংA
যতক্ষণB
না পরিপক্ক হয় ততক্ষণ ব্যবহার চালিয়ে যাচ্ছি ।B
প্রাপ্তবয়স্ক হয়ে গেলে ,I
তাত্ক্ষণিকভাবে পরিবর্তন করা দরকার to - যদি নতুন প্রয়োজনীয়তা ইন্টারফেসেও পরিবর্তনের পরামর্শ দেয় তবে আমি একটি নতুন ইন্টারফেস
I'
এবং একটি নতুন বাস্তবায়ন সংজ্ঞায়িত করিA'
। সুতরাংI
,A
হিমশীতল হয়ে থাকে এবং যতক্ষণ না উত্পাদন সিস্টেমের জন্য বাস্তবায়ন অবধি থাকেI'
এবংA'
এগুলি প্রতিস্থাপনের জন্য পর্যাপ্ত স্থিতিশীল থাকে না।
সুতরাং, এই পর্যবেক্ষণের দৃষ্টিতে, আমি কিছুটা অবাক হয়েছিলাম যে ওয়েব পৃষ্ঠাটি তখন জটিল রিফ্যাক্টরিংগুলি ব্যবহারের পরামর্শ দিয়েছিল , "... কারণ এটি চূড়ান্ত আকারে সরাসরি কোড লেখা সম্ভব নয়।"
ওপেন / ক্লোজড নীতিমালা কার্যকর করার এবং জটিল রিফ্যাক্টরিংগুলি সর্বোত্তম অনুশীলন হিসাবে ব্যবহারের পরামর্শ দেওয়ার মধ্যে কি কোনও দ্বন্দ্ব / দ্বন্দ্ব নেই? অথবা এখানে ধারণাটি হল যে কোনও শ্রেণীর বিকাশের সময় জটিল রিফ্যাক্টরিংগুলি ব্যবহার করতে পারে A
তবে যখন সেই শ্রেণিটি সফলভাবে পরীক্ষা করা হয়েছে তখন এটি হিমায়িত করা উচিত?