কেন। নেট ওয়ার্ল্ড স্ট্যাটিকভাবে টাইপ করা বিকল্পগুলির পরিবর্তে যাদু স্ট্রিংগুলিকে আলিঙ্গন করে বলে মনে হচ্ছে?


47

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

এএসপি.নেট এমভিসি:

হ্যালো ওয়ার্ল্ড রুট:

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

এর অর্থ হ'ল এএসপি. নেট এমভিসি কোনওভাবে HomeControllerআপনার কোডটিতে সন্ধান করবে । কোনওভাবে এটির একটি নতুন উদাহরণ তৈরি করুন এবং তারপরে কোনও ধরণের প্যারামিটার Index দিয়ে দৃশ্যত ফাংশনটি কল করুন id। এবং তারপরেও অন্যান্য জিনিস রয়েছে:

RenderView("Categories", categories);
...or..
ViewData["Foobar"]="meh";

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

  MyData myDataObject = new MyData(DateTime.Now);      
  Binding myBinding = new Binding("MyDataProperty");
  myBinding.Source = myDataObject;

যদিও এটি ingালাই এবং বিভিন্ন জাদুকরী রানটাইম সমর্থনগুলিতে আরও নির্ভর করে।

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

এএসপি.নেটের রাউটিং সিনট্যাক্সটি কোনও রুটটি কীভাবে পরিচালনা করতে হবে তা সমাধান করার জন্য প্রতিচ্ছবিটির উপর প্রায় একচেটি নির্ভর করে কেন এর কারণগুলি পেয়েছি? আমি ঘৃণা করি যখন আমি কোনও পদ্ধতি বা সম্পত্তির নাম পরিবর্তন করি এবং হঠাৎ জিনিসগুলি ভেঙে যায় তবে সেই পদ্ধতি বা সম্পত্তির কোনও উল্লেখ পাওয়া যায় না এবং অবশ্যই কোনও সংকলক ত্রুটি নেই। যাদু স্ট্রিংগুলির আপাত সুবিধাকে কেন "মূল্যবান" মনে করা হয়েছিল?

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


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

7
তা কেমন করে? আমি লিনকিউ এর সাথে এরকম কোনও উদাহরণ দেখিনি।
ডেডএমজি

6
আমার নম্র অনুমান যে সঠিকভাবে স্ট্যাটিক্যালি টাইপ করা বিকল্পটি খুব অসুবিধাগ্রস্থ। এটি এমন একটি থিম যা বেশিরভাগ ধরণের সিস্টেমে সত্যিই অনেক কিছু সরিয়ে দেয়: "আমরা টাইপ সিস্টেমে এটি করতে চাই, তবে এটি যথেষ্ট ভাবপূর্ণ নয়" " (বা বিপরীত: "আমরা টাইপ সিস্টেমে সাফল্যের সাথে এটি প্রকাশ করেছি, তবে এটি তিন গুণ জটিল হিসাবে জটিল করে তুলেছে।") @ গ্লেনএইচ 7 আমি লিনকিউ-র সমস্তগুলির সাথে ভয়াবহভাবে পরিচিত নই, তবে আমি যে বিটগুলি ব্যবহার করেছি তা প্রদর্শন করে না এমনকি এই পোস্টটি যা বর্ণনা করে তার কাছাকাছি কিছু। একটি উদাহরণ দিতে যত্ন?

2
@ এয়ারলজ আরও গুরুত্বপূর্ণ, বেনামে অবজেক্টগুলি স্ট্যাটিকালি টাইপ করা হয়। কোনও ম্যাজিক স্ট্রিং নেই, সংকলক জড়িত সমস্ত কিছুর নাম এবং ধরণ জানে। প্রতিটি অন্যান্য ব্যবহারের জন্য সংরক্ষণ করুন var

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

উত্তর:


31

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

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

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

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

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


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

2
জেনেরিক্স ২.০ এ পৌঁছেছে, তবে আমরা 3.5 (লিনকু সহ) অবধি এক্সপ্রেশন পাইনি। এক্সপ্রেশনগুলি হ'ল লিনকিউ এবং সম্প্রদায়টি সেই শক্তিটি নিয়েছে এবং এটির সাথে চলে। কৌশলটি স্থির প্রতিবিম্ব
মাইকেল ব্রাউন

1
স্থির প্রতিবিম্ব সম্পর্কে ভাল পয়েন্ট। আমি 3.5 এ প্রবর্তিত হওয়া সম্পর্কে ভুলে গিয়েছিলাম
আর্লজ

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

2
পুশব্যাকের সাথে সম্মত হন। টি 4 এমভিসি একটি প্রকল্প যা মনে মনে ঝাঁপিয়ে পড়ে যে প্রচুর স্ট্রিংগুলি সরিয়ে এবং দৃ strongly়ভাবে টাইপ করা কোডের সাথে তাদের প্রতিস্থাপন করতে আগ্রহী।
কারসন 63000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.