Redux কি স্যানিটাইজড গড অবজেক্ট প্যাটার্ন ব্যবহার করছে?


15

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

সুতরাং প্রশ্নটি এসেছিল, রেডাক্স কি Godশ্বর অবজেক্টের স্যানিটাইজড সংস্করণ ব্যবহার করছে? বা, জাভাস্ক্রিপ্টের ক্লাসিকালভাবে দৃ O়ভাবে টাইপ করা OOP না থাকার সাথে কিছু করার আছে?


2
সংক্ষিপ্ত উত্তর: না। দীর্ঘ উত্তর (আসলে একটি প্রশ্ন যার উত্তর দিকে পরিচালিত করা উচিত): একটি ডাটাবেস কি শ্রেণি? বা কিভাবে একটি ফাইল সিস্টেম সম্পর্কে? বা কিভাবে একটি ক্যাশে সম্পর্কে? এগুলিও কি সমস্ত patternsশ্বরের নিদর্শন?
লাইফ

আইএমও হ্যাঁ এটি রেডাক্স সম্পর্কে প্রথম বিবৃতিতে রয়েছে: "জাভাস্ক্রিপ্টের একক পৃষ্ঠার অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তা ক্রমশ জটিল হয়ে উঠছে, আমাদের কোড অবশ্যই আগের চেয়ে আরও বেশি রাজ্য পরিচালনা করবে।" - এর থেকে বোঝা যায় যে আপনাকে নিজের অ্যাপ্লিকেশনটির অবস্থা একটি ব্লব হিসাবে পরিচালনা করতে হবে। আমি মনে করি এটি ওয়েব অ্যাপ্লিকেশনগুলির সাথে সুনির্দিষ্ট এবং ওয়েব অ্যাপ্লিকেশনগুলি প্রয়োগের জন্য ব্যবহৃত এই ফ্রেমওয়ার্কগুলির জন্য দরিদ্র / কখনই ডিজাইনের জন্য তৈরি করা সমস্যা।
n13

@ এন 13: কেবলমাত্র এটি কোনও কেন্দ্রীভূত অবস্থান থেকে অ্যাক্সেসযোগ্য এর অর্থ এই নয় যে এটি অতএব একটি বিশাল অঙ্কুর। উদাহরণস্বরূপ, আমার ডাটাবেসটি কেন্দ্রিয়ায়িত পদ্ধতিতে অ্যাক্সেস করা হয়েছে ( DbContext) তবে এর অভ্যন্তরীণ ডেটাটি ছোট অংশগুলিতে (টেবিল, স্কিমা) বিভক্ত হয়।
ফ্লাটার

@ অনেকগুলি মহকুমা সহ একটি বড় ব্লবটি এখনও বড় আকারের ব্লব। একটি সরল পুরাতন ওও মডেল সমস্ত তথ্যকে প্রয়োজনীয় জানা প্রয়োজনের ভিত্তিতে ভাগ করে দেয় যার অর্থ প্রতিটি বস্তু কেবলমাত্র খুব সামান্য পরিমাণে রাজ্য / ডেটা নিয়ে কাজ করে এবং সবকিছু খুব সহজ। আপনি এক বিশাল গ্লোবাল স্ট্রাক্টেও সমস্ত কিছু সঞ্চয় করতে পারেন কিন্তু এটি আপনি করেন না কারণ এটি খারাপ সফ্টওয়্যার ডিজাইন। সফ্টওয়্যার 101.
n13

@ n13 আপনি যুক্তিটি সাবক্লাসে পৃথক করতে পারেন (লুকানো বা না), চিঠিটি এবং ভাল অনুশীলনের অভিপ্রায় উভয়ই মেনে চলুন, যখন এখনও আপনার যুক্তিটিতে প্রবেশের বিষয়টি কেন্দ্রীয় করে রেখেছেন। এটি মাইক্রোসার্ভেসেস বনাম একটি একক এপিআই ব্যবহার করার মতো যুক্তি। মাইক্রোসার্ভেসিস একটি বিকল্প হিসাবে, এর অর্থ এই নয় যে "স্বাভাবিক" আরএসটি এপিআই তাই খারাপ অভ্যাস practice
ফ্লাটার

উত্তর:


6

একটি objectশ্বরের উদ্দেশ্য কি? উইকিপিডিয়া থেকে:

প্রোগ্রামের সামগ্রিক কার্যকারিতা বেশিরভাগ [একটি objectশ্বর বস্তু সমন্বিত] একক "সর্বজ্ঞ" আইটেমে কোডড হয়ে থাকে, যা পুরো প্রোগ্রাম সম্পর্কে বেশিরভাগ তথ্য বজায় রাখে এবং এই ডেটা ম্যানিপুলেট করার বেশিরভাগ পদ্ধতিও সরবরাহ করে। যেহেতু এই অবজেক্টটি এত বেশি ডেটা ধারণ করে এবং এর জন্য অনেকগুলি পদ্ধতির প্রয়োজন, প্রোগ্রামে এর ভূমিকা -শ্বরের মতো হয়ে যায় (সর্বজ্ঞ এবং সর্বদাই অন্তর্ভুক্ত)।

রেডাক্স স্টোরটিতে কেবল একটি ডেটা অবজেক্ট থাকে এবং কেবল 2 বা 3 পদ্ধতি প্রয়োজন। এক্ষেত্রে Godশ্বরের অবজেক্ট হিসাবে এটিকে ভাবা কঠিন। এটা তোলে নিশ্চিতভাবে হয় না "সব বুদ্ধিমান।"

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


আমি মনে করি ওপি ভাবছে যে সমস্ত হ্রাসকারীরা একসাথে , স্টোরটিকে "গড অবজেক্ট" হিসাবে গণনা করে।
user949300

1
কোনও প্রোগ্রামের সমস্ত মডেল ক্লাস একসাথে কোনও godশ্বর অবজেক্ট হিসাবে গণনা করে?
ড্যানিয়েল টি।

আমি যুক্তি দিয়েছিলাম যে traditionalতিহ্যবাহী OOP এ তারা সবাই একই "সবকিছু" ডেটাতে কাজ করে না, তাই না, তারা হয় না।
user949300

হ্রাসকারীরাও একই "সবকিছু" ডেটাতে কাজ করে না। একটি একক হ্রাসকারী একটি একক মডেল শ্রেণীর সমতুল্য। হ্রাসকারীর তথ্য শ্রেণীর ক্ষেত্রগুলির সমতুল্য এবং ক্রিয়াগুলি শ্রেণীর পদ্ধতির সমতুল্য (অর্থাত্ প্রতিটি ক্ষেত্রে বিবৃতি একটি নির্দিষ্ট পদ্ধতির সমতুল্য))
ড্যানিয়েল টি।

2

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


5
আপনি কি এই প্রশ্নের জন্য কেবল এই টেবিলটি তৈরি করেছেন? আমি মনে করি এটি পাঠ্যের মতো আরও উপযুক্ত হবে, যাতে এটি দ্রুত লোড হয় এবং স্ক্রিন পাঠকের সাথে এটি পর্যবেক্ষণ করা যায়
ফিনিক্স

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

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

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

0

প্রথম পৃষ্ঠাটি এটিকে স্পষ্ট করে দিয়েছে যে রেডাক্স এমন একটি সমস্যা সমাধান করে যা একক পৃষ্ঠার ওয়েব অ্যাপ্লিকেশনগুলির সাথে সুনির্দিষ্ট:

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

আমার নিজস্ব অনুবাদটি হ'ল - ওয়েব অ্যাপ্লিকেশনগুলি তৈরির জন্য ওয়েব অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্কগুলি অগোছালো এবং তারা ব্রাউজারে চলতে চলতে তাদের এমন এক অনন্য সমস্যার মুখোমুখি করা হচ্ছে যা কেবল ওয়েব অ্যাপ্লিকেশনগুলির বাইরে তৈরি হয় না।

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

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

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

ওয়েব অ্যাপসের মতো পরিস্থিতির সাথে আপনি কখনও মুখোমুখি হননি।

** যদি আপনার স্থাপত্যটি খারাপ হয় তবে ভাল, কিছুই আপনাকে রক্ষা করতে পারে না, রেডাক্সও নয়;)

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