স্ট্রিংইটিলস.এমপিটিওয়াই সুপারিশ করা হয়?


91

আপনি কি StringUtils.EMPTYপরিবর্তে ব্যবহার করবেন ""?

আমি হয় একটি রিটার্ন মান হিসাবে বা আপনি যদি একটি স্ট্রিং ভেরিয়েবলের মান সেট করে। আমার তুলনা করার অর্থ নেই, কারণ আমরা সেখানে ব্যবহার করিStringUtils.isEmpty()

উত্তর:


111

অবশ্যই না. আপনি কি সত্যিই "" যথেষ্ট পরিস্কার না বলে মনে করেন?

ধ্রুবকগুলির কাছে মূলত 3 টি ব্যবহারের মামলা রয়েছে:

  1. একটি মানের অর্থ নথির (ধ্রুবক নাম + জাভাদোক সহ)
  2. একটি সাধারণ মূল্যে ক্লায়েন্টকে সিঙ্ক্রোনাইজ করুন।
  3. কিছু প্রাথমিক খরচ এড়াতে একটি বিশেষ মানকে একটি শর্টকাট সরবরাহ করুন

এখানে কেউ আবেদন করে না।


33
আমি এখনও একটির জন্য একটি ছোট এবং বিরল ব্যবহারের কেসটি দেখতে পাচ্ছি StringUtils.EMPTY। এটি স্পষ্ট করে দেয় যে খালি স্ট্রিংয়ের ব্যবহার উদ্দেশ্যপ্রণোদিত, এবং কোনও ধরণের আলস্য নয় ("ওহ, এটির একটি স্ট্রিং দরকার, আসুন পাস করুন """)। যদি এই কোডের টুকরোটি কেউ হিট করে তবে সে পরিবর্তনগুলি করার আগে দুবার ভাবেন। এছাড়াও, যদি StringUtils.EMPTYআপনার নিজস্ব ভেরিয়েবল হিসাবে সংজ্ঞায়িত করা হয়, যেমন MyClass.EMPTY, "শূন্যতার প্রতিনিধিত্ব" পরিবর্তন করে কোডের একটি লাইন পরিবর্তন করা প্রয়োজন। আপনি উদাহরণস্বরূপ, "<empty>"খালি স্ট্রিংয়ের পরিবর্তে এটিকে পরিবর্তন করতে পারেন ""। তবে, আমি মনে করি এটি কিছুটা দূরে চলেছে।
টিমমোস

4
পরিশেষে আমার নিজের প্রতিটা সময় চিন্তা করার পরিবর্তে উদ্যোগী ব্যক্তিদের কাছে ফরোয়ার্ড করার কিছু বুদ্ধিমান যুক্তি রয়েছে। ধন্যবাদ
অ্যালেক্স

4
EMPTY এর অর্থের অভাব কীভাবে হয়? EMPTY আপনার তালিকায় 1 এবং 2 উভয়কেই সন্তুষ্ট করে। অভিজ্ঞ বিকাশকারীরা জুনিয়র বিকাশকারীদের "" ব্যবহার করার মতো সাধারণ কিছুতে গোলমাল করার সম্ভাবনাটিকে তীব্রভাবে কম মূল্যায়ন করছেন।
অ্যান্ড্রু টি ফিনেল

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

6
ভোটগুলি নিচে নামিয়েছে কারণ, না, আমি আসলে "" যথেষ্ট পরিষ্কার বলে মনে করি না :( এটি ফাঁকা? এটি খালি? আমার ফন্টের আকার ছোট হওয়ায় সেখানে কোনও জায়গা আমি দেখতে পাচ্ছি না? এটি কি উদ্দেশ্য ছিল? খালি থাকবেন? কোনও অদ্ভুত "অদৃশ্য" অক্ষর রয়েছে?
ড্যান রেসন

60

আমি StringUtils.EMPTYআক্ষরিক আড়াল করার জন্য এবং এটি return StringUtils.EMPTYসম্পূর্ণরূপে প্রত্যাশিত প্রকাশ করার জন্য এবং একটি খালি স্ট্রিং ফিরে আসার জন্য ব্যবহার করি , ""এমন অনুমানের দিকে নিয়ে ""যেতে পারে যা সহজেই অন্য কোনও কিছুতে পরিবর্তিত হতে পারে এবং এটি সম্ভবত একটি ভুল ছিল। আমি মনে করি এটি EMPTYআরও প্রকাশিত।


37
অন্যদের মত যারা এই পরামর্শ দিয়েছেন: আপনি কি 0 এর জন্য জিরো এবং 1 এর জন্য ওয়ান ব্যবহার করেন?
জন স্কিটি

9
আমি পূর্ণসংখ্যার আক্ষরিক ব্যবহারের সাথে বিশেষ 'খালি' কেসের তুলনা করব না।
ক্রিস্টোফার ক্লেওস

16
আমি এর চেয়ে StringUtils.EMPTY কম অভিব্যক্তি খুঁজে পাই ""
বেকার

4
@ জোনস্কিট আপনার প্রতি অনেক শ্রদ্ধা জানায়। আমি মনে করি আপনি এখানে ভুল আছেন। আপনি এবং আমি কখনই এর মুখোমুখি হতে পারি না, এমন ক্ষেত্রে একটি লিখিত আছে যা আক্ষরিক ব্যবহার না করার জন্য তৈরি করা হবে কারণ এটি কোনও বিকাশকারী মিসড করে কিনা কোনও সিনট্যাক্স পরীক্ষা "" সরবরাহ করে না। এবং হ্যাঁ, আমি জুনিয়র বিকাশকারীদের "" এর মতো সাধারণ জিনিসগুলিতে গণ্ডগোল দেখেছি। "" ব্যতীত অন্য কিছু বোঝার জন্য আমি কখনই EMPTY পরিবর্তন করার ধারণাটি কিনছি না। আমি কেবল EMPTY এর ধারণাটি পছন্দ করি যে সংকলকটি এর অর্থ বুঝতে সক্ষম for
অ্যান্ড্রু টি ফিনেল

@ অ্যান্ড্রুটিফিনেল: "ভুল" একটি অদ্ভুত শব্দ যা অবশ্যই অবশ্যই সাবজেক্টিভ হতে হবে। না, আমি প্রত্যাশা করি না যে EMPTY কখনও অর্থ পরিবর্তন করে, তবে আমি - বাচারের মতো - ""ব্যবহারের চেয়ে বেশি ভাববাদী বলে মনে করি StringUtils.EMPTYএবং আপনি যা বলেছিলেন তাতে আমার মন পরিবর্তন হয়নি। আমি কেবল বিশ্বাস করতে পারি যে বিকাশকারীরা খুব খালি মাঝে মাঝে খুব সহজেই একটি খালি স্ট্রিং আক্ষরিক লিখেছেন - তবে আমি একবারে মিলিয়ন (এবং সহজেই পরীক্ষায় পাওয়া যাবে আশা করি ... ) বাগ, ব্যক্তিগতভাবে।
জন স্কিটি

29

না, শুধু ব্যবহার করুন ""

আক্ষরিক ""স্ফটিক হিসাবে পরিষ্কার। এর অর্থ কী ছিল তা নিয়ে কোনও ভুল বোঝাবুঝি নেই। আমি জানিনা কেন তার জন্য আপনার ক্লাস ধ্রুবকের প্রয়োজন হবে। আমি কেবল ধরে নিতে পারি যে এই ধ্রুবকটি StringUtilsপরিবর্তে থাকা প্যাকেজটিতে ব্যবহৃত হয় ""। যদিও এর অর্থ এই নয় যে আপনার এটি ব্যবহার করা উচিত।

ফুটপাতে যদি শিলা থাকে তবে আপনাকে এটি ফেলে দিতে হবে না।


6
"যদি ফুটপাতে কোনও শিলা থাকে তবে আপনাকে এটি ফেলে দিতে হবে না।" আমার 6 বছরের ছেলেকে বলুন।
রোজ রোজ

14

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


4
আমি কৌতূহলী - আপনি কি কোডে কখনও এটি দেখেছেন? যদি তা হয় তবে তা দুর্ঘটনাজনক ছিল নাকি উদ্দেশ্য নিয়ে? দুর্ঘটনাক্রমে এটি করা কঠিন বলে মনে হয় এবং যদি উদ্দেশ্য হয় তবে আমি খালি শূন্য EMPTY ধ্রুবক দিয়ে নিজের নিজের স্ট্রিংগিলস ক্লাসটি সহজেই তৈরি করতে পারতাম এবং এটি উল্লেখ করতে পারি।
আয়ান রবার্টসন

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

4
@ অ্যান্ড্রুটিফিনেল আমি অবশ্যই দেখতে পাচ্ছি যে কীভাবে সাধারণভাবে এটি সমস্যার কারণ হতে পারে। তবে আপনি কতক্ষণ সুনির্দিষ্টভাবে একটি খালি খালি দেখতে স্ট্রিং ধ্রুবকটি দেখেছেন?
আয়ান রবার্টসন

13

আমি এখানে আমার দুটি সেন্ট যুক্ত করব কারণ আমি কেউ Stringইন্টার্নিং এবং ক্লাস ইনিশিয়ালেশনের কথা বলছি না :

  • সকল Stringজাভা উত্স মধ্যে লিটারেল, অন্তরীণ তৈরি করছেন কোনো "" এবং একই বস্তুStringUtils.EMPTY
  • ব্যবহার ক্লাস আরম্ভ StringUtils.EMPTY করতে পারেStringUtils , কারণ এটি EMPTY ঘোষিত না হলেই এটিfinal তার স্থির সদস্যকে অ্যাক্সেস করে (জেএলএস that পয়েন্টে সুনির্দিষ্ট)। তবে এটি চূড়ান্ত, সুতরাং এটি ক্লাসটি আরম্ভ করবে না।org.apache.commons.lang3.StringUtils.EMPTY

জেএলএস 12.4.1 উল্লেখ করে স্ট্রিং ইন্টার্নিং এবং শ্রেণি সূচনা সম্পর্কিত সম্পর্কিত উত্তর দেখুন ।


"কেবলমাত্র এটি চূড়ান্ত হিসাবে ঘোষণা না হলে", সুতরাং এই ক্ষেত্রটি চূড়ান্ত হিসাবে ঘোষিত হওয়ার কারণে এটি অ্যাক্সেস করা ক্লাসের সূচনার কারণ হতে পারে নাStringUtils
হোলার

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

8

আমি সত্যিই এটি ব্যবহার করতে পছন্দ করি না যেমন return "";তুলনায় খাটো return StringUtils.EMPTY

তবে এটি ব্যবহার করার একটি ভুয়া সুবিধা হ'ল আপনি যদি টাইপ করেনreturn " "; পরিবর্তেreturn ""; বিভিন্ন আচরণের মুখোমুখি হতে পারে (আপনি যদি খালি স্ট্রিং সঠিকভাবে পরীক্ষা করেন কিনা তা সম্পর্কিত)।


13
আপনি কি কখনও দেখেছেন যে এটি আসলেই কোনও সমস্যা হয়ে দাঁড়িয়েছে ("" দুর্ঘটনাক্রমে যেখানে "" আপনি বোঝাতে চেয়েছেন ব্যবহার করে)? ব্যক্তিগতভাবে আমি আক্ষরিক আরও পঠনযোগ্য এটি খুঁজে পাই এবং এটি কখনই আমার কোনও সমস্যার কারণ হয় না।
জন স্কিটি

4
@ জন না, সত্যই, তবে আমি এটি ব্যবহারের সুবিধা খুঁজে পাওয়ার চেষ্টা করেছি;)
রোমেন লিনসালাস

4
সমান সময় নিয়ম নেই। যদি কোনও সুবিধা না হয় তবে কোনও সুবিধা নেই।
এরিক রবার্টসন

4
আমিও পছন্দ করি না "", আমি একই আক্ষরিক স্ট্রিং একাধিকবার টাইপ করতে এমনকি ঘৃণা করি এমনকি একবার কখনও কখনও। আমি বরং কনস্ট্যান্টস.জভাতে কনস্ট্যান্টগুলি ঘোষণা করব , তবে উত্স কোডে এগুলি সর্বত্র পুনরাবৃত্তি করব না।
ack জ্যাকি

4
আমি মনে করি return ""; কুশ্রী, আমি পছন্দ আগমন ব্যবহার করতে StringUtil.EMPTY(আমার নিজস্ব বর্গ ঘোষণা StringUtil , না এ্যাপাচি এর StringUtils )।
27 ack জ্যাকি

5

যদি আপনার শ্রেণি কমন্স থেকে অন্য কিছু ব্যবহার না করে তবে কেবল এই যাদু মানের জন্য এই নির্ভরতা থাকাটাই দুঃখজনক হবে।

স্ট্রিংটিলসের ডিজাইনার এই ধ্রুবকটির ভারী ব্যবহার করে এবং এটি করা সঠিক জিনিস, তবে এর অর্থ এই নয় যে আপনার এটিও ব্যবহার করা উচিত।


আমি বোঝাতে চাইছিলাম যেহেতু লেখক এই পথে যেতে বেছে নিয়েছেন ("যাদু মানগুলির কোনও ব্যবহার এড়ান)"। যদিও এটি ব্যক্তিগত হওয়া উচিত।
চেরোভিম

লেখক কোডটিতে 0 টি ঘন ঘন ব্যবহার করেন। তাদের জন্য যদি ধ্রুবকটি জিরো = 0 সংজ্ঞায়িত করা আরও ভাল হত? তা না হলে পার্থক্য কী?
জন স্কিটি

6
ইহা পারিপার্শ্বিক অবস্থা উপর নির্ভর করে। যদি এটি একটি FCKEditorStringUtils হয়, তবে তাদের EMPTY "<p> & nbsp </p>" হত এবং আমি ক্লাসের যেকোন জায়গায় এই যাদু মানটির প্রতিলিপি না দিয়ে EMPTY পুনঃব্যবহৃত দেখতে পেতাম। সুতরাং, EMPTY দ্বারা তারা সম্ভবত EMPTY_CONTENT অর্থ EMPTY_STRING নয় (যাতে আপনার জিরো উদাহরণটি কিছুটা অন্যায়)। আপনি কি কোনও ERROR_VISA_INVALID = 0 ধ্রুবকটি পুনরায় ব্যবহার করবেন না?
চেরোভিম

1

সত্যি বলতে, আমি কোনটির বেশি ব্যবহার দেখতে পাচ্ছি না। আপনি উদাহরণস্বরূপ একটি খালি স্ট্রিং তুলনা করতে চান, শুধু ব্যবহার করুনStringUtils.isNotEmpty(..)


4
StringUtils.isNotEmpty(..)এটি একটি নালচেকও করে তাই এটি খালি স্ট্রিংয়ের সাথে তুলনা করার মতো ঠিক না।
চেরোভিম

আর কেমন করে শিবির করবে null? এর ২ য় যুক্তি হিসাবে equals, তবে ফলাফলটি একই হবে -false
বোজহো

isNotEmptyবিপরীত "".equals(…), অত যে, আসলে এটা বিবেচনা করবে nullখালি স্ট্রিং মত হয় একটি খালি স্ট্রিং সঙ্গে তুলনা বিভিন্ন "".equals("")true, "".equals(null)false, StringUtils.isNotEmpty("")false, StringUtils.isNotEmpty(null)false। যদি আপনি কেবল জানতে চান যে কোনও স্ট্রিং ফাঁকা আছে কিনা, ব্যবহার করুন string.isEmpty(), trueযদি এটি খালি স্ট্রিং হয় এবং NullPointerExceptionযদি স্ট্রিংটি থাকে তবে একটি নিক্ষেপ করার সঠিক আচরণ আছে null...
হোলগার

1

আমি StringUtils.EMPTYযোগ্যতার জন্য কিছু ক্ষেত্রে দরকারী মনে করি । বিশেষত:

  1. টার্নারি অপারেটর যেমন।

    item.getId() != null ? item.getId() : StringUtils.EMPTY;
    
  2. হ্যাঁ আমি সত্যিই এটি করতে চেয়েছিলাম তা নিশ্চিত করার জন্য একটি পদ্ধতি থেকে খালি স্ট্রিং ফিরিয়ে দেওয়া।

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


4
একাধিক লুকআপের সাথে আপনার যুক্তি ধরে নেই। জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন 3.0.০ এর ১৩.৪.৯ অধ্যায়ে উল্লেখ করা হয়েছে যে StringUtils.EMPTYধ্রুবকটি সংকলন-সময়ে সমাধান করা হয়েছে।
রোল্যান্ড ইলিগ

4
স্ট্রিং পুলের অস্তিত্বটি সংকলনের সময় এবং শ্রেণি লোডিংয়ের সময় যাচাই করা হয়, রানটাইম কখনও নয় এমন সময় আপনি যখন এই জাতীয় বিবৃতি কার্যকর করেন,
লার্নের মারকুইস

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

1

না, কারণ আমার আরও কিছু লেখার আছে। এবং একটি খালি স্ট্রিং প্লাটফর্ম স্বাধীন খালি (জাভাতে)।

File.separator "/" বা "\" এর চেয়ে ভাল।

তবে আপনার পছন্দ মতো করুন। আপনি টাইপো পেতে পারেন নাreturn " ";


7
বেশিরভাগ প্রোগ্রামাররা "বেশি" লেখার জন্য কেন এত ভয় পান তা আমি বেশ বুঝতে পারি না। স্ট্রিংগটিলস.এমপটি লিখে আপনি স্ব মন্তব্য করার কোড অর্জন করবেন, এটি পড়ার পক্ষে সহজ। এবং স্টিভ ম্যাককনেল (বা কিছু সমীক্ষায় যা তিনি কোড কমপ্লিট ২.০ এ উদ্ধৃত করেছেন) অনুসারে কোডটি লেখার চেয়ে times গুণ বেশি পড়েন।
পাওয়ে ডায়দা

4
আপনি বিশেষভাবে সঠিক, তবে: "" .সামগ্রী (কিছু স্ট্রিং) স্ট্রিংগিলস.এমপিটিওয়াই.ইকুয়ালস (সামার স্ট্রিং) হিসাবে পড়া সহজ
খ্রিস্টান কুয়েটবাচ

আপনি যদি ভুলভাবে লিখে থাকেন তবে স্ট্রিংইটিলস.ইএমপিটিওয়াই.ইকুয়ালস (কিছু স্ট্রিং) সিন্ট্যাক্স ত্রুটির ফলস্বরূপ। "" .সম্পাদনা (কিছু স্ট্রিং) তা করবে না। এটি কেবলমাত্র EMPTY ব্যবহারের প্রয়োজন।
অ্যান্ড্রু টি ফিনেল

4
@ অ্যান্ড্রুটিফিনেল সেজন্য বুদ্ধিমান প্রোগ্রামাররা লেখেন someString.isEmpty()
হলগার

-2

হ্যাঁ, এটা বোঝা যায়। এটি কেবলমাত্র একমাত্র পথ নয় তবে আমি এই "অর্থবোধ করি না" বলার পথে খুব কমই দেখতে পাচ্ছি।

আমার মতে:

  • এটি "" এর চেয়ে বেশি দাঁড়িয়ে আছে।
  • এটি ব্যাখ্যা করে যে আপনি খালি বোঝাতে চেয়েছিলেন এবং খালিটি সম্ভবত এটি করবে না।
  • আপনি যদি নিজের ভেরিয়েবলটি সংজ্ঞায়িত না করে এবং একাধিক জায়গায় ব্যবহার না করেন তবে এটি সর্বত্র পরিবর্তনের প্রয়োজন হবে।
  • আপনি যদি কোডটিতে ফ্রি স্ট্রিং লিটারেলগুলিকে অনুমতি না দেন তবে এটি সহায়তা করে।

It will still require changing everywhere if you don't define your own variable and use it in multiple places.আপনি কি একটি খালি স্ট্রিংকে অন্য একটি ফাঁকা স্ট্রিংয়ে পরিবর্তন করবেন?
পিটা

@ পিঠা দুঃখিত, এটি খারাপ শব্দবন্ধ ছিল। আমি বলতে চাইছিলাম যে আপনি যদি "" এর পরিবর্তে এই ইনলাইনটি ব্যবহার করেন তবে আপনি নিজের ধ্রুবকটি সংজ্ঞায়িত করার এবং একাধিক জায়গায় পুনরায় ব্যবহার করার মতো একই সুবিধা পাবেন না। এটি স্ট্রিংগিলস-ইএমপিটিইয়ের পক্ষে কোন যুক্তি নয়, এটি এমন একটি ব্যাখ্যা যা 'অর্থবোধ করলেও' আপনি বেশি কিছু পান না। ব্যক্তিগতভাবে, আমি বর্ণনামূলক নাম সহ একটি ধ্রুবক তৈরি করব এবং তারপরে হয় এটি নির্ধারণ করব। আমি এমন কয়েকটি কেস দেখেছি যেখানে একজন বিকাশকারী একটি একক স্থানের উদ্দেশ্যে চেয়েছিলেন এবং খালি স্ট্রিংয়ের সাথে শেষ করেছিলেন, যা এই ফর্মের সাথে ঘটে না।
অরন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.