বিকাশ পদ্ধতির: ব্যবহারকারী ইন্টারফেস ইন বা ডোমেন মডেল আউট?


13

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

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

প্রতিটি উপায়ে আপনাকে আলাদাভাবে চিন্তা করতে বাধ্য করে। স্মার্টটাক পদ্ধতির সাথে আপনার জিওআই বোবা থাকাকালীন আপনার ডোমেনটি স্মার্ট। ডিফল্ট ভিজ্যুয়াল স্টুডিও পদ্ধতির সাথে আপনার জিইউআই স্মার্ট যখন আপনার ডোমেন মডেলটি (এটি উপস্থিত থাকলে) বরং রক্তাল্পতাযুক্ত।

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

সুতরাং, আপনি কোনভাবে আপনার কোড ডিজাইন / বিকাশ করবেন? কেন?

  • জিইউআই প্রথম। ব্যবহারকারীর ইন্টারঅ্যাকশন সর্বজনীন।
  • প্রথমে ডোমেন। আমরা এটির ইউআই রাখার আগে সিস্টেমটি সঠিক কিনা তা নিশ্চিত করা দরকার।

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

এবং একটি অতিরিক্ত বোনাসের জন্য: আপনি কীভাবে কোডটি বজায় রাখতে সক্ষম তা নিশ্চিত করবেন?


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

জাভা সহ, জেগুডিজ নামে একটি লাইব্রেরি রয়েছে যা জাভাবিন্সের জন্য সত্যিই দুর্দান্ত বাঁধার বৈশিষ্ট্যযুক্ত। এটি জাভাবিয়ানের সাথে আমি কখনই কোনও মান দেখেছি এটিই একমাত্র কারণ এবং সম্ভবত আপনাকে জিইউআই তৈরির স্মার্টটালকের সবচেয়ে নিকটে পৌঁছে দেয়। jgoodies.com
বারিন লরিটশ 12'11

উত্তর:


5

তন্ন তন্ন

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

এই ধারণাটি স্ফটিক পরিষ্কার করার জন্য আমাকে একটি চিত্র তৈরি করুন:

  +------+
  |  UI  | <- Think about how to make an effective user interface
  +------+
      |
      |
 +----------+
 | Contract | <--- This part over here is really REALLY important, man!
 +----------+
      |
      |
+--------------+
| Domain model | <- Think about what the user needs
+--------------+ 

আপনি যদি ইউআই এবং ডোমেন মডেলটি আলাদাভাবে আলাদাভাবে কাজ করতে পারেন তবে মাঝের গ্রাউন্ডটি ইউআই কোন ডেটা পেতে পারে তা স্ফটিক স্পষ্ট করে তোলে।

কিছু প্রকল্প কেন অনিবার্য হয়ে উঠছে তা আমি দেখার কারণ হ'ল তথ্য এবং উপস্থাপনার মধ্যে ইন্টারফেসটি তাড়াতাড়ি করা হয়েছে বা অস্তিত্বহীন (সরাসরি ডেটা হ্যান্ডলিং কোডটি ইউআইতে রয়েছে )। আমি এমন অনেকগুলি প্রকল্প দেখেছি যেখানে ফর্ম কোডের ভিতরে ডাটাবেস কোড থাকে যা আমি মানবতার প্রতি বিশ্বাস হারিয়ে ফেলেছি। কেবলমাত্র কয়েকটি প্রকল্পের মধ্যে আমি দেখেছি যে এই অনমনীয় মাঝের জমিটি সেই হারানো বিশ্বাসকে পুনরুদ্ধার করে।

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


সূক্ষ্ম বাগগুলি এমন কোনও কোডে প্রবেশ করেছে যা আমি বজায় রাখতে সহায়তা করছি reason
বেরিন লরিটস

3

প্রথমে ডোমেন। আমরা এটির ইউআই রাখার আগে সিস্টেমটি সঠিক কিনা তা নিশ্চিত করা দরকার।

কাজ করার জন্য আর কিছুই করা যায় না - সাধারণ ক্ষেত্রে ব্যতীত।

ইউআই থেকে শুরু করা প্রায়শই ভঙ্গুর, বগি সফ্টওয়্যার নিয়ে যায় যা মজাদার মতো দেখা যায়, তবে প্রায়শই মডেলটিতে গুরুতর সমস্যা থাকে।

এটি প্রদত্ত নয় যে ইউআই প্রথমে ব্যর্থতার জন্য বিনষ্ট হয় - যদি মডেলটি যথেষ্ট সহজ হয় তবে ইউআই প্রথমে আত্মবিশ্বাসের সাথে তৈরি করা যেতে পারে যে শেষ পর্যন্ত মডেলটি সূক্ষ্মভাবে কাজ করবে।

যে কোনও ক্ষেত্রে যেখানে মডেলটি সহজেই কল্পনা করা যায় না, এটি প্রথমে তৈরি করতে হবে।

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


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

@ অ্যারন: আপনি উজ্জ্বল গত ৩০ বছরে আমি উজ্জ্বল কারও সাথে কাজ করার সৌভাগ্য পাইনি। আমি ছটফট করা হচ্ছে না। এটি কেবল আমার অভিজ্ঞতা যে জিইউআই প্রথম করা হয়েছিল তখন অ্যাপ্লিকেশনটি কাজ করার জন্য, রক্ষণাবেক্ষণ করতে বা অভিযোজিত হতে পারে না। আমাকে একাধিক "প্রযুক্তিগত পর্যালোচনা" এ থাকতে হয়েছিল যেখানে কাজটি কে বের করা হবে তা নির্ধারণ করা ছিল কারণ জিইউআই কাজ করতে পারে না। আপনার অভিজ্ঞতা একবচন।
এস .লট

2

এটি সত্যিই হাতের আবেদনের উপর নির্ভর করে।

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

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

প্রায়শই দেরী হিসাবে বিকাশের ক্ষুদ্র পুনরাবৃত্ত চক্রগুলির একটি ধাক্কা সম্পর্কিত (স্ক্রাম, কানবান, ইত্যাদি ...) সামনের দিকে এবং পিছনের প্রান্তটি সমান্তরালভাবে করা হয়। এটি প্রদত্ত পুনরাবৃত্তির জন্য আপনার যা প্রয়োজন তা সরবরাহ করার বিষয়ে; আমাদের কাছে এটির প্রয়োজন হলে বিল্ডটিকে উপেক্ষা করা । একটি সমান্তরাল পদ্ধতির উভয় প্রান্তটি বিকাশের সর্বত্র খুব কাছাকাছি থাকে যা সামনের প্রান্ত এবং পিছনের প্রান্তটি একত্রিত হয়ে গেলে ক্রমাগত পরিবর্তনের প্রয়োজনীয়তা হ্রাস করতে পারে। এটি সম্ভব হলে আমার পছন্দসই পদ্ধতি।

আপনি উল্লেখ...

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

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

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

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


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

2

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


1

আমরা আমাদের সফ্টওয়্যারটি স্বয়ংক্রিয় পরীক্ষা দিয়ে চালানোর চেষ্টা করি। অটোমেটেড ইউআই টেস্টিং বেশ সুন্দর সময় সাপেক্ষ। কনসোলে কিছু মান পরীক্ষা করার জন্য স্ক্রিপ্টগুলি সহজ।

এই বিষয়টি মাথায় রেখে, আমরা ব্যবসায়ের যুক্তিটিকে ইউআই থেকে আলাদা রাখতে বেশ যত্নশীল।

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

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


0

একজন সি # বিকাশকারী হিসাবে, আমি অবশ্যই মনে করি না যে আপনি বাইরে কাজ করার জন্য কবুতর হয়ে আছেন। আমি প্রথমে ডোমেইন-মডেলটি করতে পছন্দ করি।

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


0

অবশ্যই, প্রথম ডোমেন!

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

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

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