স্থানীয় চলকটিতে প্রথম শব্দের জন্য ছোট হাতের ব্যবহার করার কারণ কী (উদাহরণস্বরূপ, কর্মচারী গণনা, ফার্স্টনাম)


20

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

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

তবে কেন বুঝতে পারছি না।

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

অফিস আইডিই সহ আমার প্রোগ্রামিং এক্সেল ৯ ma ম্যাক্রোয়ের প্রথম দিন থেকেই, আমার কোনও স্থানীয় ভেরিয়েবল বা সম্পত্তি কিনা তা জানার জন্য আমার কখনই কেসিং কনভেনশনের প্রয়োজন হয়নি। এটি কারণ আমি সর্বদা একটি খুব স্বজ্ঞাত নামকরণ কনভেনশন ব্যবহার করেছি। উদাহরণস্বরূপ, GetNuggetCount()স্পষ্টভাবে এমন একটি পদ্ধতির পরামর্শ দেয় যা কোথাও যায় এবং সমস্ত ন্যাগটগুলির একটি গণনা পায়। SetNuggetCount(x)পরামর্শ দেয় আপনি নাগেটের গণিতে একটি নতুন মান নির্ধারণ করছেন। NuggetCountসমস্ত নিজেই এমন কোনও সম্পত্তি বা স্থানীয় পরিবর্তনশীল প্রস্তাব দেয় যা কেবল একটি মান রাখে। শেষের দিকে, কেউ বলতে প্ররোচিত হতে পারে, "আহা হা! এটাই প্রশ্ন। সম্পত্তি বা পরিবর্তনশীল? এটি কী?" তারপরে, আমি উত্তর দিয়েছিলাম, "এটি কি আসলেই গুরুত্বপূর্ণ?"

সুতরাং এখানে tl; dr ;: আপনার পরিবর্তনশীল বা রিটার্ন পদ্ধতিতে প্রথম শব্দের জন্য ছোট হাতের অক্ষর ব্যবহার করার উদ্দেশ্য, যৌক্তিক, অ-স্বেচ্ছাচারী কারণগুলি কী কী?

সম্পাদনা করুন: মেইনমার জন্য

আপনার উত্তরে প্রথম কোডের নমুনা দিয়ে এই কোডটি প্রতিস্থাপন করুন এবং দেখুন আপনার যুক্তিটি কতটা ভালভাবে ধরেছে:

public void ComputeMetrics()
{
    const int MaxSnapshots = 20;

    var Snapshots = this.LiveMeasurements.IsEnabled ?
        this.GrabSnapshots(MaxSnapshots, this.cache) :
        this.LoadFromMemoryStorage();

    if (!Snapshots.Any())
    {
        this.Report(LogMessage.SnapshotsAreEmpty);
        return;
    }

    var MeasurementCount = Measurements.Count();
    this.Chart.Initialize((count + 1) * 2);

    foreach (var s in Snapshots)
    {
        this.Chart.AppendSnapshot(s);
    }
}

7
তারা যদি উচ্চতর ক্ষেত্রে থাকে তবে অন্য কেউ জিজ্ঞাসা করত যে তারা কেন নিম্ন-মামলায় নেই ...
m3th0dman

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

59
দুর্ভাগ্যক্রমে আপনার জন্য, আসল এবং বৈধ কারণ "কারণ এটি স্ট্যান্ডার্ড"। এটি একই দলের লোকদের একই কোড শৈলীর মান অনুসরণ করার জন্য অর্থ প্রদান করে। আপনি যদি কেন এটি ব্যর্থ হন তবে আপনার অন্য একটি প্রশ্ন জিজ্ঞাসা করা উচিত: "মানগুলি কেন কার্যকর?"
অ্যান্ড্রেস এফ।

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

উত্তর:


88

এই নামকরণ কনভেনশনটি প্রায়শই ব্যবহার করা হয় যখন লোকেরা কোনও ভেরিয়েবলকে এর ধরণের একই নাম দিতে সক্ষম হতে চায়। উদাহরণ স্বরূপ:

Employee employee;

কিছু ভাষা এমনকি সেই মূলধনকে কার্যকর করে। মত বিরক্তিকর পরিবর্তনশীল নাম ব্যবহার করা বাধা দেয় MyEmployee, CurrentEmployee, EmployeeVar, ইত্যাদি আপনি সর্বদা বলতে পারেন কিছু টাইপ বা একটি পরিবর্তনশীল, শুধু মূলধন থেকে। এটি যেমন পরিস্থিতিতে বিভ্রান্তি রোধ করে:

employee.function(); // instance method
Employee.function(); // static method

এছাড়াও, ইংরেজিতে বিশেষ্য বিশেষ্যভাবে মূলধন হয় না, তাই আপনি সত্যিকার অর্থে দাবি করতে পারবেন না যে আপনার মূলধনটি "যথাযথ"।

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


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

1
@oscilatingcretin এটিকে পাস্কেলকেস বলা হয়।
মিঃমিন্দর

21
Employee Employeeকাজ করে, তবে আমি যুক্তি দেব যে এটি একটি মানব পাঠকের চেয়ে বিভ্রান্তিকর Employee employee। পরেরটি দেখতে দুটি ভিন্ন জিনিসের মতো লাগে। অদৃশ্য পুনরাবৃত্তির মতো প্রথম দেখায়।
জ্যামি এফ

14
@oscilatingcretin হুবহু: "ধরে নিলেন যে পাঠক অন্তর্নিহিত কাঠামোটি বুঝতে পেরেছেন ..." আমি জাভাস্ক্রিপ্ট, জাভা, সি #, সি ++ এবং অন্যান্য পড়তে এবং কোডটি আমার মাথায় অনুবাদ করতে চাই। "ওহ, এই ভাষার সংকলকটি x এর সাথে ডিল করতে পারে" এমন ভাবনা চালিয়ে যাওয়া আমার পছন্দ হয় না । আমি কোডের অর্থ পাওয়ার চেষ্টা করছি।
জ্যামি এফ

1
দ্রষ্টব্য যে employee.function()কোনও স্থিতিশীল পদ্ধতিও হতে পারে, যদি ভাষা কোনও বস্তু থেকে স্ট্যাটিক পদ্ধতিগুলি কল করার অনুমতি দেয় (জাভা যেমন করে)। সংকলকটি একটি সতর্কতা দেয় তবে এটি করার অনুমতি দেওয়া হয়।
ইউও

34

কিছু নেই। এটি বেশিরভাগ লোকেরা যা করেন তাই এটি মানক হয়ে উঠেছে কারণ প্রত্যেকেই এটি করে। প্রচুর সাহিত্য এই সম্মেলনটি অনুসরণ করে যাতে লোকেরা অভ্যাসটি গ্রহণ করে।

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

আপনার পদ্ধতিতে লিখিত কোডটি জুড়ে আসাটি আমি দেখতে পেয়েছি এবং বলব যে এটি আমার পছন্দ নয়। তবে এটি স্টাইলের বিষয়।

এখন আপনি যদি কর্মক্ষেত্রে এটি করছেন তবে দলের স্টাইলে কোড করা ভাল হবে যাতে কোডটি সর্বত্রই সঙ্গতিপূর্ণ থাকে। বরং আপনার কোডটি প্রত্যেকের এলেক্সের চেয়ে আলাদা।

http://thecodelesscode.com/case/94


3
আমি আশা করি বেশিরভাগ প্রোগ্রামার আপনার মতো ছিল। অনেকে উল্লেখযোগ্যভাবে উত্সাহী এবং / অথবা আমি উল্লেখ করেছি এমন কেসিং মানটি অনুসরণ করার বিষয়ে গোপনীয় are
oscilatingcretin

1
@ স্কিটি এটি গুরুত্বপূর্ণ যে আপনি যদি প্রকল্পের কাজ করতে পরবর্তী প্রোগ্রামার হন।
N4TKD

3
@oscilatingcretin আপনি একবার পূর্ণ কোডে কাজ করার পরে আপনি যতটা আবেগময় এবং / অথবা কৌতূহলবোধক হতে পারেন var m_someVariableID = GetVariableValueId()। বিশেষত যদি আপনাকে স্বতঃপূরণ সমর্থন ছাড়াই এটি করতে হয় ।
ট্যাক্রয়

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

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

25

1. মান কেন বিদ্যমান?

সর্বোপরি, সবার পছন্দ অনুযায়ী ব্যক্তিগত পছন্দ অনুযায়ী কোডটি লিখতে দেওয়া এবং কোন স্ট্যান্ডার্ডটি আরও ভাল তা নিয়ে কথা বলা বন্ধ করা ভাল না?

আসল বিষয়টি হ'ল আপনি যখন একটি শৈলীতে অভ্যস্ত হন তখন কোডটি পড়া আরও কঠিন যেটি আলাদা স্টাইল ব্যবহার করে। কোডটি কী করে তা বোঝার পরিবর্তে আপনার মস্তিষ্ক কনভেনশনটি বোঝার চেষ্টা করে (যদি থাকে তবে) আরও বেশি সময় ব্যয় করে।

এই দুই টুকরা কোডের মধ্যে আরও পাঠযোগ্য কী?

public void comp_metrics ()
{
  int Count;
  List<snapshot> measurements=fromMemoryStorage();
  if (_liveMeasurements.enabled)
    measurements = GrabSnapshots(20, _cache);
    if( !measurements.Any() ) {
        this.Report(LogMessage.Measurements_Are_Empty); return;
    }

    Count = measurements.Count ();

    this.Chart.initialize(( Count + 1 )*2);

    foreach(snapshot S in measurements) {
      this.Chart.append_Snapshot ( S );
    }
}

বা:

public void ComputeMetrics()
{
    const int MaxSnapshots = 20;

    var snapshots = this.liveMeasurements.isEnabled ?
        this.GrabSnapshots(MaxSnapshots, this.cache) :
        this.LoadFromMemoryStorage();

    if (!snapshots.Any())
    {
        this.Report(LogMessage.SnapshotsAreEmpty);
        return;
    }

    var count = measurements.Count();
    this.Chart.Initialize((count + 1) * 2);

    foreach (var s in snapshots)
    {
        this.Chart.AppendSnapshot(s);
    }
}

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

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

কঠোর, অভিন্ন মানসম্পন্ন থাকার ফলে কোডটি পড়া সহজ হয়।

২. আমি এই মুহুর্তটি আবিষ্কার করেছি তার চেয়ে কেন তাদের মান আরও ভাল ?

বিশ্বজুড়ে কয়েক হাজার বিকাশকারী যদি কোনও মানক ব্যবহার করেন তবে কেবল এটির সাথে আটকে দিন। নিজের উদ্ভাবন করবেন না: এমনকি এটি আরও ভাল হলেও, আপনার নিজের ব্যবহার শুরু করা কয়েক লক্ষ হাজার বিকাশকারীকে না করে বৈশ্বিক মানকগুলিতে স্থানান্তর করা আপনার পক্ষে সহজ।

উদাহরণ: আমার নিজস্ব সংস্থায়, আমার কাছে ডাটাবেসে প্রাথমিক এবং বিদেশী কী এবং সূচকগুলির নামকরণের জন্য একটি নির্দিষ্ট সম্মেলন রয়েছে। নামগুলি দেখতে দেখতে:

  • [FK for Application: CreatedByApplicationId],
  • [IX for SessionIPAddress: SessionId] অথবা
  • [PK for RoleOfPassword: RoleId, PasswordId]

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

  • আমি যখন ডিবিএ ভাড়া নেব তখন তিনি এখনই তার কাজটি শুরু করার পরিবর্তে নতুন কনভেনশন শিখতে বাধ্য হবেন,

  • আমি ইন্টারনেটে কোডের টুকরোটি ভাগ করে নিতে পারি না: অদ্ভুতভাবে দেখা নামগুলি এমন লোকগুলিকে ব্যাহত করবে যারা আমার কোড পড়বে,

  • যদি আমি নিজের থেকে এটি ব্যবহার করার জন্য বাইরে থেকে কোড নিয়ে যাই তবে নামগুলি অভিন্ন করার জন্য আমি নামগুলি পরিবর্তন করতে বাধ্য হব,

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

৩. সুতরাং, মূলধন সম্পর্কে কী বলা যায়?

ক্ষেত্র বা স্থানীয় ভেরিয়েবলের চেয়ে সম্পত্তিগুলির বৃহত্তর স্কোপ বা দৃশ্যমানতা থাকে। একটি বড় বড় অক্ষর এবং ক্ষেত্র এবং ভেরিয়েবল দিয়ে সম্পত্তি তৈরি করা শুরু হয় - একটি ছোট্ট একটি দিয়ে এই দিকে যায়।

আপনি যদি সি # বিবেচনা করেন তবে এই যুক্তিটি যথেষ্ট সামঞ্জস্যপূর্ণ।

আপনি যদি জাভা বিবেচনা করেন, পদ্ধতিগুলি ছোট অক্ষর দিয়ে শুরু হয়, যা যুক্তি অনুসরণ করে না।

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

জাভাস্ক্রিপ্টে, ফাংশনগুলি একটি ছোট অক্ষর দিয়ে শুরু হয়, যদি না তাদের পূর্বের প্রয়োজন হয় new। এটি অন্যভাবে ভাল না? হতে পারে. আসল বিষয়টি হ'ল কয়েক বছর ধরে জাভাস্ক্রিপ্ট বিকাশকারীরা এই স্ট্যান্ডার্ডটি ব্যবহার করেছেন, বিপরীতে নয়। প্রতিটি বই পুনর্লিখন করুন এবং প্রতিটি বিকাশকারীকে স্টাইল পরিবর্তন করতে বাধ্য করুন এখন কিছুটা জটিল হবে।


1
কোড সম্পর্কে কম অংশে পাঠযোগ্য হওয়ার কারণ হিসাবে এটি কিছুটা আলাদা স্ট্যান্ডার্ড অনুসরণ করে, আমার কখনই এই সমস্যা হয়নি had কারও ভেরিয়েবলের নাম দেওয়া hookyDookyDooনা থাকলে নামকরণ বা কেসিং কনভেনশন পাঠযোগ্যতা থেকে বিরত থাকে। এছাড়াও, মনে রাখবেন যে আমি আমার কনভেনশনটিকে "আরও ভাল" বলছি না কারণ এটি সত্যিকারভাবে কোনও কিছু দেবদেব্যে আনেনি। শেষ অবধি, আমি আপনার বিষয়গুলি বুঝতে পারি না [সম্পত্তিগুলির একটি বৃহত্তর সুযোগ রয়েছে ... এই দিকে চলে যায়] । কেসিং কনভেনশনটির সাথে কী সুযোগ রয়েছে? কোন দিকে যাবে?
oscilatingcretin

23
@ ওসিলেটিংক্রিটিন, প্রশ্নটি কখনও নয় যে আপনার কখনও সেই সমস্যা হয়েছে কিনা, এটি আপনার সহকর্মীদের আছে কিনা । স্পষ্টতই তাদের আছে, বা তারা অভিযোগ করবে না।
কার্ল বিলেফেল্ড

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

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

6
@oscilatingcretin প্রচুর গবেষণা রয়েছে যা দেখায় যে ধারাবাহিকতা উল্লেখযোগ্যভাবে হ্রাস করে যা আপনি পড়ছেন এমন কিছু বোঝার জন্য প্রয়োজনীয় জ্ঞানীয় প্রচেষ্টাকে হ্রাস করে। নিয়মিত গদ্য, খারাপ বানান, দুর্বল বিরামচিহ্ন এবং লঘু ব্যাকরণের জন্য কারও পক্ষে এটি পড়াশোনা করা শক্ত হয়ে পড়ে - তারা সচেতনভাবে তা লক্ষ্য করে কিনা। কোডটিকে আরও শক্ত করে না ফেলে পড়া যথেষ্ট শক্ত - "সাধারণ মান" (আপনার প্রযুক্তির পছন্দসই স্ট্যাকের জন্য) আনুগত্য সামগ্রিক ধারাবাহিকতা বৃদ্ধি করে এবং কোড কী করে তার গুরুত্বপূর্ণ ব্যবসায়টিতে মনোনিবেশ করার জন্য নিউরনকে মুক্তি দেয়, পরিবর্তে কীভাবে এটা লিখিত.
বেভান

10

প্রযুক্তিগতভাবে, এটি কোনও ব্যাপার নয় (বা কমপক্ষে, বেশিরভাগ ভাষায় এটি আসে না)।

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

তারা সেরা হওয়ার কারণে নয়, তবে তারা প্রত্যেকে যা ব্যবহার করে তা হ'ল; যদি আপনি স্ট্যান্ডার্ডটির সাথে লেগে থাকেন তবে আপনার কোডটি অন্যান্য কোডগুলির সাথে সামঞ্জস্যপূর্ণ হবে যা আপনি শেষ পর্যন্ত ব্যবহার করবেন - লাইব্রেরি, সতীর্থের কোড, ভাষা বিল্ট-ইনগুলি ব্যবহার করে। ধারাবাহিক নামকরণ একটি শক্তিশালী উত্পাদনশীলতার অস্ত্র, কারণ এর অর্থ হ'ল আপনি যখন কোনও কিছুর নাম অনুমান করেন, আপনি সাধারণত সঠিকভাবে অনুমান করবেন। এটা file.SaveTo(), File.saveTo(), file.save_to(), FILE.save_to()? নামকরণের সম্মেলনটি আপনাকে জানাবে।

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

একটি মাত্র উদাহরণ: সি # তে, প্রকার এবং ভেরিয়েবল পৃথক নেমস্পেসে বাস করে; সংকলক পার্থক্য জানতে যথেষ্ট স্মার্ট। তবে সি তে, উভয় প্রকারের নামই একটি নেমস্পেস ভাগ করে, তাই আপনার একই স্কোপের মধ্যে একই নামের একটি প্রকার এবং ভেরিয়েবল থাকতে পারে না। এ কারণে, সি এর একটি নামকরণের কনভেনশন দরকার যা ভেরিয়েবলগুলির থেকে প্রকারভেদগুলিকে আলাদা করে, যখন সি # দেয় না।


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

4
@oscilatingcretin সবাই যখন একই কনভেনশন ব্যবহার করে, তখন এটি চলমান জটিলতা যুক্ত করে না, সম্মেলনটি প্রশ্নে থাকা ভাষার জন্য আপনার মানসিক মডেলের অংশ হয়ে যায় এবং সেই ভাষার ব্যবহারকে সহজ করে দেয়। এটি প্রদর্শনযোগ্য এবং পরিমাপযোগ্য।
মিঃমিন্দর

আমি আপনাকে ভোট দিতে যাচ্ছিলাম তবে আপনি প্রথমে বলবেন যে এটি কিছু যায় আসে না তাই আপনি কেন বিভিন্ন বিষয় অনুধাবন করে বিভিন্ন অনুচ্ছেদ লিখেন। আপনি যদি প্রথমে "কিছু যায় আসে না" মুছে ফেলেন আমি আপনাকে ভোট দিয়ে দেব।
তুলাইনস কর্ডোভা

10

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

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

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


বেশ কয়েকটি প্রকল্প যা আমি তাদের স্টাইল গাইডে এ জাতীয় কিছু নির্দিষ্ট করার জন্য কাজ করেছি।
anaximander

7

এটি আপনার নির্দিষ্ট সম্মেলনের চেয়ে কনভেনশনগুলির প্রশ্নের চেয়ে বেশি মনে হচ্ছে।

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

এটি পেশাদারিত্বের দিকে ফোটে: কখনও কখনও আমাদের ব্যক্তিগত স্টাইলগুলি একপাশে রেখে গণ-গ্রহণের জন্য আরও কার্যকর যেটি নিয়ে যেতে হবে। এটি সহযোগিতাকে উত্সাহ দেয় এবং বহিরাগত বাধাগুলি সরিয়ে দেয় যা সেখানে প্রথম স্থানে থাকা উচিত নয়।

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


"যদি আমি একটি মূলধনী পরিবর্তনশীল দেখতে পাই তবে একটি শিক্ষিত অনুমান নির্দেশ করবে যে এটি ব্যবহারের জন্য আমাকে তাত্ক্ষণিকভাবে প্রয়োজন।" আমি বুঝতে পারছি না. একটি মূলধন ভেরিয়েবলটি কীভাবে দেখলে আপনি মনে করেন যে এটি ব্যবহারের আগে এটি ইনস্ট্যান্ট করা উচিত? কারণ এটি একটি শ্রেণীর নাম মত দেখাচ্ছে? সুতরাং আপনি MyClass MyClass = nullএবং এর মধ্যে পার্থক্য জানেন না class MyClass { }?
অসিলেটিংক্রিটিন

3
হ্যাঁ, আমি পার্থক্যটি দেখতে পাচ্ছি। অস্পষ্টতা রোধে কনভেনশন বিদ্যমান। var car = new Car();আমার শেষ লাইন অনুযায়ী - কেন এটি সুস্পষ্ট না?
অ্যাড্রিয়ান স্নাইডার

3
@oscilatingcretin অবশ্যই একটি পার্থক্য আছে। কিন্তু কম্পিউটারের পার্সারের প্রয়োজন নেই এমন ভিজ্যুয়াল ইঙ্গিত থেকে মানব মস্তিষ্ক উপকৃত হয়। দেখে মনে হচ্ছে আপনি অধিবেশন / মানকগুলির প্রয়োজনীয়তার বিষয়ে প্রশ্ন করছেন ... যা একটি বৈধ, যদি আপনি প্রাথমিকভাবে জিজ্ঞাসা করেছেন তার চেয়ে আলাদা প্রশ্ন।
অ্যান্ড্রেস এফ।

2

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

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


1
আপনি কি আমার প্রশ্নটি পুরোপুরি পড়েছেন? শেষের দিকে একবার তাকান যেখানে আমি বলেছিলাম:NuggetCount all by itself suggests a property or local variable that is simply holding a value. To that last one, one may be tempted to say, "Ah ha! That is the question. Property or variable? WHICH IS IT?" To that, I'd reply with, "Does it really matter?"
oscilatingcretin

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

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

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

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

0

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

সুরক্ষিত বা আউট বা অন্য কোনও কিছুর সাথে লেনদেন করার সময় লাইনগুলি কিছুটা ঝাপসা হয়ে আসে।


-2

ভাষা (এর আনুষ্ঠানিক দিক এবং প্রচলিত সহ) আপনার চিন্তাগুলি সংগঠিত করার জন্য গুরুত্বপূর্ণ, এটি আপনার চিন্তাভাবনার উপর ক্ষমতা রাখে। সুতরাং এটি কেবল একটি স্টাইল থেকে অন্য স্টাইলে ট্রানজিট করতে ব্যথা।

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


-2

আমার জন্য এটি প্রত্যাশায় নেমে আসে।

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

সম্ভবত আপনার ক্ষেত্রে যা ঘটছে তা সম্ভবত।

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


-3

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


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

-3

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

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


3
এই অফারটি কোন কিছুরই সৃষ্টি পয়েন্ট উপর সারগর্ভ বলে মনে হচ্ছে না এবং পূর্বে 11 উত্তর ব্যাখ্যা
মশা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.