দুঃখিত তবে আমি অন্যান্য 'হ্যাঁ আপনি করতে পারেন' উত্তরগুলির সাথে বেশিরভাগের সাথে একমত হতে এবং বলতে পারেন:
আমি একজন শ্রেণিকে অন্যের কাছ থেকে জনসাধারণের পদ্ধতিতে ডাকতে নিরুৎসাহিত করব
এই অনুশীলনটি নিয়ে বেশ কয়েকটি সম্ভাব্য সমস্যা রয়েছে।
1: উত্তরাধিকারসূত্রে প্রাপ্ত শ্রেণিতে অসীম লুপ
সুতরাং আপনার বেস শ্রেণিটি পদ্ধতি 2 থেকে মেথড 1 কে কল করে কিন্তু তারপরে আপনি বা অন্য কেউ তা থেকে উত্তরাধিকার সূত্রে আসে এবং মেথড 1 কে একটি নতুন পদ্ধতির সাথে লুকিয়ে রাখে যাকে মেথড 2 বলে।
2: ইভেন্টস, লগিং ইত্যাদি
উদাহরণস্বরূপ আমার একটি পদ্ধতি অ্যাড 1 রয়েছে যা একটি ইভেন্টে গুলি চালায় '1 যুক্ত!' আমি সম্ভবত চাই না যে অ্যাড 10 পদ্ধতিটি ইভেন্টটি বাড়িয়ে তুলবে, লগতে লিখুন বা যাই হোক না কেন, দশবার লিখুন।
3: থ্রেডিং এবং অন্যান্য ডেডলকস
উদাহরণস্বরূপ InsertComplexData একটি db সংযোগ খোলে, লেনদেন শুরু করে, একটি টেবিল লক করে, তারপরে InsertSimpleData কে সংযোগ খোলে একটি লেনদেন শুরু করে, টেবিলটি আনলক হওয়ার জন্য অপেক্ষা করে ....
আমি নিশ্চিত যে এর আরও বেশি কারণ রয়েছে, অন্য একটি উত্তর 'আপনি পদ্ধতি 1 সম্পাদনা করেন এবং অবাক হন পদ্ধতি 2 ভিন্ন আচরণ শুরু করে' এ স্পর্শ করে
সাধারণত যদি আপনার কাছে দুটি পাবলিক পদ্ধতি থাকে যা কোডটি ভাগ করে দেয় তবে এগুলি উভয়কেই অন্যজনকে কল করার চেয়ে একটি ব্যক্তিগত পদ্ধতিতে কল করা আরও ভাল।
সম্পাদনা করুন ----
ওপিতে নির্দিষ্ট ক্ষেত্রে প্রসারিত করতে দেয়।
আমাদের প্রচুর বিশদ নেই তবে আমরা জানি যে রিভার্সডাটা কোনও ধরণের ইভেন্ট হ্যান্ডলার পাশাপাশি শিডিয়ুল ট্রান্সমিশন পদ্ধতি দ্বারা ডাকা হয়।
আমি ধরে নিই যে বিপরীত তথ্যও বস্তুর অভ্যন্তরীণ স্থিতি পরিবর্তন করে
এই কেসটি দেওয়া আমি মনে করব যে থ্রেড সাফটি গুরুত্বপূর্ণ হবে এবং তাই অনুশীলনে আমার তৃতীয় আপত্তি প্রযোজ্য।
রিভার্সডাটা থ্রেডটিকে নিরাপদ করতে আপনি একটি লক যুক্ত করতে পারেন। তবে শিডিয়ুল ট্রান্সমিশনটিতে থ্রেড নিরাপদ থাকা দরকার থাকলে আপনি একই লকটি ভাগ করতে চাইবেন।
এটি করার সবচেয়ে সহজ উপায় হ'ল রিভার্সডেটা কোডটি একটি ব্যক্তিগত পদ্ধতিতে সরানো এবং উভয় জনসাধারণের পদ্ধতিতে এটি কল করা। এরপরে আপনি সর্বজনীন পদ্ধতিতে লক স্টেটমেন্টটি রেখে একটি লক অবজেক্টটি ভাগ করতে পারেন।
অবশ্যই আপনি তর্ক করতে পারেন "এটি কখনই ঘটবে না!" বা "আমি অন্য উপায়ে লকটি প্রোগ্রাম করতে পারতাম" তবে ভাল কোডিং অনুশীলনের মূল বিষয়টি হ'ল প্রথমে আপনার কোডটি ভালভাবে গঠন করা।
একাডেমিক ভাষায় আমি বলব এটি কঠোরভাবে এল লঙ্ঘন করে। পাবলিক পদ্ধতিগুলি কেবল সর্বজনীনভাবে অ্যাক্সেসযোগ্য than তারা এর উত্তরাধিকারীদের দ্বারাও পরিবর্তনযোগ্য। আপনার কোডটি সংশোধন করার জন্য বন্ধ করা উচিত যার অর্থ আপনি জনসাধারণ এবং সুরক্ষিত উভয় পদ্ধতিতে আপনি কী কাজ করবেন সে সম্পর্কে আপনাকে ভাবতে হবে।
হেরস আরেকটি: আপনিও সম্ভাব্যভাবে ডিডিডি লঙ্ঘন করেন। যদি আপনার অবজেক্ট কোনও ডোমেন অবজেক্ট হয় তবে এর সর্বজনীন পদ্ধতিগুলি ডোমেন শর্তাদি হওয়া উচিত যা ব্যবসায়কে কিছু বোঝায়। এক্ষেত্রে এর খুব কমই সম্ভাবনা রয়েছে যে 'এক ডজন ডিম কিনুন' 12 বার 1 ডিম কিনে 'একইভাবে শুরু হয় এমনকি যদি এটি শুরু হয়।