অ্যান্ড্রয়েড টিউটোরিয়ালের বেশিরভাগ ক্ষেত্র (শ্রেণীর সদস্য) কেন `m` দিয়ে শুরু হয়?


446

আমি উটের মামলার বিধি সম্পর্কে জানি তবে আমি এই নিয়মের সাথে বিভ্রান্ত। এটা কি জন্য দাঁড়াবেন? আমি একজন পিএইচপি বিকাশকারী। "আমরা" টাইপের ইঙ্গিত হিসাবে ভেরিয়েবলের প্রথম অক্ষর ব্যবহার করি, যেমন বুলিয়ান জন্য 'বি', পূর্ণসংখ্যার জন্য 'i' ইত্যাদি on

'আমি' একটি জাভা জিনিস? এটি মোবাইলের জন্য দাঁড়িয়ে? মিশ্র?


281
এই উপসর্গটি পাঠযোগ্যতা গোলমাল করা ছাড়া কিছুই করে না ...
ড্যাপেং

10
টাইপ ইঙ্গিত হিসাবে একটি উপসর্গ খারাপ নামক হাঙ্গেরীয় স্বরলিপি দেখতে thc.org/root/phun/unmaintain.html এবং kernel.org/doc/Documentation/CodingStyle
Muayyad Alsadi

10
কারণ তাদের সাথে জাভা কোড স্টাইলটি সম্পর্কে খুব বেশি জ্ঞান ছিল না
ভিক্টর আইনেস্কু

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

17
একটি বাস্তব বোকা উপসর্গ। আপনার আইডিই ব্যবহার করুন সেটার / গেটারস তৈরি করতে এবং আপনি getmName () এবং setmName () দিয়ে শেষ করবেন! জেনারেশন সেটার, গেটর, কনট্রাক্টর ইত্যাদির জন্য লম্বোকের মতো সরঞ্জামগুলি এম উপসর্গ তৈরি করবে। আমার বিকল্পে এম উপসর্গটি মান যুক্ত করে না এবং নামকরণ সম্মেলন থেকে সরানো উচিত।
ব্যবহারকারী এম 1433372

উত্তর:


552

এই স্বীকৃতিটি এওএসপি (অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্প) সহযোগীকারীদের কোড স্টাইল নির্দেশিকা থেকে এসেছে :

মাঠের নামকরণ কনভেনশনগুলি অনুসরণ করুন

  • অ-সরকারী, অ স্থিতিশীল ক্ষেত্রের নামগুলি মি। দিয়ে শুরু হয়।
  • স্থির ক্ষেত্রের নামগুলি এস দিয়ে শুরু হয়।
  • অন্যান্য ক্ষেত্রগুলি ছোট হাতের অক্ষর দিয়ে শুরু হয়।
  • সর্বজনীন স্ট্যাটিক চূড়ান্ত ক্ষেত্রগুলি (ধ্রুবক) হ'ল ALL_CAPS_WITH_UNDERSCORES।

নোট করুন যে লিঙ্কযুক্ত স্টাইল গাইডটি কোডটি অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্পে অবদান রাখার জন্য।

এটি পৃথক অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির কোডের জন্য কোনও স্টাইল গাইড নয়।


33
আকর্ষণীয় .. গুগল জাভা কোড স্টাইল আসলে এটি সম্পর্কিত এওএসপি কোড শৈলীর বিরোধিতা করে ।
গৌতম 1

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

4
গুগলের জাভা স্টাইল গাইডের বিরোধিতা করে - "নন-ধ্রুবক ফিল্ডের নামগুলি (স্ট্যাটিক বা অন্যথায়) লোয়ার ক্যামেলকেসে লেখা থাকে ... উদাহরণস্বরূপ, computedValues..."
অলিকএলজিন-কিলাকা

স্বতন্ত্র অ্যাপ্লিকেশনগুলির জন্য, আমি একটি দুর্দান্ত টিপ মনে করি যা অ্যাপ্লিকেশনটির নামের 'এম' এর পরিবর্তে ছোট হাতের অক্ষর ব্যবহার করার পরামর্শ দেয়।
7:52 এবোকোপ

4
1j6

83

প্রচুর কোডিং গাইড লাইনগুলি ক্লাসের 'সদস্যদের' জন্য এম ব্যবহার করে। সুতরাং আপনি যখন প্রোগ্রামিং করবেন আপনি স্থানীয় এবং সদস্য ভেরিয়েবলের মধ্যে পার্থক্য দেখতে পাবেন।


90
সমস্ত আধুনিক আইডিই স্থানীয় / সদস্যদের রঙ / ফন্ট দ্বারা পৃথক করে, যা mউপসর্গের চেয়ে আইএমএইচও উপায় বেশি পঠনযোগ্য ।
ডিজিট্রি লেজারকা

5
সম্মত হয়। আমি এমটি জিনিসটি খুব বিরক্তিকর মনে করি, তবে কেবলমাত্র ইন্টেলিজি দুর্দান্ত হওয়ার কারণে।
জাকট্যাকার্ডি


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

@ ডিজিট্রিলাজারকা নোটপ্যাড বা গিথুব এ কোড পড়ার বিষয়ে কী?
ব্যবহারকারী 924

57

mউপসর্গ কি ?

mমানে সদস্য ভেরিয়েবল বা ডেটা মেম্বার। mঅ-সরকারী এবং অ স্থির ক্ষেত্রগুলির জন্য উপসর্গ ব্যবহার করুন ।

কখন ব্যবহার করতে হবে?

private String mCityName;
private float mTemperature;

কখন ব্যবহার করবেন না?

public static int mFirstNumber;
public static final String mDATABASE_NAME;

আমি কি করবো?

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

উপসংহার

ব্যবহার করবেন? "হ্যাঁ" বা "না" আপনার ব্যক্তিগত পছন্দ।


1
আপনার কাছে জন্য ব্যবহার করতে পারেন public static int, কিন্তু ব্যবহার sপরিবর্তে m: public static int sFirstNumber;দেখুন stackoverflow.com/a/49453184/7767664
user924

31

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


9
আমি যুক্তি দিয়ে বলব যে একটি আধুনিক আইডিই দিয়েও কোড সমাপ্তি ব্যবহার করার সময় একই শ্রেণীর জন্য সমস্ত সদস্য ভেরিয়েবলগুলি একই জায়গায় আনার উদ্দেশ্যে m বা m_ এর সাথে সদস্যদের উপসর্গ করা ভাল। এর অর্থ হ'ল আপনি যখন ক্লাসে কাজ করছেন আপনি সমস্ত সদস্যের একটি তালিকা পেতে কেবল m_ + ctrl স্পেসে আঘাত করতে পারেন।
নাইলার

38
নাইলার, আপনি এটি ব্যবহার করে এটি অর্জন করতে পারেন। + সিটিআরএল স্পেস :)
রোমেন গাই

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

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

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

9

ক্লিন কোড বই অনুসারে, এটি একটি পরিষ্কার কোড নয়।

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


9

আপনার মত সমস্যা থাকলে

আপনার আইডিই সেটার / গেটার তৈরি করতে এবং আপনি getmName () এবং setmName () দিয়ে শেষ করেন

পরবর্তী করতে ভুলবেন না ( সেটিংস / সম্পাদক / কোড স্টাইল / জাভা / কোড জেনারেশন ):

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

আপডেট: আমরা কোটলিনে এর মতো কিছু ব্যবহার করি না (তাই এটিতে স্যুইচ করা আরও ভাল এবং উপসর্গগুলি আর ব্যবহার করবেন না)


6

আমি মনে করি এটি খুব স্বতন্ত্র যে কোন কোড কনভেনশনগুলি ব্যবহৃত হয়। আমি নিম্নলিখিত উপসর্গের সাথে আমার ভেরিয়েবলের নাম রাখতে পছন্দ করি:

  • m - পদ্ধতি ভেরিয়েবল
  • সি - ক্লাস ভেরিয়েবল
  • p - প্যারামিটার ভেরিয়েবল

তবে আমি অনুমান করি যে প্রতিটি প্রোগ্রামারের নিজস্ব স্টাইল রয়েছে।


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

4

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

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

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


3

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


2

যেমনটি আগেই উল্লেখ করা হয়েছিল, এটি বিভিন্ন চলকগুলির জন্য স্টাইলযুক্ত। তবে এটি কোড-প্রজন্মের জন্যও খুব দরকারী। আপনি যদি "Alt + Insert" টিপেন তবে আপনি বেশিরভাগ সাধারণ কোড প্রজন্মের বৈশিষ্ট্যের জন্য উইন্ডোজ পাবেন। আপনি যদি আপনার ভেরিয়েবলের জন্য "get" পদ্ধতি উত্পন্ন করতে চান তবে আপনি পাবেন।

public class Foo{
   private int bar;

   public int getBar(){
       return this.bar;
   }

   public void setBar(int bar){
       this.bar = bar; 
   }

}

তবে আপনি "মি, এস" ঘোষণা করলে আপনি পাবেন:

public class Foo{
private int mBar;

public int getBar(){
   return mBar;
}

public void setBar(int bar){
   mBar = bar;
}
}

এটি স্বয়ংক্রিয়ভাবে উত্পন্ন হবে এবং আপনার নির্মাণকারীর থেকে "এম" বা "গুলি" মুছে ফেলা হবে, পদ্ধতিগুলির নাম নির্ধারণ করুন। এর পরে ক্ষেত্রের জন্য "পান" এবং "সেট" "এম" ছাড়াই উত্পন্ন হবে। Andoroid Fle-> সেটিং-> কোড স্টাইল-> জাভা-> কোড জেনারেশন। এবং একটি ছবি হিসাবে করা। সম্ভবত এটি সাহায্য করবে। আমার ইঞ্জিনের জন্য দুঃখিত। অ্যান্ড্রয়েড কনফিগার করুন


2

মনে হয় কিছু 'প্রাথমিক' অ্যান্ড্রয়েড / গুগল ইঞ্জিনিয়ারদের 'মি' দিয়ে সদস্য ভেরিয়েবল শুরু করার জন্য এটি ব্যক্তিগত পছন্দ ছিল এবং তাই তারা এটির প্রস্তাব দিয়েছিল।

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

Https://code.google.com/p/android/issues/detail?id=226814 বিধি সরানোর জন্য দয়া করে এই আবেদনে আপনার সমর্থনের মন্তব্যটি যুক্ত করুন


2

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


1

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

    private double mRadius;

তবে একই সাথে আপনি যে চেনাশোনা শ্রেণীর ভিতরে থাকতে পারেন তার মধ্যে সমস্ত চেনাশোনাকে নজর রাখার জন্য একটি কাউন্টার চান

    private static int sCircleCount;

এবং তারপরে আপনার বর্তমানে থাকা চেনাশোনাগুলির সংখ্যা বাড়াতে এবং হ্রাস করার জন্য কেবল স্থির সদস্য রয়েছে।


1

নিম্নলিখিত নামকরণের সম্মেলনগুলি হল,

  • অ-সরকারী, অ স্থিতিশীল ক্ষেত্রের নামগুলি মি। দিয়ে শুরু হয়।
  • স্থির ক্ষেত্রের নামগুলি এস দিয়ে শুরু হয়।
  • অন্যান্য ক্ষেত্রগুলি ছোট হাতের অক্ষর দিয়ে শুরু হয়।
  • সর্বজনীন স্ট্যাটিক চূড়ান্ত ক্ষেত্রগুলি (ধ্রুবক) হ'ল ALL_CAPS_WITH_UNDERSCORES।

উদাহরণ:

public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.