কোডটি "সুন্দর দেখায়" তৈরির সাথে আবেশ করার কোনও সুবিধা আছে কি?


34

কখনও কখনও কোডটি "সুন্দর দেখায়" তৈরি করার সময় আমি হাস্যকর সময় (ঘন্টা) ব্যয় করে থাকি। আমার অর্থ জিনিসগুলিকে প্রতিসাম্যপূর্ণ দেখানো। "সুন্দর" বা "পরিষ্কার" দেখাচ্ছে না এমন কোনও কিছু লাফিয়ে উঠছে কিনা তা দেখার জন্য আমি আসলে পুরো ক্লাসে দ্রুত স্ক্রোল করব।

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

আমি কি পুরোপুরি ওসিডি হচ্ছি বা এর মধ্যে কিছু সুবিধা লুকিয়ে আছে?


8
আমি কেবল Ctrl-E, D;) ব্যবহার করি
টাউন

1
এটি যদি সংস্থার ফর্ম্যাটিং বিধিগুলির সাথে চালিয়ে না যায় তবে সুবিধাটি খুব সামান্য।

2
আপনার কোডটি অটো-ফর্ম্যাট করার জন্য কেন কোনও প্রোগ্রাম তৈরি করবেন না, তাই আপনি খুশি হবেন এবং আপনি সময় নষ্ট করবেন না?
জেটি

1
ফর্ম্যাটিং এটিকে পঠনযোগ্য করে তোলে তাই এটি গুরুত্বপূর্ণ, তবে অবশ্যই "স্মার্ট" হয়ে উঠুন - অটো ফর্ম্যাটর ব্যবহার করুন। যদি সেই ফর্ম্যাটটি যথেষ্ট ভাল না হয় - তবে ঠিক সেই সময়ে আপনি ওসিডি হতে পারেন CD
ক্যাচপপস

1
ওয়েল @ টেলর আপনার লারাভেল কাঠামোটি আশ্চর্যজনকভাবে সুন্দর
মিঃ ওয়েব

উত্তর:


32

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

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


1
অল-সাহসী দ্বিতীয় অনুচ্ছেদ কেন?
স্টিভেন জিউরিস

5
@ ফ্রাস্ট্রেটেড উইথফোর্ডস ডিজাইনার: অর্ধ পোস্টকে জোর দেওয়া হলে তা জোর দেওয়া হয় না । : পি
জন পুরী

2
@ স্টিভেন, @ জন - উল্লেখ এবং সম্পাদিত।
মরগান হের্লোকার

3
মন্তব্যের সামান্য ব্যঙ্গাত্মক চেইন। ;)
টেলরঅটওয়েল

2
@ স্টুপার ইউজার, আরও অলস এবং জিনিসগুলি স্বয়ংক্রিয়ভাবে পাওয়ার মতো :)

10

আপনি যদি এমন কোনও কিছু পরিবর্তন না করে যা এটিকে আরও ভালভাবে বোঝার অনুমতি দেয় তবে হ্যাঁ, আপনি আপনার সময় নষ্ট করছেন।


3
+1: মোট বর্জ্য। অন্যান্য ব্যক্তির বিভিন্ন মতামত রয়েছে এবং সুন্দর এবং আপনার কোডটি পুনরায় ফর্ম্যাট করবেন এবং আপনি কেন তাদের আদর্শ বিন্যাসটি অনুসরণ করেন না সে সম্পর্কে অভিযোগকারী প্রশ্ন লিখবেন।
এস .লট

সমস্ত কোড এক লাইনে রেখে দেওয়া তার কার্যকারিতা পরিবর্তন করে না, তবে নিউলাইনগুলি ব্যবহার করা এটি আরও বোধগম্য করে তোলে।
স্টিভেন জিউরিস

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

@ এস.লোট: না আমি হতাশার কথা বলছি না। সমস্ত কোড এক লাইনে রাখা ভয়ানক অবহেলা হবে। :) আমি বিন্দু যে না করতে চেষ্টা ছিল 'পরিবর্তন' কিছু, এটা করতে পারেন আপনি কোড ভালভাবে বুঝতে করার অনুমতি দেয়। আরও বিশদ ব্যাখ্যার জন্য নেভিলের উত্তরটি দেখুন। PS: তবুও আমি বিশ্বাস করি এটি সত্যিই ফাঁকা উত্তর। অবশ্যই, যখন আপনি এমন কোনও কিছু পরিবর্তন করেন যা আপনাকে অকেজো কোডটি আরও ভালভাবে বুঝতে দেয় না তবে এটি অত্যন্ত আত্মনির্ভর এবং এটি আসলে প্রশ্ন।
স্টিভেন জিউরিস

6

কিছুই লুকানো নেই, সুন্দর কোডটি পড়া সহজ এবং বজায় রাখা সহজ।

আপনার কাছে বিশাল কোডবেস না থাকলে "আওয়ার্স" কিছুটা বাড়তি মনে হচ্ছে। সব কিছুই নিখুঁত হতে হয় তা ঠিক হতে হবে


5

এটা বিচারের বিষয়; আপনি যদি ঘন্টা ব্যয় করেন তবে আমি বলব আপনি শীর্ষে যাচ্ছেন। তবে, এমন কিছু জিনিস রয়েছে যা একটি মানুষ করতে পারে যা একটি অটো-ফর্ম্যাটরটি করতে পারে না এবং আপনার কোডটি আরও পাঠযোগ্য এবং কর্পোরেট কোডিং মানগুলিতে ক্যাপচার করা শক্ত make

উদাহরণস্বরূপ, ক্লাসে ভেরিয়েবলগুলি ঘোষণা করার সময়, আমি লজিকাল গ্রুপিং করতে চাই - এটি যুক্তি অনুসরণ করা আরও সহজ করে তোলে।

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

আমি সুন্দরভাবে ফর্ম্যাটেড কোড দেখেছি যা গুরুতর ডাব্লুটিএফ মুহুর্তগুলির কারণ হয়েছিল কারণ অন্তর্নিহিত চিন্তার প্রক্রিয়াটি ত্রুটিযুক্ত ছিল। আপনার যদি সময় কাটাতে ঘন্টা থাকে তবে আমি এটিকে নকশার পরিবর্তে নকশাকরণ এবং রিফ্যাক্টরিংয়ে ব্যয় করব ....


আপনি আমার নিজের উত্তর লিখতে বাধা দিয়েছেন। ; পি খুব ভাল!
স্টিভেন জিউরিস

কাঠামোটি উল্লেখ করার জন্য এবং কনভেনশনগুলির নামকরণের জন্য ট্রাম্পের ফর্ম্যাটটিকে গুরুত্ব দেওয়ার জন্য +1।
মরগান হের্লোকার

4

না আপনি পুরোপুরি ওসিডি হচ্ছেন না। একজন প্রোগ্রামার হিসাবে আমি সবচেয়ে বড় প্রশংসা শুনেছিলাম, "আপনার কোডটি এতটাই পরিষ্কার যে আমার ছোট ভাই এটি বের করতে পেরেছিল।"

কোনও একদিন আপনার কোডটি সমর্থন করতে চলেছে। ক্লিন কোড সমর্থন করা অনেক সহজ। এবং কিছু দিন যে আপনি হতে পারে। 6 মাস বা এক বছরে আপনি কী করেছিলেন তা মনে রাখবেন না। তবে এটি পরিষ্কার এবং সহজে পড়া সহজ হয় এটি দ্রুত ফিরে আসবে।

এটি বলেছে যে কোডটি যদি আবর্জনা হয় তবে এটি সুন্দর আবর্জনা হতে সহায়তা করে না। তবে যদি এটি সুসংগঠিত হয় এবং কেবল কার্যকারিতা সংক্রান্ত সমস্যা থাকে তবে কার্যকারিতাটি উন্নত করা আরও সহজ হবে।


3

না - কোডটি চমত্কার চেহারা তৈরি করতে আগ্রহী হওয়ায় বিন্দুটি অনুপস্থিত

এখানে জ্ঞানের কয়েকটি অংশ যা আমি দরকারী বলে মনে করেছি:

কোডটি কেন পরিপাটি হওয়া দরকার তা জিজ্ঞাসা করুন ।

আপনার সুন্দরটির সংজ্ঞা অনুসারে আপনি আপনার সময় নষ্ট করছেন বা নাও করতে পারেন।

ফরম্যান্টিং এর ফান্ডামেন্টাল উপপাদ্য বলেছেন যে ভাল ভিজ্যুয়াল লেআউট প্রোগ্রামটির যৌক্তিক কাঠামো দেখায়। কোডটিকে সুন্দর দেখাচ্ছে এমন কিছু মূল্যবান, তবে কোডটির কাঠামোটি দেখানোর চেয়ে এটি কম দামের। [পৃষ্ঠা 732, কোড সম্পূর্ণ দ্বিতীয় সংস্করণ, স্টিভ ম্যাককনেল]

আপনি যদি কোডের পরিবর্তনগুলি ট্র্যাক করতে একযোগে ভার্সন সিস্টেম ব্যবহার করেন - লজিক্যাল / অ্যাডিশন বৈশিষ্ট্যগুলির সাথে কোড ফরমেটিং পরিবর্তনগুলি একই প্রতিশ্রুতিতে পরিবর্তনগুলি মিশ্রিত করবেন না।

এটি স্পট করার জন্য আরও কঠোর পরিবর্তন আনবে এবং অপর দলের সদস্যরা যদি ফাইলটি সম্পাদনা করে তবে অযথা সংহত দ্বন্দ্বের কারণ ঘটবে। আপনার যদি অবশ্যই ফর্ম্যাটিং পরিবর্তন করতে হয় তবে অন্যান্য দলের সদস্যরা সেই ফাইলটিতে কাজ করছেন না তা পরীক্ষা করে দেখুন। [প্যারাফ্রেসড, পৃষ্ঠা 93, সাবভারশন ব্যবহার করে ব্যবহারিক সংস্করণ নিয়ন্ত্রণ, ২ য় সংস্করণ]

এছাড়াও মার্টিন ফোলার 'দুটি টুপি পরা' এবং সারা দিন তাদের মধ্যে স্যুইচিংয়ের বিষয়ে কথা বলেন। বৈশিষ্ট্যগুলি যুক্ত করার জন্য একটি টুপি, রিফ্যাক্টরিংয়ের জন্য একটি টুপি।

  1. আপনি একটি নতুন বৈশিষ্ট্য (বৈশিষ্ট্য টুপি) যুক্ত বিবেচনা
  2. আপনি চলার সাথে সাথে পরিপাটি করে বোঝাপড়া অর্জনের জন্য বিদ্যমান কোডটি ব্যবহার করেছেন। (রিফ্যাক্টরিং হাট)
  3. পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।
  4. বৈশিষ্ট্য যুক্ত করুন। (বৈশিষ্ট্য টুপি) এবং আরও ....

[প্যারাফ্রেসড pg 57ish, রিফ্যাক্টরিং, মার্টিন ফওলার]

সুতরাং, পুরো কোড বেসটি প্রিটিফাইটি করার চেষ্টা করে ঘন্টা ব্যয় করবেন না। পরবর্তী বৈশিষ্ট্য যুক্ত করতে আপনার প্রয়োজনীয় কোডটি কেবল প্রিটিটিফাই করুন।

সংক্ষেপে ... প্রতিটি কোডের টুকরোটি আপনি প্রথমে আসার চেয়ে ভাল অবস্থায় রেখে দিন।


2

যদি এটি নিখুঁতভাবে ফর্ম্যাটিং হয় তবে আপনি সম্ভবত নিজের কোডটি কীভাবে বিন্যাস করতে চান তা একটি প্রিন্ট-প্রিন্টার শেখাতে কিছুটা সময় ব্যয় করা ভাল। এটি কিছুটা ব্যয়বহুল আপ-ফ্রন্ট, তবে আমি কল্পনা করি আপনি 2-3 টাইমে এই টাইমারটিকে পুনরুদ্ধার করবেন।

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


1

এটি কিছুটা সহায়তা করে তবে এটিতে খুব বেশি সময় ব্যয় করা উপযুক্ত নয়। এছাড়াও আপনার উন্নতিগুলি ভেরিয়েবল স্কোপিং, আরআইআইআই, গ্রুপ কপি / পেস্ট কোড ইত্যাদি যুক্ত করেছে কিনা তা নিশ্চিত করুন আপনি যদি এই সমস্ত কিছু করেন তবে কোডটি এক বছর বা তার পরে কী করবে তা আপনার বুঝতে হবে যখন এটি 1000x আরও সহজ হয়ে যায়।


1

আপনার পরিষ্কার পরিচ্ছন্ন কোড তৈরি করা উচিত তবে এতে কয়েক ঘন্টা সময় নেওয়া উচিত নয়।

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

 switch (foo) {
      case a:  foo (a);             break; 
      case b:  foob ();             break;
      case c:  /* intent. empty */
      case d:  foocd ();            break; 
      default: allPrettyAligned (); break; 
 }

যা নির্দিষ্ট করা শক্ত।


1

আপনি যদি মনে করেন যে কোনও কিছু এটিকে স্কিম করে পরিষ্কার দেখায়, তবে আপনি পর্যাপ্ত কিছুতে মনোনিবেশ করছেন যা স্বয়ংক্রিয়ভাবে তৈরি হতে পারে।

"ভুল কোডটি ভুল দেখায়" এই ক্লাসিক নিবন্ধটি পড়ুন এবং আপনি সাধারণভাবে ইন্ডেন্টেশন (যা স্বয়ংক্রিয়ভাবে সম্পন্ন হতে পারে) কেন তুচ্ছ বলে মনে করেন আপনি তা দেখতে পাবেন:

http://www.joelonsoftware.com/articles/Wrong.html

বিশেষত এই তালিকা:

ঠিক আছে, আমি এ পর্যন্ত প্রোগ্রামার হিসাবে তিনটি অর্জনের স্তরের উল্লেখ করেছি:

ঘ। আপনি অশুচি থেকে পরিষ্কার জানেন না।

ঘ। আপনার পরিষ্কার-পরিচ্ছন্নতার একটি পৃষ্ঠপোষক ধারণা রয়েছে, বেশিরভাগই কোডিং কনভেনশনগুলির সাথে সামঞ্জস্যের পর্যায়ে।

ঘ। আপনি পৃষ্ঠের নীচে অপরিচ্ছন্নতার সূক্ষ্ম ইঙ্গিতগুলিকে গন্ধ পেতে শুরু করেন এবং কোডটি পৌঁছানোর এবং ঠিক করার জন্য তারা আপনাকে যথেষ্ট পরিমাণে বাগিয়ে দেয়।

এর চেয়েও উচ্চতর স্তর রয়েছে তবে আমি যা বলতে চাই তা সত্যই:

ঘ। আপনি ইচ্ছাকৃতভাবে আপনার কোডটি এমনভাবে স্থপতি করেছেন যাতে অশুচি হওয়ার জন্য আপনার নাক আপনার কোডটি সঠিক হওয়ার সম্ভাবনা বেশি করে।

এটিই আসল শিল্প: স্ক্রিনটিতে ত্রুটিগুলি দাঁড় করায় এমন কনভেনশনগুলিকে আক্ষরিক উদ্ভাবন করে শক্ত কোড তৈরি করা।


0

"ঘন্টার"? ঠিক আছে, আমি বলব যে আপনার উত্তরটি "এবং", "বা" নয় "হ্যাঁ, আপনি ওসিডি হচ্ছেন, তবে এর কিছু সুবিধা রয়েছে।

সম্ভবত।

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

অন্যদিকে, আপনি যদি নিজের কোডটি দিয়ে কাজ করা আরও সহজ না করে নিজের নান্দনিকতার নিজস্ব ধারণাটির কাছে আবেদন করার কিছু বিকৃত উপায় অবলম্বন করেন তবে হ্যাঁ, এটি সময়ের অপচয় একটি বড় অপচয়।

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


0

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

তবে আমি আপনার সহকর্মীদের বা ভবিষ্যতের বিকাশকারীদের জন্য আপনার কোডটিকে অতিরিক্ত বিন্যাসে না নেওয়ার বিষয়ে সতর্ক থাকব। আপনার খুব সুন্দর আমার কাছে সুন্দর নাও হতে পারে। :)


0

আপনি সমস্যাটি (বাধ্যতামূলক আচরণ) এবং লক্ষণগুলি (অবসেসটিভ ফরম্যাটিং) সনাক্ত করতে পারেন।

কারণ এবং নিরাময়ের কী হবে?

  • আপনি কি অনেক ঘন্টা কাজ করছেন?
  • আপনি হতাশ, উদাস, উদ্বিগ্ন?
  • আপনার পরবর্তী কাজ কি? এটি এমন কিছু যা আপনি করতে চান না?
  • কখন শেষ অবকাশ ছিল? পদোন্নতি? একটি অর্জনের জন্য স্বীকৃতি?
  • এটি কি জ্বলন্ত সম্পর্কিত সমস্যা?
  • আপনি কি ডেথ মার্চে আছেন?

কখনও কখনও এই লক্ষণগুলি একটি চিহ্ন এটি এখন সাহসী পরিবর্তন করা বা এগিয়ে যাওয়ার সময়।

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

http://dev.co.ua/docs/Edward%20Yourdon%20-%20Death%20March.pdf

আপনি বেশ অন্তর্দৃষ্টিপূর্ণ বলে মনে হয় এবং আমি মনে করি আপনি সম্ভবত উত্তরটি জানেন।

এখন, নিজেকে এটিতে অভিনয়ের অনুমতি দিন।


-4

পবিত্র বোভাইন!
আপনি লোকেরা ইন্ডেন্টের কথা শুনেনি?

এটি একটি কোড ফর্ম্যাটিং ইউটিলিটি যা প্রায় 20 বছরেরও বেশি সময় ধরে ছিল। এটি বিকল্পগুলির একটি মেগা বালতি পেয়েছে যাতে আপনার কোডটি যেভাবেই আপনি চান তা স্বয়ংক্রিয়ভাবে ফর্ম্যাট করা যায়।

এরম - তবে এটি কেবল সি এবং কিছুতে কাজ করে তবে সমস্ত সি ++ নয় .... (ডাব্লুটিএফএফ? কেন জিএনইউ এটি আপগ্রেড করে না?)


2
আপনার প্রথম উত্তর অবদানের জন্য ধন্যবাদ। নিশ্চিত নন নিচে যারা ভোট দিয়েছেন, কিন্তু দয়া করে স্ট্যাক এক্সচেঞ্জ প্রোগ্রামাররা উপর প্রশ্নের উত্তর দেওয়ার জন্য নির্দেশিকা এ দ্রুত বর্ণন নিতে programmers.stackexchange.com/questions/how-to-answer । আপনার প্রতিক্রিয়া সম্ভবত একটি বা দুটি ভোট জয়ের জন্য সেই মানদণ্ডগুলিতে সংশোধিত হতে পারে।
বিকাশকারী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.