SOLID অনুসরণ করার সময়, ফাইলগুলি পড়া এবং লেখার জন্য দুটি পৃথক দায়িত্ব রয়েছে?


13

আমি সলিড সন্ধান করতে শুরু করছি এবং যদি ফাইল থেকে পড়া এবং ফাইলগুলিতে লেখা একই দায়িত্ব হয় তবে আমি নিশ্চিত নই।

লক্ষ্য একই ফাইল টাইপ; আমি আমার অ্যাপ্লিকেশনটিতে .pdf পড়তে এবং লিখতে চাই।

অ্যাপ্লিকেশনটি পাইথনে রয়েছে যদি এতে কোনও পার্থক্য আসে।

উত্তর:


24

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

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


8

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

যাইহোক, আপনি একই পদ্ধতি বা ফাংশন ফাইল পড়া এবং লেখার রাখা উচিত নয়।


5

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

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

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

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


এটি স্টিভেনের উত্তরের মতো, তবে এটি একটি দৃ concrete় উদাহরণ দেয়।
ডেভিডএস

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

কংক্রিটের উদাহরণগুলি দুর্দান্ত। আমি কেবল বিশ্লেষণের সাথে তুলনা করছিলাম। দুর্দান্ত উত্তর!
ডেভিডএস

3

( রবার্ট সি মার্টিন ) এর মতে একটি দায়িত্ব হ'ল ফাংশনগুলির একটি সেট যা একজন বিশেষ অভিনেতাকে পরিবেশন করে।

কোনও অভিনেতা প্রদত্ত দায়বদ্ধতার পরিবর্তনের একমাত্র উত্স হওয়া উচিত (পরিবর্তনের একমাত্র কারণ থাকতে হবে)।

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

যদি এটি হয় তবে ফাইল পড়া এবং লেখা দুটি পৃথক দায়িত্ব। কারণ পরিবর্তনের একাধিক উত্স থাকবে (অনেক অভিনেতা পড়ার যুক্তি এবং লেখার জন্য একই জিনিসটি পরিবর্তন করতে চাইতে পারেন)।

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