কেন ন্যূনতম ব্যবহারকারীর / হস্তাক্ষর কোড এবং এক্সএএমএল-এ সমস্ত কিছু আছে?


12

আমি মনে করি এমভিভিএম সম্প্রদায় 90 এর দশকে ওও প্রোগ্রামারদের মতো অত্যধিক alousর্ষান্বিত হয়ে উঠেছে - এটি একটি ভুল নাম এমভিভিএম কোনও কোডের সমার্থক নয়। আমার বন্ধ স্ট্যাকওভারফ্লো প্রশ্ন থেকে :

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

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

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

আপডেট: এটি মাইক্রোসফ্টের ধারণাও নয়, এমএসডিএন-এর প্রতিটি উদাহরণ দেখায় যে আপনি উভয় ক্ষেত্রে এটি কীভাবে করতে পারেন।

উত্তর:


9

আমি কখনই কাউকে এক্সএএমএল-তে সমস্ত কিছু রাখার পরামর্শ দেওয়ার কথা শুনিনি।

আসলে, এটি একটি ভয়ানক ধারণা হবে, আইএমও।

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

অতএব, ভিউটি কেবল সর্বোত্তম কাজটি করে যা হ'ল ইউআই handle

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


"কোনও কোড ... কখনও" একটি নিয়ম নয় ... নিয়মগুলি সঠিক পরিস্থিতিতে ভাঙ্গা বোঝাতে বোঝায়
WernerCD

1

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

এটি অত্যাবশ্যক প্রোগ্রামিং এবং ঘোষণামূলক নকশার মধ্যে একটি পরিষ্কার বিচ্ছিন্নতা সরবরাহ করে।

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


1

আমার অভিজ্ঞতা হিসাবে, এটি প্রায়শই XAML ট্রিগারগুলিতে জটিল যুক্তি ব্যবহার করার চেষ্টা করে কোড-পেছনের বাইরে রাখার জন্য আসে, যখন আরও ভাল, সহজ পদ্ধতির মাধ্যমে সেই যুক্তিটিকে কোনওটির মধ্যে রাখা যায় না - এটি দৃষ্টিভঙ্গিতে থাকে -মডেল.


1

এক্সএএমএল-এ আপনি যা কিছু করতে পারেন তার মধ্যে সবচেয়ে বড় সুবিধা হ'ল এটি সমস্ত আচরণকে এক জায়গায় রাখে। প্রতিবার বিকাশকারীকে xaml এবং কোডের মধ্যে ঝাঁপিয়ে পড়তে হবে এটি এটি বোঝা আরও কঠিন হয়ে পড়ে।

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

এটি বলেছিল, আমি বিশ্বাস করি যে আপনি সঠিকভাবে মনে করেন যে কখনও কখনও আপনি নকশার নীতির সাথে আপোস করা ভাল। Xaml এ কিছু জিনিস করা খুব কঠিন are কোড-ব্যাক ব্যবহার করে আমি খুব কম সময়ে করতে পারতাম এমন এক্সএএমএল-তে কাজ করার জন্য এমন আচরণ করার চেষ্টা করার জন্য আমি কয়েক ঘন্টা বা দিন ব্যয় করেছি। আমি কোড-ব্যাকটিকে একটি সর্বশেষ অবলম্বন হিসাবে বিবেচনা করেছি, তবে আমি কখনই কাউকে বলব না যে এগুলি কখনও ব্যবহার করা উচিত নয়। এটি কেবলমাত্র অন্য ট্রেড অফ যা একজন ভাল প্রকৌশলীকে বোঝার দরকার।

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


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

@ স্টিভেন জিউরিস কিছু উপায়ে যা এক্সএএমএল এবং কোডের বিক্ষিপ্ত মিশ্রণের পক্ষে পছন্দনীয়। আমি কোড এবং কাজের ক্ষেত্রে এটি নিখুঁতভাবে দেখেছি।
ড্রয়

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

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

1

এক্সএএমএল সম্পর্কে আমার কাছে কেবলমাত্র অতিপরিচয় জ্ঞান আছে তবে এটি আমাকে অবাক করে দেয় যে সংকলকটি টাইপগুলি সনাক্ত করতে পারে না।

মূল পার্থক্যটি হল, এক্সএএমএল হ'ল ঘোষণামূলক , যখন সি # উদাহরণস্বরূপ।

সহজভাবে করা:

Pane p = new Pane(200, 100);
Button foo = new Button("foo");
Button bar = new Button("bar");
p.addChild(foo);
p.addChild(bar);

বনাম

<Pane width="200" height="100">
    <Button label="foo"/>
    <Button label="bar"/>
<Pane>

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

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

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

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