পদ্ধতিটি অচল করা যায়, তবে তা কি করা উচিত?


366

রিশার্পার স্থির করে দেওয়া যায় এমন এসপিএন পৃষ্ঠায় একাধিক ফাংশন চিহ্নিত করতে পছন্দ করে। আমি যদি তাদেরকে স্থিতিশীল করি তবে এটি কি আমাকে সহায়তা করে? আমি কি তাদের স্থির করে একটি ইউটিলিটি ক্লাসে স্থানান্তরিত করব?


20
রিশার্পার আসলে "কম সংহতি, নিম্ন সংহতি" বলে চিৎকার করছেন না? পদ্ধতিটি আসলে সেই শ্রেণীর অন্তর্গত কিনা তা দেখার সময় এসেছে।
পিকে

উত্তর:


245

স্ট্যাটিক পদ্ধতি বনাম ইনস্ট্যান্স পদ্ধতিগুলি
10.2.5 স্ট্যাটিক এবং সি # ল্যাঙ্গুয়েজ স্পেসিফিকেশনের উদাহরণ সদস্যগণ পার্থক্যটি ব্যাখ্যা করে। সাধারণত, স্থির পদ্ধতিগুলি উদাহরণের পদ্ধতিগুলির তুলনায় খুব সামান্য কর্মক্ষমতা বর্ধন করতে পারে তবে কেবল কিছুটা চরম পরিস্থিতিতে ( এই বিষয়ে আরও কিছু তথ্যের জন্য এই উত্তরটি দেখুন)।

FxCop বা কোড বিশ্লেষণে CA1822 বিধি বলছে:

"[সদস্যদের স্থিতিশীল হিসাবে চিহ্নিত করার] পরে, সংকলক এই সদস্যদের কাছে নন-ভার্চুয়াল কল সাইটগুলি প্রেরণ করবে যা প্রতিটি কলের রানটাইমের সময় একটি চেক প্রতিরোধ করবে যা বর্তমান অবজেক্ট পয়েন্টারটি শূন্য করে না তা নিশ্চিত করে This এটি পরিমাপযোগ্য পারফরম্যান্স লাভের ফলে তৈরি হতে পারে পারফরম্যান্স-সংবেদনশীল কোডের জন্য some

ইউটিলিটি ক্লাস
আপনার নকশায় এটির অর্থ না হলে আপনার এগুলি কোনও ইউটিলিটি ক্লাসে স্থানান্তর করা উচিত নয়। স্থিতিশীল পদ্ধতি যদি কোনও নির্দিষ্ট ধরণের সাথে সম্পর্কিত হয়, যেমন একটি ToRadians(double degrees)পদ্ধতি যেমন একটি শ্রেণীর প্রতিনিধিত্ব করে এমন একটি শ্রেণীর সাথে সম্পর্কিত, তবে সেই পদ্ধতির সেই ধরণের স্থির সদস্য হিসাবে উপস্থিত থাকা বোধগম্য হয় (দ্রষ্টব্য, বিক্ষোভের উদ্দেশ্যে এটি একটি বিভক্ত উদাহরণ)।


2
> সংকলক এই সদস্যদের জন্য অ-ভার্চুয়াল কল সাইটগুলি প্রেরণ করবে আসলে এটি "সংকলকটি নির্গত হতে পারে ..."। আমি মনে করি কিছু সম্ভাব্য বাগের চারপাশে কাজ করার জন্য কল পরিবর্তে কলভার্ট ব্যবহার করে সি # সংকলক সম্পর্কে কিছু।
জোনাথন অ্যালেন

24
আমি এটিকে সরাসরি FxCop 1.36 থেকে কেটে পেস্ট করেছি। যদি FxCop ভুল হয় তবে যথেষ্ট ন্যায্য।
জেফ ইয়েটস

5
@ ম্যাক্সিম নিশ্চিত নই যে আমি "বুলশিট" বিবৃতিটির প্রশংসা করি; অপরিচিত কাছাকাছি পৌঁছানোর সুন্দর অভদ্র উপায়। তবে অন্তর্নিহিত পয়েন্টটি বৈধ; আমি জিনিসগুলি কিছুটা আপডেট করেছি (এটি 9 বছর আগে ছিল, সুতরাং আমি আমার আসল দাবির ভিত্তিটি মনে করি না)।
জেফ ইয়েটস

10
@ ম্যাক্সিম আপনার পয়েন্ট অবৈধ। আমি আপনাকে আশ্বস্ত করি যে আমার 9 বছর আগে ভাল রেটিং ছিল না। আমি এমন মন্তব্যগুলির প্রশংসা করি যা ভুলগুলি নির্দেশ করে (বা এগুলি সংশোধন করে এমনগুলি সম্পাদন করে) তবে অভদ্র হয়ে উঠবেন না বা অন্যের উপর অযৌক্তিক প্রত্যাশা রাখবেন না। কিছুকে "বুলশিট" বলবেন না; এটি সৎকর্মের ভুল বা অজ্ঞতার চেয়ে সততার চেয়ে প্রতারণার অভিপ্রায়কে বোঝায়। ইহা নিষ্ঠুর. আমি এখানে সাহায্য করার জন্য আমার সময় স্বেচ্ছাসেবক এবং এটি অসম্মানজনক আচরণ করা হয় যখন এটা সত্যিই অর্থহীন বোধ। কী কারণে ক্ষুব্ধ হবেন তা আমাকে বলবেন না - এটি আমার পছন্দ, আপনার নয়। কীভাবে শ্রদ্ধা এবং নিষ্ঠার সাথে আপনার বক্তব্য তৈরি করবেন তা শিখুন। ধন্যবাদ.
জেফ ইয়েটস

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

259

পারফরম্যান্স, নেমস্পেস দূষণ ইত্যাদি সমস্ত আমার দৃষ্টিতে গৌণ। নিজেকে জিজ্ঞাসা করুন যুক্তিযুক্ত কি। পদ্ধতিটি কি কোনও ধরণের উদাহরণে যৌক্তিকভাবে পরিচালিত হয়, বা এটি নিজেই টাইপের সাথে সম্পর্কিত? যদি এটি পরে থাকে তবে এটিকে একটি স্ট্যাটিক পদ্ধতি করুন। এটি কেবল কোনও ইউটিলিটি শ্রেণিতে স্থানান্তর করুন যদি এটি এমন কোনও ধরণের সম্পর্কিত যা আপনার নিয়ন্ত্রণে নেই।

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


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

2
"কখনও কখনও এমন পদ্ধতি রয়েছে যা যৌক্তিকভাবে কোনও ঘটনাকে কার্যকর করে তবে উদাহরণের কোনও রাজ্য এখনও ব্যবহার করে না instance উদাহরণস্বরূপ" এই উদাহরণটিতে "আপনার" উদাহরণস্বরূপ "আপনার ব্যবহার আমি উপভোগ করেছি।
পলবাইন্ডার

56

staticক্লাসের মধ্যে একটি পদ্ধতি চিহ্নিত করার ফলে এটি স্পষ্ট করে তোলে যে এটি কোনও উদাহরণ সদস্যদের ব্যবহার করে না, যা কোডের মাধ্যমে স্কিমিংয়ের সময় জানতে সহায়ক হতে পারে।

আপনার প্রয়োজনে এটিকে অন্য শ্রেণিতে স্থানান্তর করতে হবে না যতক্ষণ না এটি বোঝানো হয় অন্য শ্রেণীর দ্বারা ভাগ করা যা ঠিক যেমন নিবিড়ভাবে সম্পর্কিত, ধারণা-ভিত্তিক।


22

আমি নিশ্চিত যে এটি আপনার ক্ষেত্রে ঘটছে না, তবে একটি "দুর্গন্ধ" আমি কিছু কোডে দেখেছি যা প্রচুর স্থির পদ্ধতিতে ব্যবহার করা হয়েছিল maintaining

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

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

শুধু নিশ্চিত হয়ে নিন যে আপনি এগুলি সঠিক জায়গায় রেখে দিচ্ছেন। স্থিতিশীল পদ্ধতিগুলি কি অন্য বস্তুর অভ্যন্তরীণ অবস্থাকে হস্তক্ষেপে চালিত করে? তাদের আচরণটি পরিবর্তে classes শ্রেণীর একটির অন্তর্ভুক্ত করা যায় কি? আপনি যদি উদ্বেগগুলি যথাযথভাবে আলাদা না করে থাকেন তবে পরে আপনার মাথাব্যথার কারণ হতে পারে।


4
আপনার সমস্যা স্থির ক্ষেত্র / বৈশিষ্ট্যগুলির সাথে সম্পর্কিত, স্থির পদ্ধতি নয়।
আসাদ সাইদুদ্দিন

10

এটি আকর্ষণীয় পড়া:

http://thecuttingledge.com/?p=57

রিশার্পার আসলে আপনাকে আপনার পদ্ধতিটি স্থির করার পরামর্শ দিচ্ছে না। আপনার নিজের জিজ্ঞাসা করা উচিত কেন সেই পদ্ধতিটি সেই শ্রেণিতে কেন এটির বিপরীতে, বলুন, যে ক্লাসগুলির মধ্যে তার স্বাক্ষর প্রদর্শিত হচ্ছে তার মধ্যে একটি ...

কিন্তু এখানে কি resharper documentaion বলেছেন তা হল: http://confluence.jetbrains.net/display/ReSharper/Member+can+be+made+static


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

9

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


6

প্রদত্ত দৃশ্যে আপনার সর্বাধিক পাঠযোগ্য এবং স্বজ্ঞাত হওয়া উচিত।

পারফরম্যান্স আর্গুমেন্ট সবচেয়ে চরম পরিস্থিতি ব্যতীত ভাল নয় কারণ একমাত্র যা ঘটছে তা হ'ল thisউদাহরণস্বরূপ পদ্ধতিগুলির জন্য একটি অতিরিক্ত পরামিতি ( ) স্ট্যাকের উপরে চাপ দিচ্ছে।


6

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

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


5

রিশার্পার যুক্তি পরীক্ষা করে না। এটি কেবল পদ্ধতিটি উদাহরণ সদস্যদের ব্যবহার করে কিনা তা পরীক্ষা করে cks যদি পদ্ধতিটি ব্যক্তিগত হয় এবং কেবলমাত্র (কেবলমাত্র একটি) উদাহরণ পদ্ধতিগুলি দ্বারা ডাকা হয় তবে এটি একটি উদাহরণ পদ্ধতিতে এটি একটি চিহ্ন।


3

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


3

কোনও পদ্ধতি স্থির করার অর্থ আপনি প্রথম শ্রেণীর কোনও উদাহরণ তৈরি না করেই ক্লাসের বাইরে থেকে পদ্ধতিটি কল করতে পারেন। তৃতীয় পক্ষের বিক্রেতার জিনিস বা অ্যাড-অনগুলির সাথে কাজ করার সময় এটি সহায়ক। কল্পনা করুন যদি কন.আরাইটলাইন () কল করার আগে আপনাকে প্রথমে কোনও কনসোল অবজেক্ট "কন" তৈরি করতে হয়েছিল;


জাভা আপনার কনফার্ট রাইটলাইন () কল করার আগে কনসোল অবজেক্ট তৈরি করার জন্য একটি কারখানা উদাহরণ তৈরি করবে।
স্কটমিচাউড 19

2

এটি নেমস্পেস দূষণ নিয়ন্ত্রণে সহায়তা করে।


8
কীভাবে কোনও পদ্ধতি স্থির করে নেমস্পেস দূষণ এড়াতে সহায়তা করে?
লকস্টক

1
স্ট্যাটিক পদ্ধতির সাথে ক্লাসে পদ্ধতিগুলিকে গোষ্ঠীভুক্ত করে অভিজ্ঞতা থেকে, আপনি অন্যান্য গ্রন্থাগার বা অন্তর্নির্মিত ফাংশনগুলির সাথে দ্বন্দ্বপূর্ণ হতে পারে এমন আলগা ফাংশনগুলির সমস্ত "গ্র্যাব ব্যাগ" উপস্থাপনের অভিজ্ঞতা এড়িয়ে যাচ্ছেন। স্থিতিশীল পদ্ধতি সহ, তারা কার্যকরভাবে শ্রেণীর নাম অনুসারে নাম স্পেস করা হয়, প্রাক্তন। Class.a_core_function( .. )বনামa_core_function( .. )
lintuxvi

0

কেবল আমার টিপ্পেন্স: একটি ইউটিলিটি ক্লাসে ভাগ করা স্ট্যাটিক সমস্ত পদ্ধতি যুক্ত করা আপনাকে যুক্ত করতে দেয়

using static className; 

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

এটি ভাল অনুশীলন কিনা তা আমার কোনও ধারণা নেই। আমার কাছে সি # 4/5 এবং রিফ্যাক্টরের কাছে এতটা লিগ্যাসি কোড শিখার জন্য আমি অনেক কিছুই পেয়েছি যা আমি কেবল রোজলিন টিপস আমাকে গাইড করতে দেওয়ার চেষ্টা করছি।

জোয়ি


0

আমি আশা করি, আপনি ইতিমধ্যে স্থির এবং উদাহরণ পদ্ধতির মধ্যে পার্থক্য বুঝতে পেরেছেন। এছাড়াও, একটি দীর্ঘ উত্তর এবং একটি সংক্ষিপ্ত উত্তর থাকতে পারে। দীর্ঘ উত্তর ইতিমধ্যে অন্যদের দ্বারা সরবরাহ করা হয়েছে।

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

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

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