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