নতুন System.Tuple বর্গ খারাপ নকশা ব্যবহার করছেন?


19

আমি সিস্টেমের ধারণাটি পছন্দ করি.এতে সম্পূর্ণরূপে এটি কোনও নতুন ক্লাস ইনস্ট্যান্ট না করেই আমাকে একক ফাংশনে কল করতে একাধিক পরামিতি ফিরে আসতে দেয়, তবে এটি মাইক্রোসফ্ট প্যাটার্নস এবং প্র্যাকটিসস, সলিড নীতিমালা ইত্যাদির মতো কোনও ভাল প্রোগ্রামিং অনুশীলনকে অস্বীকার করে does

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


+1: দুর্দান্ত প্রশ্ন। এছাড়াও - আমি আশ্চর্য হয়েছি যে এন্ডার্স হেজলসবার্গ এ সম্পর্কে ওজন করেছেন কিনা।
জিম জি।

উত্তর:


11

ব্যবহার সহ সমস্যাটি Tupleহ'ল জেনেরিক ধরণের পরামিতি অর্থ প্রকাশ করে না।

পঠনযোগ্যতার জন্য আপনি কাস্টম ক্লাস বা নামী সদস্যদের সাথে একটি বেনামে টাইপ ব্যবহার বিবেচনা করতে পারেন।


এক্সএমএল প্যারামিটারের বর্ণনা সম্পর্কে কী? দেখতে সর্বাধিক সুস্পষ্ট জায়গা নয়, তবে কিছুই না থেকে ভাল।
জন বুব্রিস্কি

@ স্কিপিফায়ার - আপনার অর্থ কী? সমস্ত পেতে প্রকার T1, T2ইত্যাদি আপনাকে বলতে না তারা মানে।
ওডে

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

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

1
@ ওজেড এছাড়াও, প্যারামিটার বা রিটার্ন মানটি বোঝাতে না পারে তবে পদ্ধতিটির নামটি পারে। ধরা যাক আপনার কাছে এমন একটি পদ্ধতি রয়েছে যা GetTopTwoPercentages()এটি রিটার্ন দেয় Tuple<decimal, decimal>। এটি যথেষ্ট পরিষ্কার হতে পারে।
জন বুবরিস্কি

8

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

এটি পরিষ্কার:

Tuple<Float, Float> getPolarCoords();

এটি বিভ্রান্তিমূলক (কারণ কেউ কার্টেসিয়ান স্থানাঙ্ক হিসাবে ধরে নিবে):

Tuple<Float, Float> getCoords();

এবং এটি অর্থহীন অর্থ:

Tuple<Float, Float> getTuple();

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

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