আরে ভেরিয়েবলের নামকরণের জন্য আপনার পছন্দসই স্টাইলটি কী? [বন্ধ]


110

ভেরিয়েবল এবং ফাংশনগুলির নামকরণের জন্য কোন সম্মেলনগুলি আপনি আর কোডে সমর্থন করেন?

আমি যতদূর বলতে পারি, এখানে বিভিন্ন আলাদা কনভেনশন রয়েছে, এর সবগুলিই ক্যাকোফোনাস সম্প্রীতিতে সহাবস্থান করে:

1. পিরিয়ড বিভাজক ব্যবহার, উদাহরণস্বরূপ

  stock.prices <- c(12.01, 10.12)
  col.names    <- c('symbol','price')

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

কনস: অবজেক্ট-ওরিয়েন্টেড কনোটেশন সহ রাইফ এবং আর বিবিতে বিভ্রান্তিকর

2. আন্ডারস্কোর ব্যবহার

  stock_prices <- c(12.01, 10.12)
  col_names    <- c('symbol','price')

পেশাদাররা: অনেক প্রোগ্রামিং ল্যাংগুলিতে একটি সাধারণ সম্মেলন; হ্যাডলি উইকহ্যামের স্টাইল গাইড দ্বারা অনুগ্রহ করে এবং ggplot2 এবং প্লেয়ার প্যাকেজগুলিতে ব্যবহৃত হয়।

কনস: programতিহাসিকভাবে আর প্রোগ্রামাররা ব্যবহার করে না; ইমাকস-স্পিকস-স্ট্যাটিস্টিক্সে '<-' অপারেটরে বিরক্তিকরভাবে ম্যাপ করা হয়েছে ('এসএস-টগল-আন্ডারস্কোর' দিয়ে পরিবর্তনযোগ্য)।

৩. মিশ্র মূলধন (উট কেস) এর ব্যবহার

  stockPrices <- c(12.01, 10.12)
  colNames    <- c('symbol','price')

পেশাদাররা: বেশ কয়েকটি ভাষা সম্প্রদায়ের ব্যাপক গ্রহণযোগ্যতা রয়েছে বলে মনে হয়।

কনস: সাম্প্রতিক নজির রয়েছে, তবে historতিহাসিকভাবে ব্যবহৃত হয়নি (আর বেস বা এর নথিতে হয়)।

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

আর প্যাকেজগুলির জুড়ে ধারাবাহিক শৈলীর অভাব বিভিন্ন স্তরে সমস্যাযুক্ত। বিকাশকারী দৃষ্টিকোণ থেকে, এটি অন্যের কোড বজায় রাখা এবং প্রসারিতকে শক্ত করে তোলে (উদাহরণস্বরূপ যেখানে এর শৈলীটি আপনার নিজের সাথে সামঞ্জস্যপূর্ণ নয়)। আর ব্যবহারকারীর দৃষ্টিকোণ থেকে, অসঙ্গতিপূর্ণ বাক্য গঠনটি আর এর শেখার কার্ভকে আরও বাড়িয়ে তোলে, কোনও ধারণাটি প্রকাশ করার উপায়গুলি গুণ করে (যেমন date তারিখের ingালাই ফাংশন হিসাবে তারিখ (), as.date (), বা as_date ()? না, এটি হিসাবে রয়েছে। তারিখ ())।


1
এছাড়া ম্যাটল্যাব শৈলী উদাহরণ স্বরূপ ধরে alllowercaseপরিবর্তনশীল নাম এবং সরল-থেকে-সমীকরণ খুব স্বল্প নাম প্রচুর ( x, y, ইত্যাদি)।
রিচি কটন

5
আন্ডারস্কোরগুলি পাইথনের মতো, তাই আমি আন্ডারস্কোরগুলি ব্যবহার করার প্রবণতা রাখি। ESS ঠিক করা উচিত, এটি সত্যিই নির্বোধ।
ব্রেন্ডন ওকননোর

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

2
উট কেসে সমস্যাও রয়েছে, যেমন আদর্শ উটের কেস ImfDataTransformedবা প্রাকৃতিক বর্ধিত সংস্করণটি IMFDataTransformedআমার পছন্দের টগল্লেকামেলকেসে পড়ার মতো সহজ নয়: IMFdataTransformed...
প্যাট্রিক

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

উত্তর:


81

পূর্ববর্তী উত্তম উত্তম তাই এখানে যোগ করা সামান্য:

  • আন্ডারস্কোর হয় ইএসএস ব্যবহারকারীদের জন্য সত্যই বিরক্তিকর; প্রদত্ত যে ESS বেশ বিস্তৃতভাবে ব্যবহৃত হয়েছে আপনি ESS ব্যবহারকারীদের দ্বারা রচিত কোডে অনেকগুলি আন্ডারস্কোর দেখতে পাবেন না (এবং এই সেটটিতে আর কোরের পাশাপাশি ক্র্যান লেখকগণ, হ্যাডলির সত্ত্বেও বহির্গমন রয়েছে);

  • বিন্দুগুলিও খুব খারাপ কারণ তারা সাধারণ পদ্ধতি প্রেরণে মিশে যেতে পারে; আমি বিশ্বাস করি যে একবার আমি আর এর তালিকার একটিতে এই প্রসঙ্গে মন্তব্যগুলি পড়েছি: বিন্দুগুলি একটি historicalতিহাসিক নিদর্শন এবং এটি আর উত্সাহিত হয় না;

  • সুতরাং আমাদের কাছে একটি পরিষ্কার বিজয়ী এখনও শেষ রাউন্ডে দাঁড়িয়ে আছে: উটকেসেস। আমি 'আর সম্প্রদায়ের নজিরের অভাবের' দাবিতে সত্যই একমত কিনা তাও আমি নিশ্চিত নই।

এবং হ্যাঁ: বাস্তববাদ এবং ধারাবাহিকতা ট্রাম্পের মতবাদ। সুতরাং যা কিছু কাজ করে এবং সহকর্মী এবং সহ-লেখকরা ব্যবহার করেন। সর্বোপরি, আমাদের কাছে এখনও বিতর্ক করার জন্য সাদা-স্পেস এবং ব্রেস রয়েছে :)


6
+1 ভাল বলেছেন! [যদি কেবল মূল দলই একটি নির্দিষ্ট স্টাইল গাইড রাখে; আমি মনে করি এটি ইতিমধ্যে তাদের অন্তর্নিহিত ব্যবহারকে আরও বিশ্বাসযোগ্যতা দেবে]]
শেন

1
আমি কেবল মিশ্র মামলার প্রতি আমার পক্ষপাতিত্বের ভিত্তিতে ভুল ধারণা তৈরি করতে পারি তবে আমি বিশ্বাস করি যে আমি যখন তার পক্ষে কাজ করছিলাম তখন আরজি সর্বদা এটি ব্যবহার করতেন। আমি অনুমান করি যে আরজির পক্ষে ভাল যা আমার পক্ষে ভাল!
জিওফজেন্ট্রি

জিওফ: যেতে কোনও খারাপ নিয়ম নয় :)
ডার্ক এডেলবুয়েটেল

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

1
@ ডির্ক - আমি আপনার প্রস্তাবের উপর ভিত্তি করে উট কেসিংয়ের দিকে যাত্রা শুরু করার পরিকল্পনা করছি, তবে আমি যদি জানতে আগ্রহী যে আপনি কেন ?make.namesডট বিচ্ছিন্ন নামগুলি পছন্দ করেন বলে মনে করছেন?
ডেভিড লেবাউর

73

আরআর জার্নালে গ্রহণযোগ্য কনভার্শনগুলি যা আসলে সিআরএএন-তে ব্যবহৃত হয় সে সম্পর্কে আমি একটি সমীক্ষা করেছি :) ফলাফলগুলি সংক্ষেপে এখানে একটি গ্রাফ দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

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

সম্পূর্ণ কাগজ এখানে:

http://journal.r-project.org/archive/2012-2/RJournal_2012-2_Baaaath.pdf


2
শতকরা হার কীভাবে ১০০% যোগ করবে না?
e9t

10
@ e9t কারণ একটি নাম অনেক নামকরণ কনভেনশনের সাথে মেলে। printআপারকামেল এবং .Od_style ব্যতীত সমস্ত কনভেনশনের সাথে মেলে।
রাসমাস বুথ

এই কাগজটি আপডেট করা ভাল লাগবে।
স্যামুয়েল-রোজা

34

বুঝি সব পথ! জনপ্রিয় মতামতের বিপরীতে, বেস আরে বেশ কয়েকটি ফাংশন রয়েছে যা আন্ডারস্কোর ব্যবহার করে। grep("^[^\\.]*$", apropos("_"), value = T)তাদের সব দেখতে দৌড়া ।

আমি কোডিংয়ের অফিসিয়াল হ্যাডলি স্টাইল ব্যবহার করি ;)


1
যে ঝরঝরে! আমি এপ্রোপস ফাংশন সম্পর্কে আগে অবগত ছিলাম না । এটি আমার জন্য আর 2.9.0 তে 10 ফাংশন প্রদান করে; আমি খুব কমই বলি যে এটি একটি বাধ্যবাধকতার ঘটনা। আন্ডারস্কোরগুলির জন্য আপনার যুক্তি কী হবে যখন তারা স্পষ্টভাবে আর সংখ্যালঘুতে থাকবে?
শেন

3
ঠিক আছে এটি ২.১০.০১ তে 16, সুতরাং সংস্করণে এটি 60% বৃদ্ধি;) আমি মূলত তাদের পছন্দ করি কারণ তারা আমাকে রুবির কথা মনে করিয়ে দেয়; উটকেস জাভা সম্পর্কে মনে করিয়ে দেয়।
হ্যাডলি

6
হ্যাডলি, আমার হৃদয় আপনার আন্ডারস্কোর বিদ্রোহকে সমর্থন করার জন্য বলেছে, তবে আমার মাথাটি সম্প্রদায়ের মানকে সম্মান করতে এবং উটকেসকে হ্যাঁ বলেছে। :( তবে সম্ভবত স্ব-ধারাবাহিকতা এটাই গুরুত্বপূর্ণ
এগুলি মেডিস্কল

5

আমি যখন উটটি সত্যিকার অর্থে কিছু অর্থ সরবরাহ করে - যেমন ডেটাটাইপ something

dfProfitLoss, যেখানে df = ডেটাফ্রেম

অথবা

vdfMergedFiles (), যেখানে ফাংশনটি একটি ভেক্টর গ্রহণ করে এবং একটি ডেটাফ্রেম আটকায়

যদিও আমি মনে করি _ সত্যিই পঠনযোগ্যতার সাথে যুক্ত করেছে, কেবলমাত্র নামগুলি -_ _ বা অন্যান্য অক্ষর ব্যবহার করে অনেকগুলি সমস্যা রয়েছে বলে মনে হচ্ছে। বিশেষত যদি আপনি বেশ কয়েকটি ভাষায় কাজ করেন।


3

এটি ব্যক্তিগত পছন্দের দিকে নেমে আসে তবে আমি গুগল স্টাইল গাইড অনুসরণ করি কারণ এটি মূল দলের স্টাইলের সাথে সামঞ্জস্যপূর্ণ। আর বেস বেসে ভেরিয়েবলের আন্ডারস্কোর দেখতে পেলাম।


3

আমি এখানে ইঙ্গিত হিসাবে:

কীভাবে সনাক্তকারীদের ভারবোসিটি কোনও প্রোগ্রামারের পারফরম্যান্সকে প্রভাবিত করে?

আপনার সহকর্মী / ব্যবহারকারীরা যদি অ-নেটিভ স্পিকার হয় তবে আপনার পরিবর্তনশীল নামগুলি কতটা বোধগম্য তা মনে রাখার মতো worth

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


2

অন্যরা যেমন উল্লেখ করেছে, আন্ডারস্কোরগুলি অনেক লোককে স্ক্রু করবে। না, এটি ভারবোটেন নয় তবে এটিও বিশেষভাবে সাধারণ নয়।

বিভাজক হিসাবে বিন্দু ব্যবহার করে এস 3 ক্লাস এবং এর মতো কিছুটা লোমশ হয়।

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


1

সাধারণত আমি আন্ডারস্কোর এবং মিশ্র মূলধন (উট কেস) এর ix ব্যবহার করে আমার ভেরিয়েবলগুলির নাম পরিবর্তন করি। সরল ভেরিয়েবলগুলি আন্ডারস্কোর ব্যবহার করে নামকরণ করছে, উদাহরণস্বরূপ:

PSOE_votes -> PSOE (স্পেনের রাজনৈতিক দল) এর পক্ষে ভোটের সংখ্যা।

PSOE_states -> শ্রেণিবদ্ধ , PSOE state অ্যারাগন, আন্দালুসিয়া, ...) জিতেছে এমন রাষ্ট্রকে নির্দেশ করে

PSOE_political_force -> শ্রেণিবদ্ধ, PSOE- এর রাজনৈতিক দলগুলির মধ্যে অবস্থান নির্দেশ করে indicates প্রথম, দ্বিতীয়, তৃতীয়)

PSOE_07 -> ২০০ PS-এ PSOE_votes + PSOE_states + PSOE_political_force এর ইউনিয়ন (এইচ ইডার -> ভোট, রাজ্য, অবস্থান )

আমার পরিবর্তনশীল যদি আমি একটি মিশ্র মূলধন ব্যবহার করে এক / দুটি ভেরিয়েবলগুলিতে প্রয়োগ ফাংশনের ফলাফল হয়।

উদাহরণ:

অবস্থান এক্সস্টেটস <- xtabs (~ স্টেটস + পজিশন, PSOE_07)


0

আমার মিশ্র ক্যাপিটালগুলির জন্য একটি পছন্দ রয়েছে।

তবে আমি প্রায়শই পিরিয়ড ব্যবহার করি ভেরিয়েবল টাইপ কি তা বোঝাতে:

মিশ্রক্যাপিটালস.ম্যাট একটি ম্যাট্রিক্স। মিশ্রক্যাপিটালস.এলএম একটি লিনিয়ার মডেল। মিশ্রক্যাপিটালস.লস্ট একটি তালিকা অবজেক্ট।

ইত্যাদি।

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