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