অন্যের উত্স কোডটির ব্যাখ্যা করা [বন্ধ]


9

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

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

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

আমি সাধারণত প্রথমে সাধারণ ত্রুটিগুলি পরীক্ষা করে দেখি - সেমিকোলন বা প্রথম বন্ধনী অনুপস্থিত, এক্সট্র্যাক্টর অপারেটরগুলির পরিবর্তে কমা ব্যবহার করে ইত্যাদি

যখন ব্যর্থ হয় ঝামেলা আসে। আমি প্রায়শই একটি ডিবাগারের সাথে পদক্ষেপ নিতে পারি না কারণ এটি একটি সিনট্যাক্স ত্রুটি, এবং আমি প্রায়শই লেখককে জিজ্ঞাসা করতে পারি না কারণ সে নিজে / সে ডিজাইনের সিদ্ধান্তগুলি বুঝতে পারে না।

আপনি সাধারণত অন্যের উত্স কোডটি কীভাবে পড়েন? আপনি কি উপরে থেকে ডাউন থেকে কোডটি পড়েছেন বা প্রতিটি ফাংশন যেমন বলা হয় তেমনি অনুসরণ করেন? "রিফ্যাক্টর করার সময় হয়েছে" বলার সময় আপনি কীভাবে জানবেন?


1
আমি বলব: কলেজে থাকা সত্ত্বেও খারাপ প্রোগ্রামারগুলিতে আপনার সময় নষ্ট করবেন না ... যদি আপনি এটির জন্য তাদের চার্জ না করেন। সাফল্যের কৌশলটি হ'ল তাদের বোকা দেখানোর সময় বোকা।
কাজ

2
@ জোব: আচ্ছা, আমরা যখন শুরু করছিলাম তখন আমরা সবাই খারাপ কোড লিখেছিলাম। তারা নিজেরাই সময় কাটাতে এবং উন্নতি করতে পারে কিনা তার উপর নির্ভর করে সময় কাটাবার উপযুক্ত কিনা depends

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

5
এবং এইভাবে আপনি তাদের প্রতি সুন্দর হওয়ার সময় প্রতিযোগিতাটি প্রকৃতপক্ষে মুছে ফেলেন। আপনি যদি তাদের জন্য সমস্ত কিছু সমাধান করেন তবে আপনি অনেক কিছু শিখবেন এবং তারা নিঃস্ব হবে। (Flipside, তারা একটি ডিগ্রী, যা জ্ঞান মানে তাদের অভাব সঙ্গে মিলিত তারা সম্ভবত ব্যবস্থাপনা ঢোকা করব সোজা দূরে পাবেন :)।)
biziclop

উত্তর:


22

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

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

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

আপনি যখন নির্দিষ্ট ফাংশন / পদ্ধতিটি করছেন তা আবিষ্কার করেন তখন নিজের সাথে মন্তব্য যুক্ত করুন।

ধৈর্য্য ধারন করুন. এলিয়েন কোড বোঝা সহজ নয় তবে জিগসের বেশিরভাগ টুকরো হঠাৎ করে জায়গায় পড়ে গেলে সর্বদা একটি যুগান্তকারী মুহূর্ত থাকে। এই মুহূর্ত পর্যন্ত এটি সমস্ত কঠোর পরিশ্রম এবং কৌতুকপূর্ণ ভয় আমার। সুসংবাদটি হ'ল অনুশীলনের সাথে সাথে এই ইউরেক মুহুর্তটি শীঘ্রই আসবে।


মূল লেখকের প্রতি শ্রদ্ধা রেখে আমি কীভাবে পুনরায় ফর্ম্যাট / নাম পরিবর্তন করতে পারি? আমার মত মন্তব্যগুলি করা উচিত // Renamed to ABC for XYZ?
ম্যাক্সপাম

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

6
@ ম্যাক্সপাম - আপনি কোড ফাইলটি অনুলিপি করুন। আপনি যা যা করতে চান তা করুন এবং তারপরে ফিরে যান এবং সেখানে সিস্টেমে সমস্যা সমাধানে তাদের সহায়তা করুন। ভাল যে আমি এটি করতে হবে।
এরিন

@ ম্যাক্সএমপি কোডের একটি অনুলিপি তৈরি করুন এবং এস্টাইল ( অ্যাস্টাইল.সোর্সফোর্জন.নেট ) এর মাধ্যমে প্রথমে চালান । কীভাবে প্রোগ্রাম করবেন তা শিখতে লোকেদের সাথে নিয়মিত কোডিং স্টাইল থাকে। কোডটি যথাযথভাবে ফর্ম্যাট করা দেখলে এটি দৃশ্যত "পার্সিং" করার সময় অনেক সহায়তা করে।
পিআই

1
@ ম্যাক্সপাম, আপনার সিস্টেমে অনুলিপি করা এবং কাজ করা সর্বোত্তম তবে আপনার সামনে যদি তাদের এটি করতে হয় তবে (যেমন যদি তারা আপনাকে ভেরিয়েবলের নাম পরিবর্তন করতে চান) কেবল তাদের বলুন যে আপনি করেন নি এটি লিখবেন না, সুতরাং কী করছেন তা জানেন না তাই আপনার এটির নতুন নামকরণের প্রয়োজন।
ডমিনিক ম্যাকডোনেল

20

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


2
নিচে ভোট কেন? এটি একটি ভাল ধারণা বলে মনে হচ্ছে।
ম্যাট এলেন

আমি রাজী. খুব অদ্ভুত লাগে।
মাইকেল কে

@ মাইকেল বিজ্ঞাপনে মাইকেল, ড্রাইভ বাই ডাউনভোটাররা, আপনি অনুমান করতে পারেন এমন খুব বেশি কিছু না ...
নিম

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

এটি একটি ভাল উত্তর। তাদের কোডটি করণীয় বলে মনে করছেন বা কমপক্ষে এটি করতে চান বলে তাদের কী ধারণা থাকা উচিত।
জেফো

3

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

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


+1 - কোড বিকাশকারী এবং অন্যান্য ব্যক্তিদের দ্বারা লিখিত বাগগুলি ট্র্যাক করে রাখা 2 খুব ভিন্ন ভিন্ন স্কিলসেট। নিয়োগকর্তারা যখন তাদের এমন কোনও জিনিস খুঁজে পান যখন তারা উভয়ই খুব ভালভাবে করতে পারে তখন তাদের কী আছে তা প্রশংসা করে না।
ডঙ্ক

2

প্রথমত, যদি সিনট্যাক্স ত্রুটি থাকে, আপনাকে কেবল সংকলক ত্রুটিগুলি সাবধানে পড়তে হবে। প্রায়শই একটি লাইন একটি ত্রুটি হিসাবে হাইলাইট করা হয়, তবে এটি আসলে পূর্ববর্তী লাইনটিতে ত্রুটি রয়েছে।

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

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

ঠিক আছে, সুতরাং যদি কোনও সিনট্যাক্স ত্রুটি না ঘটে তবে কি হবে? তারপরে এবার কোড দিয়ে পদক্ষেপ নেওয়ার সময়! আপনি এটির জন্য একটি ডিবাগার ব্যবহার করতে পারেন তবে printfকোডটি জুড়ে কল দেওয়াও অত্যন্ত কার্যকর। উদাহরণস্বরূপ, যদি একটি forলুপ থাকে তবে লুপ কাউন্টারের জন্য একটি মুদ্রণ বিবৃতি যুক্ত করুন। নেস্টেড forলুপগুলির ক্ষেত্রে , আপনি দেখতে পাবেন যে ভুল ভেরিয়েবলটি বাড়ানো হচ্ছে।

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

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

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


1

আমি এটি বলতে ঘৃণা করি তবে এখানে রূপোর কোনও বুলেট নেই।

সত্যি বলতে গেলে, আমি যদি 10% মামলায় এমনকি তারা যা লিখেছিল তখন অন্যরা কী বোঝাতে পেরে আমি যথেষ্ট স্পষ্টবাদী হয়ে থাকি, সন্দেহের ছায়া ছাড়াই আমি এতক্ষণে লক্ষ লক্ষ উপার্জন করতে পারতাম।

আরও ব্যবহারিক নোটে, বুদ্ধিমান আইডিই ব্যবহার করা হচ্ছে পদক্ষেপ 1।

পদক্ষেপ 2 হ'ল ডোজিজেন বা উত্স কোডের স্তরবিন্যাস বের করার অনুরূপ কিছু চালানো ।

পদক্ষেপ 3 হ'ল অ্যাঙ্কর ফাংশন বা অবজেক্টস, আপনার কমান্ড লাইন বা ফাইলকে প্রক্রিয়াকরণ করে এবং তারপরে যুক্তি সম্পাদন করে।

পদক্ষেপ 3 এর সমান্তরালে, যদি আপনি গ্লোবালগুলি ব্যবহার করে থাকেন তবে সেগুলি ট্র্যাক করুন। আপনার সাথীদের জিজ্ঞাসা করুন যে তারা কোনও নির্দিষ্ট নির্দিষ্ট অ্যালগরিদম ব্যবহার করছেন - কোডটি দেখার আগে অ্যালগরিদমটি (যদি সেখানে উপস্থিত থাকে) পড়া সর্বদা উপকারী।


1

এক কথায়: অভিজ্ঞতা, আপনি যত বেশি অভিজ্ঞতা অর্জন করবেন তত বেশি আপনি সেরা অনুশীলনগুলি শিখবেন এবং অন্যের কোডের বিচার / বুঝতে পারবেন। এটি স্বয়ংক্রিয়ভাবে আসে না, পরিবর্তে এটি কেবল একই ভুল নিজে থেকেই করা থেকে আসে!

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


1

আমাকে প্রায়শই স্কুলে ল্যাবটিতে একই প্রশ্ন করা হত। সাধারণত প্রশ্নটি শুরু হয়, "এই সংকলক ত্রুটিটি আমি কীভাবে ঠিক করব?" তাই আমি ঝাঁকুনির elseমতো, সেমিকোলন এবং এর মতো অনুপস্থিত খুঁজে পেলাম । (ম্যাক্রোগুলিও ডিবাগ করতে মজাদার - #define CUBE(x) x * x * xএটি একটি ভুল যা আমরা সকলেই তৈরি করার সিদ্ধান্ত নিয়েছি)) আমার একটি সুবিধা ছিল যে আমি একই শিক্ষকদের সাথে একই ক্লাসে গিয়েছিলাম, তাই আমি প্রয়োজনীয়তার সাথে ইতিমধ্যে পরিচিত ছিল।

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

পুরো ধারণাটি অন্য শিক্ষার্থীকে গাইড করতে সহায়তা করা। তাদের জন্য তাদের কোডটি পুনরায় লেখাই তাদের শিখতে সহায়তা করবে না।


#define CUBE(x) x * x * xটাইপ-অদক্ষতা ব্যতীত অন্যায় কী?
কাজ

যখন ডাকা হয় CUBE(3), ঠিক আছে। এটির সাথে কল করুন CUBE(x + 1)এবং আপনি সিটিতে x + 1 * x + 1 * x + 1যা মূল্যায়ন করেছেন তা পান x + (1 * x) + (1 * x) + 1। এটি 3x + 1যা <<<< 3 </sup> নয় তা মূল্যায়ন করে ! আপনি ঘোষণা করে এটি ঠিক করুন #define CUBE(x) (x) * (x) * (x)
মাইকেল কে

0

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

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