আমি এমন ক্লাস লিখছি যা "অবশ্যই একটি নির্দিষ্ট উপায়ে ব্যবহার করা উচিত" (আমি অনুমান করি সমস্ত শ্রেণি অবশ্যই আবশ্যক ...)।
উদাহরণস্বরূপ, আমি fooManager
ক্লাস তৈরি করি , যার জন্য একটি কল প্রয়োজন, বলুন Initialize(string,string)
। এবং, উদাহরণটিকে আরও কিছুটা এগিয়ে নিয়ে যাওয়ার জন্য, আমরা এর ThisHappened
ক্রিয়াটি না শুনলে শ্রেণিটি অকেজো হবে ।
আমার বক্তব্যটি হচ্ছে, আমি যে ক্লাসটি লিখছি তার জন্য মেথড কল প্রয়োজন। আপনি যদি এই পদ্ধতিগুলিতে কল না করেন এবং খালি নতুন FooManager দিয়ে শেষ হয় তবে এটি ঠিক জরিমানা সংকলন করবে। এক পর্যায়ে, এটি ক্লাস এবং এটি কী করে তার উপর নির্ভর করে এটি কাজ করবে না বা ক্রাশ হবে না। যে প্রোগ্রামারটি আমার ক্লাস প্রয়োগ করে তা স্পষ্টতই এর ভিতরে lookুকে দেখবে এবং "ওহ, আমি ইনিশিয়াল কল করিনি!", এবং এটি ঠিক আছে।
তবে আমি এটি পছন্দ করি না। আমি আদর্শভাবে যা চাই তা হ'ল পদ্ধতিটি না বললে কোডটি সংকলন না করা; আমি অনুমান করছি যে এটি সম্ভব নয়। বা এমন কিছু যা অবিলম্বে দৃশ্যমান এবং স্পষ্ট হবে।
আমি এখানে উপস্থিত বর্তমান পদ্ধতির দ্বারা নিজেকে বিরক্ত বোধ করি, যা নিম্নলিখিত:
ক্লাসে একটি বেসরকারী বুলিয়ান মান যুক্ত করুন, এবং ক্লাসটি আরম্ভ করা হয়েছে কিনা তা সর্বত্র প্রয়োজনীয় পরীক্ষা করুন; যদি তা না হয় তবে আমি একটি ব্যতিক্রম ছুঁড়ে বলব "ক্লাসটি আরম্ভ করা হয়নি, আপনি কি নিশ্চিত যে আপনি কল করছেন .Initialize(string,string)
?"
আমি এই পদ্ধতির সাথে এক ধরণের ঠিক আছি, তবে এটি প্রচুর কোড তৈরি করে যা সংকলিত এবং শেষ পর্যন্ত শেষ ব্যবহারকারীর পক্ষে প্রয়োজনীয় নয়।
এছাড়াও, কখনও কখনও Initiliaze
কল করার চেয়ে আরও বেশি পদ্ধতি থাকলে এটি কখনও কখনও আরও বেশি কোড হয় । আমি আমার ক্লাসগুলিকে খুব বেশি পাবলিক পদ্ধতি / ক্রিয়া না রাখার চেষ্টা করি, তবে এটি কেবল যুক্তিসঙ্গত রেখে সমস্যার সমাধান করছে না keeping
আমি এখানে যা খুঁজছি তা হ'ল:
- আমার পদ্ধতির সঠিক?
- এর চেয়ে ভাল আর কি আছে?
- তোমরা কি কর / পরামর্শ দিও?
- আমি কি একটি নন-ইস্যু সমাধানের চেষ্টা করছি? আমি সহকর্মীদের দ্বারা জানিয়েছি এটি প্রোগ্রামার এর ক্লাসটি ব্যবহারের চেষ্টা করার আগে পরীক্ষা করা উচিত। আমি শ্রদ্ধার সাথে একমত নই, তবে আমি বিশ্বাস করি এটি অন্য বিষয়।
এটিকে সহজভাবে বলতে, আমি যখন ক্লাসটি পরে বা অন্য কারও দ্বারা পুনরায় ব্যবহার করা হয় তখন কলগুলি কার্যকর করতে কখনই ভুলে যাবার উপায়টি বের করার চেষ্টা করছি।
স্পষ্টকরণ:
এখানে অনেক প্রশ্ন পরিষ্কার করতে:
আমি স্পষ্টতই কেবল একটি শ্রেণির সূচনা অংশ সম্পর্কে কথা বলছি না, বরং এটি পুরো জীবনকাল। সহকর্মীদের দুইবার কোনও পদ্ধতিতে কল করতে বাধা দিন, তারা ওয়াই এর আগে X ডেকে আনুন তা নিশ্চিত করে etc. আমি প্রকৃতপক্ষে সম্পদগুলির ধারণাটি পছন্দ করেছি, যদিও আমি নিশ্চিত যে আমাকে অন্য কিছু ধারণার মিশ্রণ করতে হবে কারণ সম্পদগুলি সর্বদা সম্ভব হবে না।
আমি সি # ভাষা ব্যবহার করছি! আমি কীভাবে তা উল্লেখ করিনি ?! আমি একটি জামারিন পরিবেশে রয়েছি এবং পিসিএল, আইওএস, অ্যান্ড্রয়েড এবং উইন্ডোজ প্রকল্পগুলি সহ একটি সমাধানে সাধারণত প্রায় 6 থেকে 9 টি প্রকল্প ব্যবহার করে মোবাইল অ্যাপস তৈরি করি। আমি প্রায় দেড় বছর ধরে স্কুল বিকাশকারী (স্কুল এবং কাজ মিলিত), তাই আমার মাঝে মাঝে হাস্যকর বক্তব্য \ প্রশ্ন। এগুলি সম্ভবত এখানে অপ্রাসঙ্গিক তবে খুব বেশি তথ্য সর্বদা একটি খারাপ জিনিস নয়।
প্ল্যাটফর্মের সীমাবদ্ধতা এবং নির্ভরশীল ইনজেকশন ব্যবহারের কারণে কনস্ট্রাক্টরে বাধ্যতামূলক সমস্ত কিছু আমি সবসময় রাখতে পারি না, ইন্টারফেস ছাড়া অন্য প্যারামিটারগুলি টেবিলের বাইরে থাকে। অথবা হতে পারে আমার জ্ঞান যথেষ্ট নয়, যা অত্যন্ত সম্ভব। বেশিরভাগ সময় এটি ইনিশিয়ালেশন ইস্যু নয়, আরও বেশি
তিনি কীভাবে নিশ্চিত হন যে তিনি এই ইভেন্টে নিবন্ধভুক্ত?
আমি কীভাবে এটি নিশ্চিত করতে পারি যে তিনি "এক পর্যায়ে প্রক্রিয়াটি থামাতে" ভুলেন নি
এখানে আমার মনে আছে একটি বিজ্ঞাপন আনার ক্লাস। বিজ্ঞাপনটি দৃশ্যমান দৃশ্যটি যতক্ষণ না দৃশ্যমান হয় ততক্ষণ ক্লাস প্রতি মিনিটে একটি নতুন বিজ্ঞাপন আনবে। যখন শ্রেণিটি বিজ্ঞাপন তৈরি করতে পারে সেখানে নির্মিত হলে সেই শ্রেণীর একটি ভিউ প্রয়োজন, এটি স্পষ্টতই কোনও প্যারামিটারে যেতে পারে। তবে একবার ভিউ চলে গেলে স্টপফেচিং () অবশ্যই কল করতে হবে। অন্যথায় শ্রেণিটি এমন একটি দৃষ্টির জন্য বিজ্ঞাপন আনতে থাকবে যা এমনকি সেখানে নেই এবং এটি খুব খারাপ।
এছাড়াও, সেই শ্রেণিতে এমন ইভেন্ট রয়েছে যা অবশ্যই "অ্যাডক্লিকড" এর মতো শোনা উচিত। যদি না শোনা যায় তবে সবকিছুই ঠিকঠাক কাজ করে, তবে যদি ট্যাপগুলি নিবন্ধভুক্ত না করা হয় তবে আমরা সেখানে বিশ্লেষণের ট্র্যাকিং হারাতে পারি। বিজ্ঞাপনটি এখনও কাজ করে, সুতরাং ব্যবহারকারী এবং বিকাশকারী কোনও তফাত দেখতে পাবেন না এবং বিশ্লেষণের ঠিক ভুল ডেটা থাকবে। এটি এড়ানো দরকার, এড়ানো দরকার, তবে আমি নিশ্চিত নই যে বিকাশকারীরা কীভাবে জানতে পারে যে তাদের অবশ্যই টাও ইভেন্টে নিবন্ধভুক্ত করতে হবে। যদিও এটি সরলীকৃত উদাহরণ, তবে ধারণাটি সেখানে রয়েছে, "নিশ্চিত হন যে তিনি পাবলিক অ্যাকশন উপলভ্য ব্যবহার করেছেন" এবং অবশ্যই সঠিক সময়ে!
initialize
অবজেক্টটি তৈরি হওয়ার পরে কলটি দেরী করা উচিত? কোরটি কী "ব্যতীত ঝুঁকিপূর্ণ" অর্থে তা ব্যতিক্রম ছুঁড়ে ফেলা এবং সৃষ্টির শৃঙ্খলা ভঙ্গ করতে পারে?
new
ব্যবহারের জন্য প্রস্তুত না হন তবে আপনি কখনই কলটি পেরে উঠবেন না। একটি ইনিশিয়ালাইজেশন পদ্ধতির উপর নির্ভর করা আপনাকে পিছনে ফিরে আসতে বাধ্য এবং একেবারে প্রয়োজনীয় না হলে এড়ানো উচিত, অন্তত আমার অভিজ্ঞতা।