যেহেতু আপনার সমস্যাটি বেশিরভাগই স্টাইলিস্টিক (একাধিক ঘোষণার সাথে নির্মাণকারী পূরণ করতে চাইছে না) এটি স্টাইলিস্টিকভাবেও সমাধান করা যেতে পারে।
আমি এটি যেভাবে দেখছি, অনেকগুলি শ্রেণিভিত্তিক ভাষায় নির্মাণকারীর ক্লাসের নাম অনুসারে একটি ফাংশন থাকতে পারে। স্টাইলিস্টিকভাবে আমরা এটি ব্যবহার করতে পারি যে একটি ES6 শ্রেণি তৈরি করার জন্য যা স্টাইলিস্টিকালি এখনও বোধগম্য হয় তবে আমরা যে সমস্ত সম্পত্তি ঘোষণা করছি তাতে কনস্ট্রাক্টরে ঘটে যাওয়া আদর্শিক ক্রিয়াকে গোষ্ঠীভুক্ত করে না। আমরা কেবল প্রকৃত জেএস কনস্ট্রাক্টরকে "ডিক্লেয়ারেশন এরিয়া" হিসাবে ব্যবহার করি, তারপরে একটি শ্রেণিবদ্ধ ফাংশন তৈরি করি যা আমরা অন্যথায় "অন্য নির্মাণকারীর স্টাফ" অঞ্চল হিসাবে বিবেচনা করি, প্রকৃত নির্মাণকারীর শেষে কল করে।
"কঠোর ব্যবহার";
ক্লাস মাইক্লাস
{
// কেবলমাত্র আপনার সম্পত্তি ঘোষণা করুন এবং তারপরে এটিকে কল করুন lass ক্লাসনাম (); এখান থেকে
কন্সট্রাকটর () {
this.prop1 = 'ব্লাহ 1';
this.prop2 = 'ব্লাহ 2';
this.prop3 = 'ব্লাহ 3';
this.MyClass ();
}
// সমস্ত অন্যান্য "কন্সট্রাক্টর" স্টাফ, ঘোষণার সাথে আর ঝাঁকুনি দেয় না
আমার ক্লাস() {
যা ইচ্ছা কর();
}
}
নতুন দৃষ্টান্তটি নির্মিত হওয়ায় উভয়কেই ডাকা হবে।
2 টি কনস্ট্রাক্টর রাখার মতো সাজ্ট যেখানে আপনি ঘোষণাপত্রগুলি এবং অন্যান্য নির্মাণকারী পদক্ষেপগুলি আলাদা করতে চান এবং স্টাইলিস্টিকালি এটি বুঝতে খুব অসুবিধা হয় না যে এটি কী চলছে।
আমি প্রচুর পরিমাণে ঘোষণাপত্র এবং / অথবা ইনস্ট্যান্টেশন করার সময় প্রচুর ক্রিয়াকলাপ হওয়া এবং দুটি ধারণা একে অপরের থেকে পৃথক রাখতে চাইলে ব্যবহার করার জন্য এটি একটি দুর্দান্ত স্টাইল বলে মনে করি।
দ্রষ্টব্য : আমি খুব উদ্দেশ্যমূলকভাবে "ইনিশিয়ালিং" (যেমন কোনও init()
বা initialize()
পদ্ধতির মতো) এর আদর্শিক আইডিয়োমেটিক ধারণা ব্যবহার করি না কারণ সেগুলি প্রায়শই আলাদাভাবে ব্যবহৃত হয় used নির্মাণ এবং আরম্ভের ধারণাটির মধ্যে এক ধরণের গণ্যমান পার্থক্য রয়েছে। কনস্ট্রাক্টরদের সাথে কাজ করা লোকেরা জানে যে তারা তাত্ক্ষণিকতার অংশ হিসাবে স্বয়ংক্রিয়ভাবে ডাকা হবে। একটি init
পদ্ধতি দেখে অনেক লোক দ্বিতীয় নজরে ছাড়াই ধরে নিচ্ছে যে তাদের ফর্মের সাথে কিছু করা দরকার var mc = MyClass(); mc.init();
, কারণ আপনি সাধারণত এভাবেই আরম্ভ করেন। আমি ক্লাসের ব্যবহারকারীর জন্য একটি সূচনা প্রক্রিয়া যুক্ত করার চেষ্টা করছি না, আমি নিজেই ক্লাসের নির্মাণ প্রক্রিয়াতে যুক্ত করার চেষ্টা করছি ।
কিছু লোক এক মুহুর্তের জন্য ডাবল-টেক নিতে পারে, এটি আসলে মূল বিষয়টির কিছুটা: এটি তাদের কাছে যোগাযোগ করে যে অভিপ্রায়টি নির্মাণের অংশ, এমনকি যদি এটি তাদেরকে ডাবল নিতে এবং যেতে "এমনকি হয় না" ES6 নির্মাতারা কীভাবে কাজ করে "এবং প্রকৃত নির্মাণকারীর দিকে যেতে" দ্বিতীয় দিকে তাকান "ওহ, তারা এটিকে নীচে ডাকে, আমি দেখছি", যে অভিপ্রায়টি (বা ভুলভাবে এটি যোগাযোগ করা) না বলা এবং সম্ভবত প্রচুর পরিমাণে পাওয়ার চেয়ে অনেক ভাল লোকেরা এটির ভুল ব্যবহার করছে, এটি বাইরে থেকে শুরু করার চেষ্টা করছে এবং জঞ্জাল। আমার প্রস্তাবিত প্যাটার্নটি এটি খুব ইচ্ছাকৃত।
যারা সেই ধরণটি অনুসরণ করতে চান না তাদের পক্ষে ঠিক বিপরীতে কাজ করতে পারে। শুরুর দিকে অন্য কোনও কার্যক্রমে ঘোষণাগুলি ফার্ম করুন। হতে পারে এর নাম "বৈশিষ্ট্য" বা "পাবলিকপ্রপার্টি" বা অন্য কিছু রাখুন। তারপরে বাকী জিনিসগুলি সাধারণ কনস্ট্রাক্টরে রেখে দিন।
"কঠোর ব্যবহার";
ক্লাস মাইক্লাস
{
বৈশিষ্ট্য ()
this.prop1 = 'ব্লাহ 1';
this.prop2 = 'ব্লাহ 2';
this.prop3 = 'ব্লাহ 3';
}
নির্মাতা () {
this.properties ();
যা ইচ্ছা কর();
}
}
নোট করুন যে এই দ্বিতীয় পদ্ধতিটি পরিষ্কার দেখতে পারে তবে এতে একটি অন্তর্নিহিত সমস্যাও রয়েছে যেখানে properties
এই পদ্ধতিটি ব্যবহার করে এক শ্রেণি অন্য শ্রেণিকে প্রসারিত করার কারণে ওভাররাইড হয়ে যায়। properties
এটি এড়াতে আপনাকে আরও অনন্য নাম দিতে হবে। আমার প্রথম পদ্ধতিতে এই সমস্যা নেই কারণ এর নকল অর্ধেকটি নির্মাণকারীর অনন্যরূপে শ্রেণীর নামকরণ করা হয়েছে।
this.member = member
20-30 পরামিতিগুলির সাথে আপনার কনস্ট্রাক্টরের পুনরাবৃত্তি হবে ?