ব্যবসায়ের যুক্তিযুক্ত দৃষ্টিতে ক্রাইপ না করা কি সম্ভব?


31

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

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

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

কোনও ব্যবসায়িক যুক্তি না দিয়ে কোনও দৃষ্টিভঙ্গি পাওয়া কি সম্ভব?


2
এমভিসি ডেরাইভেশনগুলি এমভিপি এবং এমভিভিএম দেখুন (দেখুন এন.ইউইউইকিপিডিয়া / উইকি / মডেল_ভিউ_প্রিনেটর এবং এন.ইউইকিপিডিয়া.org / উইকি / মডেল_ভিউ_ভিউমোডেল ), আপনি যা খুঁজছেন সেগুলি তারা হতে পারে।
ডক ব্রাউন

সম্পর্কিত (সম্ভবত একটি সদৃশ): ইউজার ইন্টারফেস থেকে ক্লাস Decoupling
gnat

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

আপনি টেমপ্লেট অ্যানিমেশন দেখতে পারেন ; যদিও এটি সম্ভবত ভিউ স্তর থেকে সমস্ত যুক্তি মুছে ফেলবে না , মনে হচ্ছে এটি কিছুটা পৃথক করে জিনিসগুলিকে আলাদা করা উচিত।
পল

আমি মনে করি একটি ভাল প্রশ্ন হল মডেলকে দূষিত করার জন্য ডেটা দেখার পক্ষে আরও ভাল বা দৃষ্টিভঙ্গির সাথে ব্যবসায়ের যুক্তির সাথে সম্পর্কিত এমন দৃশ্যের পক্ষে আরও ভাল? এটিই হ'ল আরও বাস্তব বাস্তব পরিস্থিতি। আপনার প্রশ্নটি মূলত মডেলকে দূষণের পক্ষে মতামত সমর্থন করে যা আপনি যা জিজ্ঞাসা করছেন তা সম্পাদনের একমাত্র উপায়।
ডঙ্ক

উত্তর:


22

কোনও ব্যবসায়িক যুক্তি না দিয়ে কোনও দৃষ্টিভঙ্গি পাওয়া কি সম্ভব?

আমি উত্তর দেওয়ার জন্য এটি একটি বিভ্রান্তিকর কঠিন প্রশ্নের সন্ধান করি। (চিন্তাভাবনামূলক প্রশ্ন!)

তাত্ত্বিকভাবে, হ্যাঁ, আমরা ব্যবসায়িক যুক্তি হিসাবে কী সংজ্ঞায়িত করি তার উপর নির্ভর করে। অনুশীলনে, কঠোর পৃথকীকরণ অনেক বেশি শক্ত হয়ে যায় এবং এমনকি অযাচিতও হতে পারে।

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

তবে, সমস্ত কিছুর মতোই এখানে বাণিজ্য বন্ধ রয়েছে। সর্বোত্তম ধারণাগত অবস্থান অন্যান্য কারণে সেরা অবস্থান নাও হতে পারে। আপনার ওয়েব সার্ভারে খুব বেশি লোড রয়েছে তাই আপনার সার্ভারে আঘাতের আগে আপনি সহজেই ইনপুট ত্রুটিগুলি ধরতে আপনার ওয়েব পৃষ্ঠাগুলিতে কিছু জাভাস্ক্রিপ্ট যুক্ত করেন; এখন আপনার দৃষ্টিতে কিছু ব্যবসায়ের যুক্তি রয়েছে।

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


2
The best conceptual location may not be the best location for other reasons: ব্রাভো !!
ম্যাগনো সি

8

আমি সাধারণত এটি করি: যদি ব্যবহারকারী এক্স বিকল্প নির্বাচন করে থাকে তবে ভিউ কল করবে

controller->OptionXChanged()

তারপরে নিয়ামক দৃশ্যে y সক্ষম করুন:

view->SetEnableInfoY(True) // suppose False=SetDisable

দৃশ্যটি কোনও সিদ্ধান্ত না নিয়ে কী ঘটে যায় তার নিয়ামককে অবহিত করে।


+1 টি।
ওপি'র

এই যুক্তিটিকে নিয়ামকের মধ্যে রাখার দুটি সমস্যা রয়েছে: 1) এটি ইউনিট পরীক্ষাকে জটিল করে তোলে এবং একই ডেটার একাধিক মতামতকে সমর্থন করা অসম্ভব।
কেভিন ক্লাইনে

4

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

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

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

নীচের লাইন, আমি মনে করি আপনার ব্যবসায়িক যুক্তির সংজ্ঞা অন্যের সংজ্ঞার মতো নয়।


1

আমি এইভাবে কাজ করি (স্ট্রুটস 2 + হাইবারনেট):

আমার স্ট্রটস অ্যাকশনগুলি কেবল ওয়েব ব্রাউজারে তথ্য প্রদর্শন করার জন্য দায়বদ্ধ। ভাবছি না।

ব্যবহারকারী -> ক্রিয়া -> পরিষেবা -> সংগ্রহস্থল -> ডেটা অ্যাক্সেস

বা:

আমি দেখতে চাই -> কীভাবে দেখুন -> কী করবেন -> কীভাবে পাবেন -> কোথায় পাবেন

সুতরাং, প্রথম স্তরে (দেখুন) আমার কাছে এরকম কিছু রয়েছে:

public String execute ()   {
    try {
        CourseService cs = new CourseService();
        Course course = cs.getCourse(idCourse);
    } catch (NotFoundException e) {
        setMessageText("Course not found.");
    } catch (Exception e) {

    }
    return "ok";
}

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

সুতরাং, আমি যদি আমার পরিষেবাদি, সংগ্রহশালা এবং ডিএওএসকে বিভিন্ন লাইব্রেরিতে রাখি তবে আমি এটি কোনও পাঠ্য-ভিত্তিক প্রোগ্রামে বা উইন্ডো ভিত্তিক ডেস্কটপ সিস্টেমে কিছুই পরিবর্তন না করে ব্যবহার করতে পারি।

পরিষেবাটি কী করতে হবে তা জানে তবে কীভাবে প্রদর্শন করতে হয় তা জানে না। দৃশ্যটি কীভাবে প্রদর্শন করতে হয় তা জানে তবে কী করতে হবে তা জানে না। পরিষেবা / সংগ্রহস্থলগুলির সাথে একই: পরিষেবাটি ডেটা প্রেরণ করে এবং অনুরোধ করে, তবে ডেটা কোথায় এবং কীভাবে তা গ্রহণ করা যায় তা জানে না। সংগ্রহস্থলগুলি "মেক আপ" করে তোলে কাঁচা ডেটা অবজেক্টগুলিকে বিসাইনে করে যাতে পরিষেবাটি কাজ করতে পারে।

কিন্তু সংগ্রহস্থল ডাটাবেস সম্পর্কে কিছুই জানে না। ডেটাবেস ধরণের (মাইএসকিউএল, পোস্টগ্রিসকিউএল, ...) ডিএও-তে উদ্বেগ প্রকাশ করে।

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

এবং আপনি দর্শন, এমনকি প্রযুক্তি (ওয়েব, ডেস্কটপ, পাঠ্য) কিছু পরিবর্তন করতে পারেন তবে এটি নীচের কিছুতে স্পর্শ করে না।

ব্যবসায়িক যুক্তি হ'ল পরিষেবা। তবে কীভাবে এটির সাথে ইন্টারঅ্যাক্ট করবেন তা দেখতে হয়। এখন কি বোতাম দেখাতে হবে? ব্যবহারকারী এই লিঙ্কটি দেখতে পাবে? আপনার সিস্টেমটি কনসোল-ভিত্তিক প্রোগ্রাম বলে মনে করুন: আপনি যদি ভুল ব্যবহারকারী #> myprogram -CourseService -option=getCourse -idCourse=234এই আদেশটি লেখার জন্য কীগুলি টিপতে বা চয়ন করতে চান তবে আপনাকে অস্বীকার করতে হবে ?

ওয়েব-ভিত্তিক সিস্টেমে কথা বলা (স্ট্রুটস + জাভাইই) আমার একটি পৃথক জিইউআই কন্ট্রোলার প্যাকেজ রয়েছে। ক্রিয়াকলাপে আমি লগইন করা ব্যবহারকারীকে দেই এবং ক্লাসটি আমাকে বোতামগুলি দেয় (বা কোনও ইন্টারফেস উপাদান যা আমি চাই) দেয়।

                <div id="userDetailSubBox">
                    <c:forEach var="actionButton" items="${actionButtons}" varStatus="id">
                        ${actionButton.buttonCode}
                    </c:forEach>
                </div>

এবং

private List<ActionButton> actionButtons;

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


1

বেশিরভাগ ক্ষেত্রে "ব্যবহারকারী যদি বিকল্প এক্স নির্বাচন করে থাকে তবে অ্যাপ্লিকেশনটি তাকে y এর জন্য তথ্য সরবরাহ করতে সক্ষম করে, যদি না হয় তবে সে জেড তথ্য সরবরাহ করবে" এর মতো সমস্যা দেখা দিতে পারে

মডেলটির জন্য এটি যুক্তিযুক্ত, ভিউয়ের নয়। এটি একটি "ভিউ-মডেল" হতে পারে, বিশেষত ইউআই সমর্থন করার জন্য তৈরি করা হয়েছিল, তবে এটি এখনও মডেল যুক্তি। নিয়ন্ত্রণ ক্রমটি হ'ল:

  • ইভেন্টগুলি দেখার জন্য নিয়ামক একটি হ্যান্ডলার সংযুক্ত করে
  • মডেল ইভেন্টগুলির জন্য দেখুন কোনও হ্যান্ডলার সংযুক্ত করে
  • ব্যবহারকারী এক্স বিকল্পটি নির্বাচন করে।
  • ভিউ একটি ইভেন্ট "বিকল্প এক্স নির্বাচিত" উত্থাপন করে
  • কন্ট্রোলার ইভেন্টটি গ্রহণ করে এবং মডেলকে কল করে se
  • মডেল একটি ইভেন্ট উত্থাপন করে "মডেল রাষ্ট্র পরিবর্তিত"
  • দর্শনটি মডেল পরিবর্তিত ইভেন্টটি গ্রহণ করে এবং নতুন রাষ্ট্রের সাথে মেলে দেখার জন্য আপডেটটি আপডেট করে: inputY.enable(model.yAllowed()); inputZ.enable(model.zAllowed());

UI View Controller Model |.checkbox X checked.> | | | | | .. X selected ...>| | | | |-----> set X ------->| | | | | | |< .............state changed ............| | | | | | |-------------- Get state --------------->| | | | | | |<----------- new state ------------------| | <-- UI updates ------| এটি ক্লাসিক এমভিসি প্যাটার্ন। মডেল লজিকটি সম্পূর্ণরূপে ইউআই থেকে আলাদা করে পরীক্ষা করা সম্ভব। নিয়ামক এবং দর্শনটি খুব পাতলা এবং পরীক্ষার জন্য সহজ।

=== ডঙ্কের প্রতিক্রিয়া ===

একটি UI 'তে MVC প্যাটার্ন মডেল (সাধারণত) না একটি ব্যবসা অবজেক্ট মডেল। এটি ইউআই রাষ্ট্রের জন্য কেবলমাত্র মডেল। একটি ডেস্কটপ অ্যাপ্লিকেশনটিতে এটি একাধিক ব্যবসায়িক মডেলগুলির রেফারেন্স রাখতে পারে। ওয়েব ২.০ অ্যাপ্লিকেশনটিতে এটি জাভাস্ক্রিপ্ট ক্লাস যা ইউআই রাষ্ট্র ধারণ করে এবং এজেএক্সের মাধ্যমে সার্ভারে যোগাযোগ করে। ইউআই রাষ্ট্রের মডেলটির হ্যান্ডস অফ ইউনিট পরীক্ষাগুলি লিখতে সক্ষম হওয়া খুব গুরুত্বপূর্ণ, কারণ সেখানেই বেশিরভাগ ইউআই বাগগুলি পাওয়া যায়। ভিউ এবং কন্ট্রোলারটি খুব পাতলা সংযোজক হওয়া উচিত।


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

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

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

0

ব্যবসায়ের যুক্তি আরও বেশি পছন্দ করে If X then return InfoType.Y, তারপরে ইউআই ডোমেন দ্বারা প্রত্যাবর্তিত ফলাফলের ভিত্তিতে ক্ষেত্রগুলি প্রদর্শন করবে।

// Controller method pseudocode
option changed routine

    get selected option

    get required info type from domain routine based on selected option

    display fields based on required info type

যদি ইউআইয়ের কোনও ব্যবসায়িক যুক্তি প্রয়োজন, তবে পছন্দটি ডোমেনে অর্পণ করুন। ইউআই কেবল সিদ্ধান্তের ভিত্তিতে কাজ করবে।


0

যদি ব্যবহারকারী এক্স বিকল্পটি নির্বাচন করে থাকে তবে অ্যাপ্লিকেশনটি তাকে y এর জন্য তথ্য সরবরাহ করতে সক্ষম করবে, যদি না হয় তবে তার উচিত তথ্য জেড সরবরাহ করা উচিত "।

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

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

এবং কেবলমাত্র ভাবেন, এই সমস্ত কিছু ঘটতে পারে কারণ নিয়ামক সংরক্ষণের চেষ্টা করেছিলেন এবং ডাটাবেজে প্রয়োজনীয় ক্ষেত্রের জন্য কোনও মূল্য রাখেনি এবং একটি ডাটাবেস ত্রুটির জন্য খাঁটি প্রতিক্রিয়া জানিয়েছিল। যতদূর দেখার বিষয়টি বিবেচ্য তা বিবেচ্য নয়।

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

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