গোলংয়ে "এটি" ব্যবহার করুন


12

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

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

আমি ব্যক্তিগতভাবে সর্বদা শনাক্তকারী হিসাবে "এটি" ব্যবহার করেছি কারণ আমি যখন ফাংশনটি লিখি এবং সম্পাদনা করি তখন আমি যা কাজ করছি তার ফোকাস হ'ল "এটি"। এটি ঠিক শোনাচ্ছে, এবং (আমার কাছে কমপক্ষে) এটি উপলব্ধি করে।

যদি নামটি বর্ণনামূলক না প্রয়োজন, এটির ভূমিকাটি সুস্পষ্ট, এবং এটি কোনও ডকুমেন্টারি উদ্দেশ্যে কাজ করে না , তবে "এই" এর ব্যবহারটিকে কেন অস্বীকার করা হবে?


3
আরও উত্তরের সাথে অনুরূপ প্রশ্ন: stackoverflow.com/questions/23482068
ট্রেন্টন

উত্তর:


11

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

মোটকথা, আপনি যখন এই জাতীয় পদ্ধতি লিখবেন:

func (m *MultiShape) area() float64 {
  ...
}

এটি প্রায় ঠিক একই জিনিস যেমন একটি ফাংশন লিখতে হিসাবে:

func area(m *MultiShape) float64 {
  ...
}

পার্থক্যটি হ'ল আমরা কীভাবে ফাংশন / পদ্ধতিটিকে কল করি তার একটি সামান্য বাক্য গঠন।

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

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

আমি আমার নিজস্ব স্টাইল গাইড তৈরি করতে যাননি যথেষ্ট লিখেছি, তবে ব্যক্তিগতভাবে আমি সম্ভবত thisতারা যে স্ট্রাক্টটি পেয়েছি তার একই ফাইলে সংজ্ঞায়িত পদ্ধতিগুলিতে এবং অন্য ফাইলগুলি থেকে স্ট্রাক্টগুলিতে সংযুক্ত পদ্ধতিগুলির সাথে আরও কিছু বর্ণনামূলক রিসিভারের নাম ব্যবহার করব ।


এটি একটি ভাল ব্যাখ্যা, আমি মনে করি আমি সি # এবং অন্যান্য ওওপি ভাষাগুলিতে অভ্যস্ত তাই আমি আমার পরিচিত সম্মেলনে ফিরে যাচ্ছি।
আদম

1
@ অ্যাডাম আমি thisঅন্য কোনও কারণ না থাকলে নিজেকে এড়াতে চাই যে আমি কোনও traditionalতিহ্যবাহী ওওপি ভাষায় নেই।
মাইকেল হ্যাম্পটন 0

4
"এই" এবং "রিসিভার" এর মধ্যে কোনও সত্যিকারের পার্থক্য নেই (এবং দয়া করে "ম্যাজিক" শব্দের অপব্যবহার বন্ধ করুন - একটি উচ্চ স্তরের প্রোগ্রামিং ভাষার প্রতিটি বৈশিষ্ট্যকে "যাদু" বলা যেতে পারে, এটি কোনও নেতিবাচক করে তোলে না, আপনার প্রচেষ্টাটি "ম্যাজিক" হওয়ার জন্য "এটি" বাছাই করা কোনও লাভ হয় না)
এমভিএমএন

6

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


কোনও ব্যাখ্যা ছাড়াই, অন্য কেউ যদি বিপরীত মতামত পোস্ট করে তবে এই উত্তরটি অকেজো হতে পারে। উদাহরণস্বরূপ, যদি কেউ পোস্টগুলি দাবী "আমি এই শৈলী নির্দেশিকা দ্বারা বিশ্বাস করছি এবং আমার মনে হয় এটা বেশী ভালো this, meবা self" , কিভাবে এই উত্তর দিতে সাহায্য পাঠক দুটো বিপরীতধর্মী মতামত নিতে হবে? বিবেচনা করুন সম্পাদন করা একটি ভাল আকৃতি সেটিকে ing পূরণের জন্য, কিভাবে উত্তর দিতে নির্দেশিকা
মশা

আমি মনে করি আমি কী বলতে চাই তা স্পষ্ট করে দিয়েছি।
কিয়ান চেন

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

0

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

উদাহরণস্বরূপ জাভাস্ক্রিপ্টে, একটি নিয়ন্ত্রণ মডিউল একটি ডায়ালগ শুরু করতে পারে এবং এর জন্য কোনও onLoadফাংশন ইনলাইন ঘোষণা করতে পারে। তবে এই মুহুর্তে, অন্য কোডারের পক্ষে ডায়ালগটি নয়, নিয়ন্ত্রণ মডিউলটি উল্লেখ করার জন্য thisভিতরে ভুল ব্যাখ্যা করা খুব সহজ হতে পারে onLoad; ্য মচক্সফন্দক্স. নিয়ন্ত্রণটিকে যেমন হিসাবে ctrlডায়ালগ হিসাবে উল্লেখ করা হয় তবে এড়ানো যায় dg


3
আমি ডাউনভোটার নই, তবে thisজাভাস্ক্রিপ্টের বেশিরভাগ বিভ্রান্তিকর আচরণ কেবল গো-র ক্ষেত্রে প্রযোজ্য নয়, তাই আমি অনুমান করছি যে এজন্যই।
Ixrec

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