হুকস কখন সঠিক ডিজাইনের পছন্দ হয়?


10

আমি একটি বড় রেল অ্যাপগুলিতে কাজ করেছি যেখানে অ্যাক্টিভেকর্ড কলব্যাক্স ব্যবহার সর্বাধিক প্রবণতাজনক এবং ক্ষয়ক্ষতিজনক ছিল। রেকর্ড সংরক্ষণে প্রায়শই অপ্রত্যাশিত পার্শ্ব-প্রতিক্রিয়া ঘটে এবং এটি সিস্টেম সম্পর্কে যুক্তিযুক্ত হওয়া চ্যালেঞ্জ ছিল।

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

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

আমার কাছে যে থিমটি ঝাঁপিয়ে পড়েছে তা অনুমানযোগ্যতা। হুকের অপব্যবহার দূরত্ব এবং বিস্ময়কর আচরণে ভুতুড়ে কর্মের দিকে পরিচালিত করে বলে মনে হয় , যদিও ভাল ব্যবহারের ফলে এমন কাঠামো তৈরি হতে পারে যা দৃ tight় সংযোগ ছাড়াই অনুমানযোগ্য।

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

উত্তর:


5

হুকগুলি হ'ল একটি ভাল নকশা পছন্দ হয় যখন আপনি তার গ্রাহকদের কাছ থেকে হুকের রিসিভারগুলিতে নিয়ন্ত্রণ স্থানান্তর করে কোনও বিমূর্ততার বাস্তবায়ন বিশদটি ডিকুয়াল করতে চান।

আপনি এটি কোনও বেনাম সম্প্রচারের মাধ্যমে (যেমন ইভেন্টগুলি বা বেনামে কলব্যাকস), বা টাইপযুক্ত বিমূর্ততা (ইন্টারফেস বা অভিভাবক শ্রেণীর মতো) ব্যবহার করে করতে পারেন।

আপনার বেনামী সম্প্রচার ব্যবহার করা উচিত যখন:

  • হুকের কলটি isচ্ছিক
  • হুকটি কে পুনরুদ্ধার করে তা কলকারী চিন্তা করে না।
  • গ্রহণকারীদের মৃত্যুদণ্ড কার্যকর করার আদেশটি অপ্রাসঙ্গিক।
  • আপনি হুকের সমস্ত গ্রাহকের কাছে অবজেক্টের স্থিতি সম্প্রচার করতে চান।

আপনার টাইপযুক্ত বিমূর্ততা ব্যবহার করা উচিত যখন:

  • হুক কল করা বাধ্যতামূলক।
  • কলিং অবজেক্টটির হুকের রিসিভারটি সনাক্ত করা দরকার।
  • গ্রহণকারীদের মৃত্যুদন্ড কার্যকর করার আদেশটি আপনার অবজেক্টের জন্য প্রাসঙ্গিক।

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

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


7

বেশিরভাগ ভাষা এবং বেশিরভাগ প্ল্যাটফর্ম হুকিং ব্যবহার করে, এমনকি এটি অন্য কোনও কিছু হিসাবে সজ্জিত। যখনই আপনি "ইভেন্ট", "" বার্তা, "" ট্রিগার, "" সংকেত, "বা সেই প্রকৃতির অন্যান্য শর্তগুলি শোনেন, আপনি সম্ভবত হুকিংয়ের সাথে কথা বলছেন, যদিও এই নিয়মের ব্যতিক্রম রয়েছে, যা সম্ভবত না এই আলোচনার জন্য বিষয়।

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

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

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


1

আমি এর আগে এমন একটি প্রোগ্রামে কাজ করেছি যা আমার মতে হুকের ভাল ব্যবহার করেছে। আমার বইতে, সত্যিকারের হুকটি কলব্যাকের (গ্রাহক) তালিকার একটি কল (প্রকাশ)। এটি শক্তিশালী, অপব্যবহার করা সহজ। ব্যবহারের ক্ষেত্রে জিজ্ঞাসা করার জন্য সর্বোত্তম প্রশ্নটি: আমি কি রানটাইম সময়ে আচরণ সক্ষম বা অক্ষম করতে চাই? উদাহরণস্বরূপ, আপনি আপনার ব্যবহারকারীদের নির্দিষ্ট ইভেন্টগুলিতে চালিত স্ক্রিপ্টগুলি সরবরাহ করতে বা ছোট প্লাগিনগুলি দিয়ে তৈরি একটি জেনেরিক প্রোগ্রাম তৈরির অনুমতি দিতে চাইতে পারেন। তারপরে হুক কলগুলি উপযুক্ত are সাধারণত, আপনার কাছে অন্য কিছু বিকল্প আছে।

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

মনে রাখবেন, কিছু লোকেরা ওভারলোড হওয়া ফাংশন হুকিংয়ের সাহায্যে টেম্পলেট-পদ্ধতিটিকে কল করে তবে এটি উপরের থেকে পৃথক: এখানে আপনার একটি স্ট্যাটিক লিঙ্ক রয়েছে, রক্ষণাবেক্ষণের দুঃস্বপ্নের ঝুঁকির ঝুঁকির সাথে।

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