TLDR
অনুপ্রেরণামূলক ডেটা অপ্রাসঙ্গিক। সরঞ্জাম এবং অনুশীলন (ডিআই এর মতো) নির্দিষ্ট সমস্যাগুলি সমাধান করে । আপনার সমস্যাগুলি বুঝুন, কীভাবে সরঞ্জামগুলি ব্যবহার করবেন তা শিখুন এবং কোনও সরঞ্জাম মূল্যবান হলে তা স্পষ্ট হয়ে উঠবে - এবং আপনি ফলাফলগুলি যেকোন সাধারণীকৃত, একত্রিত, অভিজ্ঞতাবাদী ডেটার চেয়ে অনেক বেশি ভবিষ্যদ্বাণীপূর্ণভাবে ব্যাখ্যা করতে সক্ষম হবেন।
এবং এখন, আরও অনেক শব্দগুণের সাথে ...
অভিজ্ঞতা অভিজ্ঞতা আছে?
অবশ্যই, সম্ভবত। বা কমপক্ষে হতে পারে। কিন্তু কে ভাবে? এটি প্রাসঙ্গিক নয়।
ডিআই-এর একটি পরিসংখ্যানগত ব্যয়-বেনিফিট বিশ্লেষণ একাডেমিকভাবে আকর্ষণীয় হতে পারে, তবে এটি পৃথক সাফল্যের পূর্বাভাস দেয় না। সমষ্টিগত ফলাফল পৃথক সাফল্য এবং ব্যর্থতাগুলি আড়াল করে । এবং, আমি তর্ক করতে পারি যে "ইভানজেলিকাল" অভ্যাস সম্পর্কিত ডেটাগুলি বিশেষত বিষাক্ত। এই শাখাগুলি উভয় উদ্যোগী এবং বোকা উভয়কেই আকর্ষণ করে, উভয়ই "খাঁটি" বাস্তবায়নের নেট প্রভাবকে অস্পষ্ট করে, এবং যেগুলির মধ্যে আপনি যে কোনও একটি হতে পারেন!
সুতরাং, আমরা কীভাবে জানি যে নির্ভরতা ইনজেকশনটি আদৌ মূল্যবান ?
ভাল প্রশ্ন! প্রকৃতপক্ষে দুর্দান্ত প্রশ্ন। এবং আমি আপনার সাথে রয়েছি - আমি কৌতুকপূর্ণ "সর্বোত্তম অভ্যাস" এর উপর সময় এবং মানসিক প্রচেষ্টা নষ্ট করা ঘৃণা করি যা কেউ ন্যায়সঙ্গত করতে পারে না। সুতরাং, আপনি জিজ্ঞাসা করে আমি আনন্দিত।
Uhh। কিন্তু, এখানে বিব্রতকর সমস্যা হবে ... ইন সাধারণ পদ, আপনি না জানি। এবং, আরও বিব্রতকরভাবে, আপনার কোডটি আসলে ডিআই প্রবর্তন করে কোনওভাবেই ভাল না হতে পারে।
খাবি!
⊙▃⊙ . . . (╯°□°)╯︵ ┻━┻
...
সুতরাং, এখন আপনি ভাবছেন ...
আমি কেন 'বিরক্তিকর বিষয়গুলিকে' নুথিন প্রমাণিত 'বলে বিরক্ত করব না !?
প্রথমত, আসুন আমরা সবাই - বিতর্কটির প্রতিটি দিক দিয়ে - কেবল স্থির হয়ে থাকি। আমি আপনাকে আশ্বস্ত করতে পারি যে মতবাদ এবং সংশয়বাদের মধ্যে যুক্তি এবং স্তরের মাথাব্যথার এক সুন্দর স্বর্গ রয়েছে। (এবং মাঝেমধ্যে নিখরচায় এসইএসই পোস্ট।) এবং, পিওএপি আপনাকে সেখানে নিয়ে যেতে পারে।
... যার অর্থ, নীতি প্রয়োগের মূলনীতি :
নীতিমালা, নিদর্শন এবং অনুশীলনগুলি চূড়ান্ত উদ্দেশ্য নয়। প্রত্যেকের ভাল এবং যথাযথ প্রয়োগ তাই উত্সাহিত এবং একটি চূড়ান্ত, আরও চূড়ান্ত উদ্দেশ্য দ্বারা সীমাবদ্ধ ।
আপনারা বুঝতে হবে যে আপনি যা করছেন তা কেন করছেন!
(পিওএপি পিওএপি থেকে অব্যাহতিপ্রাপ্ত নয়))
(আমি বলব, "জোর আমার," তবে এটি যাইহোক আমার নিজের "ব্লগ" থেকে। সুতরাং, এটি আমার সমস্ত !)
আমাকে সেখানে মূল বিষয়টির পুনরাবৃত্তি করতে দিন: আপনি কী করছেন আপনি কেন করছেন তা আপনার বুঝতে হবে।
এবং সম্ভবত স্পষ্ট করে বলতে গেলে, প্রদত্ত "কিছু" (যেমন নির্ভরতা ইনজেকশন) গ্রহণ করা সাধারণভাবে বোধগম্য হয় না এবং এটি ইতিমধ্যে কী সমস্যা সমাধান করে তা না বুঝে ব্যবহার করুন - বিশেষ করে আপনার জন্য। আপনি যদি নিজের সমস্যাগুলি বুঝতে পারেন এবং "কিছু" (ডিআই এর মতো) কীভাবে কাজ করে তা সাধারণ কিছু, একীভূত, অভিজ্ঞতামূলক তথ্য যা বলে তা নির্বিশেষে "কিছু" কতটা সহায়ক তা কিছুটা "স্পষ্ট" হয়ে উঠবে।
আপনার কাছে যদি ডিআই এর উপকারিতা বা অ- সাহায্যমূলকতা সুস্পষ্ট না হয় - বা কমপক্ষে আপনার যুক্তিযুক্ত শক্তির বাইরে - আপনি হয় ডিআই বুঝতে পারবেন না, বা আপনি নিজের সমস্যাগুলি বুঝতে পারেন না।
আসুন একটি বাস্তব-দুনিয়া "দৃষ্টান্ত" হিসাবে বিবেচনা করি consider
আমাদের একটি বাক্স তৈরি করা দরকার। আমাদের কাঠ আছে আমাদের নখ আছে এবং, আমাদের দুটি সরঞ্জাম রয়েছে: একটি স্ট্যান্ডার্ড নখর হাতুড়ি এবং একটি স্ক্রু ড্রাইভার ।
হাতুড়ির সাহায্যে নির্মিত কাঠামোগুলির তুলনায় স্ক্রু ড্রাইভারগুলির সাথে নির্মিত বাক্সগুলি সামগ্রিকভাবে উল্লেখযোগ্যভাবে আরও দৃust় বাক্সগুলির মধ্যে রয়েছে তা দেখানোর জন্য এখন আমাদের কিছু বিস্তৃত অভিজ্ঞতামূলক তথ্য থাকতে পারে। তবে, যদি আপনি এই নখগুলি ভিতরে inোকানোর চেষ্টা করেন তবে আপনি কোনও বাক্সই শেষ করবেন না। এবং, আপনি যদি স্ক্রু ড্রাইভারের সাথে তাদের ধাক্কা দেওয়ার চেষ্টা করেন, তবে আপনি শেষ পর্যন্ত এগুলিতে প্রবেশ করতে পারেন; তবে, এটির জন্য উল্লেখযোগ্যভাবে আরও সময় এবং প্রচেষ্টা প্রয়োজন হবে, এবং চূড়ান্ত ফলাফলটি আপনি কেবল হাতুড়ি ব্যবহারের চেয়ে কম সুনির্দিষ্ট (এবং শক্তিশালী) হবে।
এবং, যদি আপনি কখনও কাউকে আগেও দুটি সরঞ্জাম ব্যবহার করতে দেখেছেন এবং যদি আপনি কোনও বাক্সের চেহারা কেমন তা বুঝতে পারেন তবে সিদ্ধান্তটি সুস্পষ্ট।
অন্তর শক্তি বস্তু চালানর ক্ষমতা!
এর ... হুম ...
হ্যাঁ, নির্ভরতা ইনজেকশন কী সমস্যার সমাধান করে?
এটা তোলে প্রতিরোধ অনমনীয়, আন-কনফিগারযোগ্য কোড, যা প্রায়ই তাই নি: - হয় কাজ testable ।
এটি কোনও মডিউল কী পদক্ষেপ নিয়ে কাজ করে তা সিদ্ধান্ত নেওয়ার জন্য ইনোভাকিং কোডকে অনুমতি দিয়ে এটি করে । এবং আমি জানি আপনি এটি ভাবছেন, এবং আপনি ঠিক বলেছেন: এটি এমনকি দূরবর্তীভাবে নতুন ধারণাও নয়। বীজগণিত সংঘটিত হওয়ার পরে পদ্ধতি / ফাংশন পরামিতি বিদ্যমান।
আমরা যখন আমাদের ভারসাম্যহীনতা দেখার জন্য যথেষ্ট পরিমাণ কোড জমা হয়েছি এবং উত্তরাধিকার সূত্রে পেয়েছি তখন আমরা "ডিপেন্ডেন্সি ইনজেকশন" নামে একে বেসিক প্যারামিটারের পাশ দিয়ে সুসমাচার প্রচার শুরু করি। কোডের পর্বতমালাগুলির উপরে আমরা বসে ছিলাম সহজেই পরিবর্তন, পরীক্ষা করা বা পুনরায় ব্যবহার করা যায়নি, কারণ নির্ভরতাগুলি লুকিয়ে ছিল।
অতএব, নির্ভরতা ইনজেকশন জন্য উদ্যোগী ক্রুসেড ...
কে। তবে, আমি ঠিক জরিমানার সাথে যুক্তিগুলি পাস করতে পারি। ফ্রেমওয়ার্ক কেন ?
আমি এটি বুঝতে পেরেছি, ডিআই ফ্রেমওয়ার্কগুলি প্রাথমিকভাবে বয়লারপ্লেট বিল্ডআপের সমস্যাটি সমাধান করে (অত্যধিক alousর্ষণীয় ডিআই, আইএমওর কারণে) - বিশেষত যখন সমস্ত মডিউলের জন্য প্রয়োজনীয় "ডিফল্ট" নির্ভরতা থাকে যা তাদের প্রয়োজন। ডিআই ফ্রেমওয়ার্কগুলি ডিফল্ট নির্ভরতাগুলি যখন বিন্যাসের পর্যায়ে স্পষ্টভাবে পাস না করা হয় তখন তাদের ডিফল্ট নির্ভরতাগুলি স্লিপ করার জন্য যাদুকরী (সম্ভাব্য এমনকি দুষ্টু!) জিনিসগুলি করে। ( যখন এই পদ্ধতিতে ব্যবহৃত হয় তখন সার্ভিস লোকেটার হিসাবে একই প্রভাব থাকে, মনে রাখবেন!)
নির্ভরতা ইনজেকশন, "শৃঙ্খলা" হিসাবে, সত্য পাওয়া সত্যই কঠিন। এটি ডিআই ব্যবহার করার বিষয়টি নয় বা নয়; এটা জেনে যা নির্ভরতা পরিবর্তন অথবা প্রয়োজন বিদ্রূপকারী করার সম্ভাবনা থাকে এবং ইনজেকশনের ব্যাপার সেই । এবং তারপরে, এটি সিদ্ধান্ত নেওয়ার বিষয় যে ডিআই পরিষেবাগুলির অবস্থানের মতো কোনও বিকল্পের চেয়ে আরও ভাল ফিট করে কিনা ...
তবে, আমি আপনাকে এটি গুগলে উত্সাহিত করব , সম্ভবত এই এসও উত্তরটি দেখুন , সম্ভবত আপনার শিল্পের একজন অভিজ্ঞ-অভিজ্ঞ এবং সফল বিকাশকারী সাথে কথা বলুন এবং সিআরএসই-তে নির্দিষ্ট উদাহরণ পোস্ট করুন ।