উইনআরটি কি কেবলমাত্র সীমানায় ব্যবহার করা যেতে পারে?


15

মাইক্রোসফ্ট (প্রধানত, হার্ব সটার ) উইনআরটি অ্যাপ্লিকেশনের সীমানায় রাখতে এবং অ্যাপ্লিকেশনটির মূলটি স্ট্যান্ডার্ড আইএসও সি ++ এ লিখিত রাখতে সি ++ / সিএক্সের সাহায্যে উইনআরটি ব্যবহার করার পরামর্শ দেয়।

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

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


এমভিভিএম এর মতো কিছু, যেখানে মডেলটি স্ট্যান্ডার্ড সি ++, ভি এবং ভিএম উইনআরটি ইন্টারপ অবজেক্ট?
সর্বোচ্চ

5
"তবে প্রতিটি ভিএম কার্যকরভাবে আমার মানক মডেলগুলির চারপাশে মোড়কে পরিণত হয়।" - যে কোনও দৃশ্যে মডেলগুলির জন্য এটি বেশ সাধারণ।
ম্যাটডি ডেভী

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

1
@ গ্লেনএইচ 7 সম্ভবত আপনার অ্যাপ্লিকেশন কোডটিকে প্ল্যাটফর্মগুলি জুড়ে সঙ্গতিপূর্ণ রাখার একমাত্র উপায় হ'ল আপনার নিজের প্ল্যাটফর্মের বিমূর্ত স্তরটি লিখুন, তবে সেই স্তরগুলি শেষ হয়ে যাবে যা আমি প্রথমে এড়াতে চাইছিলাম। এটি কেবল বিষয়টিকে বিচ্ছিন্ন করার জন্য একটি স্তর বিমূর্ততা নিয়ে সমস্যাটি ঘুরিয়ে নিচ্ছে। সম্ভবত সহায়তা করে তবে শেষ পর্যন্ত আপনি এখনও কাজটি করছেন।
ব্রেট কুহন্স

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

উত্তর:


8

আইএমএইচও (পুরানো প্রোগ্রামার; মাইক্রোসফ্টে কাজ করুন তবে এটি একটি ব্যক্তিগত মতামত): আমি এই প্রশ্নের উত্তর দেওয়ার আগে আপনাকে এই অন্যান্য প্রশ্নের উত্তর দিতে হবে:

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

ওওহ, আপনি যদি অন্য কোথাও চলেছেন (ভিএমএস শিলা!), তবে মানকগুলি ভিত্তি করে তোলে।

মার্কেটপ্লেসে তিনটি বৃহত্তম পোর্টেবল, ট্যাবলেট-জাতীয় প্ল্যাটফর্মগুলি সাধারণ প্রোগ্রামিং কাজের জন্য আলাদা আলাদা ভাষা ব্যবহার করে, কোডটি সরিয়ে নেওয়া কোনও মূল্যবান বিকল্প নাও হতে পারে Give


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

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

0

আপনাকে সি ++ / সিএক্স ব্যবহার করতে হবে না, পরিবর্তে আপনি ডাব্লুআরএল ( উইন্ডোজ রানটাইম লাইব্রেরি ) ব্যবহার করতে পারেন যা পুরানো এটিএল টেম্পলেটগুলির মতো, সি ++ / সিএক্স 'প্রেজেন্ট' সি ++ নয়। এটি উইনআরটি অবজেক্টগুলি গ্রাস করার জন্য এমএস থেকে "নিম্ন স্তরের" পদ্ধতির এবং গ্র্যান্ডাডের মতো লেখার জন্য সম্পূর্ণ স্ট্যান্ডার্ড সি ++!

এটি সি ++ / সিএক্স এর মতো "সুন্দর" নাও হতে পারে তবে এটি মতামতের বিষয় - আমার ব্যক্তিগত মতামতটি হ'ল সি ++ / সিএক্স একটি বর্ধিত সি ++ এর তৃতীয় প্রচেষ্টা এবং এটি একটি তৃতীয় ব্যর্থতা। এটি উপেক্ষা করুন এবং আশা করুন যে এটি অন্যান্য 2 অবতারের মতোই চলে।

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