কমান্ড / কোয়েরি পৃথকীকরণ কী এমন কোনও পদ্ধতির ক্ষেত্রে প্রযোজ্য যা কোনও বস্তু তৈরি করে এবং তার আইডি ফেরত দেয়?


12

আসুন ভান করি আমাদের এমন একটি পরিষেবা আছে যা একটি ব্যবসায়িক প্রক্রিয়া বলে। এই প্রক্রিয়াটি ডাটাবেসে একটি টাইপ এ এর ​​একটি অবজেক্ট তৈরি করতে ডেটা স্তরকে কল করবে।

এরপরে ডাটাবেসে বি টাইপ বিয়ের একটি উদাহরণ তৈরি করতে আমাদের আবার ডেটা স্তরটির অন্য শ্রেণিতে কল করতে হবে call একটি বিদেশী কী এর জন্য আমাদের এ সম্পর্কিত কিছু তথ্য পাস করতে হবে।

প্রথম পদ্ধতিতে আমরা একটি অবজেক্ট তৈরি করি (রাষ্ট্র পরিবর্তন করুন) এবং একক পদ্ধতিতে এটির আইডি (ক্যোরি) ফিরিয়ে আনি।

দ্বিতীয় পদ্ধতিতে আমাদের দুটি পদ্ধতি রয়েছে, সেভের জন্য একটি (ক্রিয়েএ) এবং অন্যটি কোয়েরির জন্য (গেটআইডি)।

    public void FirstMethod(Info info)
    {
        var id = firstRepository.createA(info);           
        secondRepository.createB(id);
    }

    public void SecondMethod(Info info)
    {
        firstRepository.createA(info);
        var key = firstRepository.getID(info);
        secondRepository.createB(key);
    }

আমার বুঝতে দ্বিতীয় পদ্ধতিটি আরও পুরোপুরিভাবে কমান্ড ক্যোয়ারী বিচ্ছেদকে অনুসরণ করে। তবে আমি সবেমাত্র তৈরি করা অবজেক্টটি পেতে ডাটাবেসকে জিজ্ঞাসা করা ব্যর্থ এবং স্বজ্ঞাত বলে মনে করি।

কীভাবে আপনি এই জাতীয় দৃশ্যের সাথে সিকিউএসকে পুনর্মিলন করবেন?

কেবলমাত্র দ্বিতীয় পদ্ধতিটি কি সিকিউএস অনুসরণ করে এবং যদি তাই হয় তবে এই ক্ষেত্রে এটি ব্যবহার করা ভাল?


2
যদি এ এবং বি কোনও ফ্রিকোয়েন্সি সহ একসাথে তৈরি করা হয় তবে আমি সম্ভবত একটি সঞ্চিত পদ্ধতি একসাথে উভয়ই তৈরি করতে পারব এবং তারপরে সমস্যাগুলি যদি থাকে তবে আপনি প্রথমে একটি বি তৈরি করেছেন বা বি ছাড়াই একটি তৈরি করার সম্ভাবনাটি কেটে ফেলবেন।
রায়থা

আউট প্যারামিটার ব্যবহারের বিকল্পটি দিতে খেলতে দেরিতে পদক্ষেপ নেওয়া। এটি প্রযুক্তিগতভাবে কোনও ফেরতের মূল্য নয়! ;)

উত্তর:


13

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

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

ব্যক্তিগতভাবে আমি কেবল আইডিটি ফিরিয়ে দিয়েছিলাম এবং সিকিউএস ভাল ফিট নয় এমন পরিস্থিতিতে সেগুলির মধ্যে একটির কাছে ফোন করব।

উদাহরণ সহ আরও একটি ভাল নিবন্ধ: মার্টিন ফওলার


3

আপনি যদি কোনও পদ্ধতি অনুসরণ করেন এবং মনে হয় এটি আপনাকে খারাপ পথে নেমেছে, আপনার এটি পুনর্বিবেচনা করা উচিত।

আমি দেখতে পাচ্ছি যে সদ্য তৈরি হওয়া অবজেক্টের শনাক্তকারী একটি রিটার্ন প্যারামিটার হিসাবে থাকা একটি বৈধ জিনিস it এটি কেবল সুবিধাজনক নয়, তবে এটি "ভাল" - যেমন আপনি দেখতে পাচ্ছেন কোডটি করার পরে এটি আরও ভাল।

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


-1

কেবলমাত্র দ্বিতীয় পদ্ধতিটি সিকিউএস অনুসরণ করে।

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

অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মুল :)


দ্বিতীয় পদ্ধতিতে বিশেষত কী ভাল?
চিটএক্স

দ্বিতীয় পদ্ধতিটি 'ভাল' তা আমি বলিনি। আমি বলেছিলাম এটি সিকিউএস দৃষ্টান্ত অনুসরণ করে। আপনি যদি সিকিউএস অনুসরণ না করেন তবে আমি মনে করি যে দ্বিতীয় পদ্ধতিটি আপনার পক্ষে ভাল নয়। কিছু লোক কেন
সিকিউএস

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

স্পষ্টতই আপনি সরবরাহিত লিঙ্কটি আপনি পড়েন নি। সিকিউএস ক্যাচ-বাক্যাংশ: একটি প্রশ্ন জিজ্ঞাসার উত্তর পরিবর্তন করা উচিত নয় । আপনার প্রথম পদ্ধতিতে, আপনার একটি পদ্ধতি রয়েছে ('ক্রিয়েএ') যা একটি 'উত্তর' সরবরাহ করে, তবে আপনি যখনই জিজ্ঞাসা করবেন তখন উত্তরটি পরিবর্তন করে। দ্বিতীয় পদ্ধতিতে আপনার এটি নেই, এটি এটিতে 'মঙ্গল'। পরিষ্কার হতে হবে: আমি কোনও সিকিউএস পিউরিস্ট নই, আমি প্রতিবারই এটি অনুসরণ করি না।
চিজস বলেছেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.