ডিডিডি (বা বুদ্ধি দিয়ে) এর সাথে মডেল সম্পর্ক?


9

এখানে সরলীকৃত প্রয়োজনীয়তা রয়েছে:

ব্যবহারকারী Questionএকাধিক Answerগুলি সহ একটি তৈরি করে । Questionকমপক্ষে একটি থাকতে হবে Answer

ব্যাখ্যা: মনে Questionএবং Answerএকটি হিসেবে পরীক্ষা : একটা প্রশ্ন আছে, কিন্তু বিভিন্ন উত্তর, যেখানে কয়েক সঠিক হতে পারে। ব্যবহারকারী এই অভিনেতা যিনি এই পরীক্ষাটি প্রস্তুত করছেন, তাই তিনি প্রশ্ন ও উত্তর তৈরি করেন।

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

প্রশ্ন একটি সত্তা , যখন উত্তর মান অবজেক্ট । প্রশ্নের উত্তর রয়েছে। এখন পর্যন্ত আমার কাছে এই সম্ভাব্য সমাধান রয়েছে।

[ক] ভিতরে কারখানাQuestion

Answerম্যানুয়ালি তৈরির পরিবর্তে , আমরা কল করতে পারি:

Answer answer = question.createAnswer()
answer.setText("");
...

এটি একটি উত্তর তৈরি করবে এবং এটিকে প্রশ্নে যুক্ত করবে। তারপরে আমরা এর বৈশিষ্ট্যগুলি সেট করে উত্তর হেরফের করতে পারি। এইভাবে, শুধুমাত্র প্রশ্নগুলি একটি উত্তর তৈরি করতে পারে। এছাড়াও, আমরা কোনও প্রশ্ন ছাড়াই উত্তর পেতে বাধা দেব। তবুও, উত্তর তৈরিতে আমাদের নিয়ন্ত্রণ নেই, কারণ এটি হার্ডকোডে রয়েছে Question

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

[খ] প্রশ্নের ভিতরে কারখানা, # 2 নিন

কেউ কেউ বলেছেন যে আমাদের এই ধরণের পদ্ধতি থাকা উচিত Question:

question.addAnswer(String answer, boolean correct, int level....);

উপরের সমাধানের অনুরূপ, এই পদ্ধতিটি উত্তরের জন্য বাধ্যতামূলক ডেটা গ্রহণ করে এবং এমন একটি তৈরি করে যা প্রশ্নের সাথে যুক্ত হবে।

এখানে সমস্যা যে আমরা হয় নকল প্রস্ততকর্তার Answerকোন ভাল কারণে। এছাড়াও, প্রশ্ন কি সত্যই একটি উত্তর তৈরি করে?

[সি] নির্মাতা নির্ভরতা

আসুন আমাদের নিজের দ্বারা দুটি অবজেক্ট তৈরি করতে মুক্ত থাকুন। আসুন নির্ধারকের ডান নির্ভরতাও প্রকাশ করি:

Question q = new Question(...);
Answer a = new Answer(q, ...);   // answer can't exist without a question

এটি বিকাশকারীকে ইঙ্গিত দেয়, কারণ প্রশ্ন ছাড়া উত্তর তৈরি করা যায় না। তবে, আমরা সেই 'ভাষা' দেখতে পাই না যা বলে যে প্রশ্নের উত্তরে 'যুক্ত' রয়েছে। অন্যদিকে, আমাদের কি এটি দেখার দরকার আছে?

[ডি] নির্ধারক নির্ভরতা, # 2 নিন take

আমরা বিপরীতে করতে পারি:

Answer a1 = new Answer("",...);
Answer a2 = new Answer("",...);
Question q = new Question("", a1, a2);

এটি উপরের বিপরীত পরিস্থিতি। এখানে উত্তরগুলি কোনও প্রশ্ন ছাড়াই থাকতে পারে (যা বোঝায় না) তবে উত্তর ছাড়া প্রশ্ন থাকতে পারে না (যা বোঝায়)। এছাড়াও, 'ভাষা' এখানে যে প্রশ্ন সম্পর্কে আরও স্পষ্ট হবে আছে উত্তর।

[ই] সাধারণ উপায়

এটিই আমি সাধারণ উপায়ে ডাকি, পিপিএল সাধারণত যে কাজটি করে:

Question q = new Question("",...);
Answer a = new Answer("",...);
q.addAnswer(a);

যা উপরোক্ত দুটি উত্তরের 'আলগা' সংস্করণ, কারণ উত্তর এবং প্রশ্ন উভয়ই একে অপর ছাড়া থাকতে পারে। কোন বিশেষ ইঙ্গিত পথ পাবো না আছে তাদের একসঙ্গে বাঁধাই করার।

[এফ] সংযুক্ত

অথবা আমাকে সি, ডি, ই - এর একত্রিত করা উচিত কীভাবে সম্পর্ক তৈরি করা যায় তার সমস্ত উপায়গুলি কভার করার জন্য, যাতে বিকাশকারীদের পক্ষে তাদের পক্ষে সর্বোত্তম যা ব্যবহার করতে সহায়তা করা help

প্রশ্ন

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

এই উপর কোন জ্ঞান?

সম্পাদনা

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

উত্তর:


6

আপডেট করা হয়েছে। স্পষ্টতা বিবেচনায় নেওয়া।

দেখে মনে হচ্ছে এটি একাধিক পছন্দের ডোমেন, যার সাধারণত নিম্নলিখিত প্রয়োজনীয়তা থাকে

  1. একটি প্রশ্নের কমপক্ষে দুটি পছন্দ থাকতে হবে যাতে আপনি নিজের মধ্যে বেছে নিতে পারেন
  2. কমপক্ষে একটি সঠিক পছন্দ থাকতে হবে
  3. প্রশ্ন ছাড়া কোনও পছন্দ হওয়া উচিত নয়

উপরোক্ত উপর ভিত্তি করে

[এ] পয়েন্ট 1 থেকে আক্রমণকারীটিকে নিশ্চিত করতে পারে না, আপনি কোনও পছন্দ ছাড়াই কোনও প্রশ্ন দিয়ে শেষ করতে পারেন

[খ] এর [ অসুবিধা) মতো একই অসুবিধা রয়েছে

[সি] এর [ অসুবিধা ] এবং [বি] এর মতোই অসুবিধা রয়েছে

[ডি] একটি বৈধ পন্থা, তবে পছন্দগুলি পৃথকভাবে পাস করার পরিবর্তে তালিকা হিসাবে পাস করা ভাল

[ই] এর [এ] , [বি] এবং [সি] এর মতোই অসুবিধা রয়েছে

সুতরাং, আমি [ডি] এর জন্য যাব কারণ এটি 1, 2 এবং 3 পয়েন্টগুলি থেকে ডোমেনের নিয়মগুলি নিশ্চিত করে ensure এমনকি আপনি যদি বলেন যে দীর্ঘ সময় ধরে কোনও পছন্দ ছাড়াই কোনও প্রশ্ন না থাকা খুব অসম্ভব তবে কোডের মাধ্যমে ডোমেনের প্রয়োজনীয়তা জানানো সর্বদা ভাল ধারণা।

এই ডোমেনে আমার কাছে আরও অর্থবোধ তৈরি হওয়ার Answerকারণে আমি নামটিরও নামকরণ করব Choice

public class Choice implements ValueObject {

    private Question q;
    private final String txt;
    private final boolean isCorrect;
    private boolean isSelected = false;

    public Choice(String txt, boolean isCorrect) {
        // validate and assign
    }

    public void assignToQuestion(Question q) {
        this.q = q;
    }

    public void select() {
        isSelected = true;
    }

    public void unselect() {
        isSelected = false;
    }

    public boolean isSelected() {
        return isSelected;
    }
}

public class Question implements Entity {

    private final String txt;
    private final List<Choice> choices;

    public Question(String txt, List<Choice> choices) {
        // ensure requirements are met
        // 1. make sure there are more than 2 choices
        // 2. make sure at least 1 of the choices is correct
        // 3. assign each choice to this question
    }
}

Choice ch1 = new Choice("The sky", false);
Choice ch2 = new Choice("Ceiling", true);
List<Choice> choices = Arrays.asList(ch1, ch2);
Question q = new Question("What's up?", choices);

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

আশাকরি এটা সাহায্য করবে.

হালনাগাদ

যদি তাদের প্রশ্নের আগে পছন্দগুলি কীভাবে তৈরি করা হয় তা যদি সত্যিই আপনাকে বিরক্ত করে, তবে কয়েকটি কৌশল আপনি দরকারী বলে মনে করতে পারেন

1) কোডটি পুনরায় সাজান যাতে দেখে মনে হয় যে এগুলি প্রশ্নের পরে তৈরি হয়েছে বা কমপক্ষে একই সাথে তৈরি হয়েছে

Question q = new Question(
    "What's up?",
    Arrays.asList(
        new Choice("The sky", false),
        new Choice("Ceiling", true)
    )
);

2) নির্মাণকারীদের লুকান এবং একটি স্ট্যাটিক কারখানা পদ্ধতি ব্যবহার করুন

public class Question implements Entity {
    ...

    private Question(String txt) { ... }

    public static Question newInstance(String txt, List<Choice> choices) {
        Question q = new Question(txt);
        for (Choice ch : choices) {
            q.assignChoice(ch);
        }
    }

    public void assignChoice(Choice ch) { ... }
    ...
}

3) বিল্ডার প্যাটার্ন ব্যবহার করুন

Question q = new Question.Builder("What's up?")
    .assignChoice(new Choice("The sky", false))
    .assignChoice(new Choice("Ceiling", true))
    .build();

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


সেকেলে. নীচের সমস্ত কিছুই স্পষ্টতার পরে প্রশ্নের সাথে অপ্রাসঙ্গিক।

প্রথমত, ডিডিডি অনুযায়ী ডোমেন মডেলটি বাস্তব বিশ্বে বোঝা উচিত। সুতরাং, কয়েক পয়েন্ট

  1. একটি প্রশ্নের উত্তর থাকতে পারে
  2. প্রশ্ন ছাড়া উত্তর থাকা উচিত নয়
  3. একটি উত্তর ঠিক একটি প্রশ্নের সাথে মিলে যায়
  4. একটি "খালি" উত্তর কোনও প্রশ্নের উত্তর দেয় না

উপরোক্ত উপর ভিত্তি করে

[এ] পয়েন্ট 4 এর বিরোধিতা করতে পারে কারণ এটির অপব্যবহার করা সহজ এবং পাঠ্যটি সেট করা ভুলে যাওয়া।

[বি] একটি বৈধ পন্থা তবে paraচ্ছিক এমন পরামিতিগুলির প্রয়োজন

[সি] 4 পয়েন্টের বিরোধিতা করতে পারে কারণ এটি কোনও পাঠ্য ছাড়াই একটি উত্তরকে অনুমতি দেয়

[ডি] পয়েন্ট 1 এর বিপরীতে এবং 2 এবং 3 পয়েন্টের বিরোধিতা করতে পারে

[ই] 2, 3 এবং 4 পয়েন্টের বিরোধিতা করতে পারে

দ্বিতীয়ত, আমরা ডোমেন যুক্তি প্রয়োগ করতে OOP বৈশিষ্ট্যগুলি ব্যবহার করতে পারি। যথা আমরা প্রয়োজনীয় প্যারামিটারগুলির জন্য কনস্ট্রাক্টর এবং alচ্ছিকর জন্য সেটটার ব্যবহার করতে পারি।

তৃতীয়ত, আমি সর্বব্যাপী ভাষা ব্যবহার করব যা ডোমেনটির জন্য আরও প্রাকৃতিক বলে মনে করা হয়।

এবং পরিশেষে, আমরা সামগ্রিক শিকড়, সত্তা এবং মান বস্তুগুলির মতো ডিডিডি নিদর্শনগুলি ব্যবহার করে এটি সমস্ত ডিজাইন করতে পারি। আমরা প্রশ্নটিকে এর সমষ্টিগতের মূল এবং উত্তরটিকে এর একটি অংশ করতে পারি। এটি একটি যৌক্তিক সিদ্ধান্ত কারণ কোনও প্রশ্নের প্রসঙ্গে বাইরে উত্তরের কোনও অর্থ হয় না।

সুতরাং, উপরের সমস্তটি নীচের নকশাতে সিদ্ধ করুন

class Answer implements ValueObject {

    private final Question q;
    private String txt;
    private boolean isCorrect = false;

    Answer(Question q, String txt) {
        // validate and assign
    }

    public void markAsCorrect() {
        isCorrect = true;
    }

    public boolean isCorrect() {
        return isCorrect;
    }
}

public class Question implements Entity {

    private String txt;
    private final List<Answer> answers = new ArrayList<>();

    public Question(String txt) {
        // validate and assign
    }

    // Ubiquitous Language: answer() instead of addAnswer()
    public void answer(String txt) {
        answers.add(new Answer(this, txt));
    }
}

Question q = new Question("What's up?");
q.answer("The sky");

পিএস আপনার প্রশ্নের জবাব দিয়ে আমি আপনার ডোমেন সম্পর্কে কয়েকটি অনুমান করেছি যা সঠিক নাও হতে পারে, তাই আপনার সুনির্দিষ্টতার সাথে উপরেরটি সামঞ্জস্য করতে নির্দ্বিধায় অনুভব করুন।


1
সংক্ষিপ্তসার হিসাবে: এটি বি এবং সি এর মিশ্রণ দয়া করে প্রয়োজনীয়তার আমার স্পষ্টতা দেখুন। আপনার বিন্দু 1. কোনও প্রশ্ন তৈরির সময় কেবল 'সংক্ষিপ্ত' সময়ের জন্য উপস্থিত থাকতে পারে; তবে ডাটাবেসে নেই। সেই অর্থে, 4 কখনই হওয়া উচিত নয়। আমি আশা করি এখন প্রয়োজনীয়তা পরিষ্কার হয়ে গেছে;)
Lawpert

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

অস্পষ্ট প্রয়োজনীয়তার জন্য দুঃখিত, আপনি উত্তরটি আপডেট করতে এত দয়াবান হবেন?
Lawpert

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

1
@ ল্যাল্পার্টটি Answerএকটি মান অবজেক্ট, এটি সামগ্রীর সামগ্রিক মূলের সাথে সঞ্চয় করা হবে। আপনি মান অবজেক্টগুলি সরাসরি সঞ্চয় করেন না, বা সত্তাগুলি যদি তাদের সামগ্রীর গোড়া না হয় তবে আপনি সংরক্ষণ করবেন না।
জাফরখাজা

1

প্রয়োজনীয়তা এত সহজ, একাধিক সম্ভাব্য সমাধান উপস্থিত থাকলে কেআইএসএস নীতিটি অনুসরণ করা উচিত। আপনার ক্ষেত্রে এটি বিকল্প ই হবে।

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


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

@ আইগোর ই ইতিমধ্যে যোগাযোগ করেছেন যে প্রশ্নের সংরক্ষণের জন্য প্রশ্নের উত্তর নির্ধারণ করা বাধ্যতামূলক করে উত্তরটি প্রশ্নের অংশ, এটি সংরক্ষণাগার is যদি প্রশ্নটি লোড না করে কেবল উত্তরটি সংরক্ষণের কোনও উপায় থাকে, তবে সি আরও ভাল। তবে আপনি যা লিখেছেন তা থেকে তা স্পষ্ট নয়।
euphoric

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

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

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

1

আমি হয় [সি] বা [ই] যেতে হবে।

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

[ডি] কেন নয়? কারণ প্রকৃতিতে আমাদের যা আছে তা তার বিপরীত। আমরা প্রথমে একটি প্রশ্ন তৈরি করি। আপনি কোনও ওয়েব পৃষ্ঠাটি কল্পনা করতে পারেন যেখানে আপনি এই সমস্তটি তৈরি করেন - ব্যবহারকারী প্রথমে একটি প্রশ্ন তৈরি করবেন, তাই না? অতএব, ডি না

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

অতিরিক্ত পড়া

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

use(question).addAnswer(answer).storeToRepo();

অর্থ্যাৎ যে কোনও বড় * পরিষেবাদি এবং * সংগ্রহস্থল শ্রেণী থেকে ব্যবসায়িক যুক্তির ছোট অংশগুলিতে সরে যাওয়ার চেষ্টা করা। শুধু একটি ধারণা।


আপনি অ্যাডোনায় ডোমেন নির্দিষ্ট ভাষা সম্পর্কে কথা বলছেন?
আইনজীবি

এখন আপনি যখন উল্লেখ করেছেন, এটি দেখতে এতোটুকু :) কিনুন এর সাথে আমার কোনও উল্লেখযোগ্য অভিজ্ঞতা নেই।
igor

2
আমি মনে করি যে এখনই একটি sensক্যমত্য হয়েছে যে আইও একটি গোঁড়া স্বাচ্ছন্দ্য এবং সুতরাং এটি সত্তা (স্টোরটোপো) দ্বারা পরিচালিত করা উচিত নয়
স্কোভ পেডারসেন

আমি @ এসবেন স্কোভ পেডারসনকে সম্মত করছি যে সত্তা নিজেই রেপোকে ভিতরে কল করা উচিত নয় (আপনি যা বলেছেন ঠিক তাই?); তবে এএফএআইইউ হিসাবে এখানে আমাদের একরকম বিল্ডার প্যাটার্ন রয়েছে যা কমান্ডগুলি আহ্বান করে; সুতরাং আইও এখানে সত্তায় করা হয় না। অন্তত আইভ এটি বুঝতে পেরেছেন;)
আইনজীবি

পছন্দ করুন এটি কীভাবে কাজ করার কথা তা আমি দেখতে ব্যর্থ হয়েছি তবে আকর্ষণীয় হবে।
এসবেন স্কভ পেডারসেন

1

আমি বিশ্বাস করি আপনি এখানে একটি পয়েন্ট মিস করেছেন, আপনার সমষ্টিগত মূলটি আপনার পরীক্ষার সত্তা হওয়া উচিত।

এবং যদি সত্যিই এটি হয় তবে আমি বিশ্বাস করি আপনার সমস্যার উত্তর দেওয়ার জন্য একটি টেস্টফ্যাক্টরি সবচেয়ে উপযুক্ত।

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

এটি যতক্ষণ না টেস্টফ্যাক্টরি হ'ল একমাত্র ইন্টারফেস আপনি নিজের টেস্টটি ইনস্ট্যান্ট করতে ব্যবহার করেন।

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