প্রতিস্থাপনের মাধ্যমে ব্যক্তিগত পদ্ধতিগুলি আহ্বান করা হয়েছে এমন পরিস্থিতিগুলির সাথে কি আমার মোকাবিলা করার দরকার আছে?


12

একটি গ্রন্থাগার তৈরি করার সময়, আমি অবশ্যই নিশ্চিত করতে পারি যে ব্যক্তিগত শ্রেণিগুলি একই শ্রেণীর অন্যান্য পদ্ধতি দ্বারা নয়, তবে প্রতিচ্ছবির মাধ্যমে অন্য লাইব্রেরির দ্বারা প্রত্যাশিতভাবে কাজ করা উচিত ?

উদাহরণস্বরূপ, যদি কোনও ব্যক্তিগত পদ্ধতি private DoSomething(int number)এটির প্রত্যাশা করে:

  • number একটি ইতিবাচক অ-শূন্য পূর্ণসংখ্যার এবং:
  • একটি ব্যক্তিগত ভেরিয়েবল string abcনাল নয় এবং একটি খালি স্ট্রিং নয়,

এবং সম্পূর্ণরূপে, কুরুচিপূর্ণ ব্যর্থ হয় যদি এই দুটি শর্তটি মেলে না, আমি অবশ্যই এই ব্যর্থতাগুলি হ্যান্ডেল করতে পারি যদি আমি জানি যে ক্লাসের সমস্ত পদ্ধতি সর্বদা কল করার আগে একটি খালি খালি মান বরাদ্দ করবে, এবং এটিতে ইতিবাচক অ-শূন্য পূর্ণসংখ্যার পাস করবে পদ্ধতি?abcDoSomething

অন্য কথায়, প্রতিবিম্বের মাধ্যমে অনিরাপদ কলগুলির বিরুদ্ধে সুরক্ষিত কোডটি কি নিম্ন মানের কোড হিসাবে বিবেচনা করা যেতে পারে , বা কলটি কিছু ভেঙে না যায় তা নিশ্চিত করার জন্য প্রতিচ্ছবি ব্যবহার করে এমন কলারের সাথে এটি অন্তর্ভুক্ত?

দ্রষ্টব্য: আমার প্রশ্নাগুলি কেবল গ্রন্থাগারগুলির একটি সেট সেট করে। এটি এমন কোডটি কভার করে না যা অবশ্যই অত্যন্ত সুরক্ষিত থাকতে হবে (যেমন যখন কেউ অপ্রত্যাশিতভাবে বা ক্র্যাশ করতে পারে তার জন্য প্রতিচ্ছবিটি ব্যবহার করে আগ্রহী হতে পারে)।


¹ শ্রেণিটি সঠিকভাবে নথিভুক্ত করা হয়েছে, কারণ অন্য কোনও বিকাশকারী এই পদ্ধতিটি ভঙ্গ করবেন না তা নিশ্চিত করার জন্য পর্যাপ্ত ইউনিট পরীক্ষা রয়েছে etc.


উত্সর্গীকৃত ক্লাসগুলি কি ব্যক্তিগত পদ্ধতিগুলি কল করতে সক্ষম হবে?
oenone

উত্তর:


16

আপনার পদ্ধতিটি ব্যক্তিগত হিসাবে চিহ্নিত করে আপনি আপনার উদ্দেশ্য এবং একটি চুক্তি প্রতিষ্ঠা করেছেন। প্রতিবিম্ব ব্যবহার করে একটি ক্লায়েন্ট কোড এই চুক্তিটি ভেঙে বেছে নিতে পারে এবং ফলস্বরূপ পরিণতিগুলি বহন করতে হবে। প্রোটোকলগুলির সাথে একই জিনিস ঘটে থাকে, কাজ করার নিয়মগুলি অনুসরণ করতে হবে বা খারাপ কিছু ঘটবে।

অন্যান্য ভাষা যেমন সি ++ এর ক্ষেত্রেও আমি একই জিনিস দেখেছি একই সমস্যা দেখা দিতে পারে

#define private public

সংক্ষেপে - আপনার এই পরিস্থিতিগুলি মোকাবেলা করার প্রয়োজন নেই, কলারের আরও ভাল জানা উচিত।


3
আমি লোককে (স্বাক্ষরবিহীন চর *) এর ক্লাস কাস্ট করতে দেখেছি এবং তারা যে পরিবর্তনশীল হতে চান তার সদস্যের পরিবর্তে মেমরির অফসেটে সরাসরি লিখি। আমার চোখ ব্লিড।
শন ডি

6
আমি যুক্ত করব যে বিপজ্জনক সুবিধাযুক্ত কোডের বিরুদ্ধে আপনার শ্রেণিকে রক্ষা করা মূলত অসম্ভব । যদি আপনি কোনওভাবে নিজেকে প্রতিবিম্বের অনুপযুক্ত ব্যবহার থেকে রক্ষা করতে পরিচালিত হন তবে কেউ আপনার দিনকে নষ্ট করার জন্য আলাদা উপায় খুঁজে পাবেন, সম্ভবত আপনার প্রক্রিয়া স্মৃতিটিকে সরাসরি সরাসরি লিখে overw প্রতিরক্ষামূলক কোডিং অবশেষে হ্রাসকারী রিটার্নের একটি পর্যায়ে পৌঁছায় এবং প্রতিবিম্বটি সেই বিন্দুটি পেরিয়ে যায়।
অ্যারোনআউট

5

যদি কেউ আপনার ব্যক্তিগত পদ্ধতিগুলি কল করতে প্রতিবিম্ব ব্যবহার করে থাকে তবে এটি একটি চিহ্ন যে কেউ কেউ কিছু ভুল করছে। হয় সে কোডটি এমনভাবে ব্যবহার করছে যেগুলি এটির জন্য ডিজাইন করা হয়নি, বা আপনি খুব বেশি অভ্যন্তরীণ কাজকর্মগুলি গোপন করছেন এবং এপিআই বোবাচ্ছেন।

তবে মনে হচ্ছে আপনি এখনও সেই পর্যায়ে নেই, এবং কেবল প্রাক-উদ্দীপক হওয়ার চেষ্টা করছেন। সুতরাং আমার মতামত: এটি সম্পর্কে চিন্তা করবেন না। একটি ব্যক্তিগত পদ্ধতি অফ সীমা বিবেচনা করা উচিত; যদি কেউ ইচ্ছাকৃতভাবে এই সীমাগুলি লঙ্ঘন করে, তবে যদি জিনিসগুলি বাড়ে তবে তাদের সমস্যা।


0

ওয়েল, আপনি অ-স্থানীয় ভেরিয়েবলগুলি ব্যবহার করার আগে তাদের বৈধতা দেওয়ার জন্য সর্বদা একটি ভাল ধারণা, তবে এগুলি ছাড়া আমি এ নিয়ে উদ্বিগ্ন হব না। অন্যরা যেমন বলেছিল, আপনি পদ্ধতিটিকে প্রথমে ব্যক্তিগত করে নিজের উদ্দেশ্য স্থাপন করেছেন; আপনার ক্লাসের বাইরে থেকে যে কেউ এটিকে ডাকছেন তার শূন্য গ্যারান্টি রয়েছে। জাভাতে কাজ করার সময়, আমি আমার ব্যক্তিগত পদ্ধতিগুলিতে জাভাডক মন্তব্যও রাখি না, কারণ আমি চাই না যে অন্যান্য বিকাশকারীরা এমনকি তারা সেখানে আছেন তাও জানতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.