কেবলমাত্র # # এর খারাপ অভ্যাস হিসাবে বিবেচিত কেসিংয়ের মাধ্যমে পরামিতিগুলির নামগুলি টাইপ নামের সাথে পৃথক হয়?


43

আমি ক্লাসে থাকা বৈশিষ্ট্যের সাথে মেলে এমন পরামিতি নামের সাথে সম্পর্কিত প্রশ্নগুলি দেখতে পাচ্ছি, তবে সি # তে আবরণ ব্যতীত প্যারামিটারের নামের মতো প্যারামিটারের নাম ব্যবহার করে আমি কিছুই খুঁজে পাচ্ছি না। এটি আমি লঙ্ঘন বলে মনে করি না তবে এটি কী খারাপ অভ্যাস হিসাবে বিবেচিত হয়? উদাহরণস্বরূপ, আমার নিম্নলিখিত পদ্ধতি রয়েছে

public Range PadRange(Range range) {}

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

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

আমার পদ্ধতির স্বাক্ষরে প্রচুর "রেঞ্জ" চলছে, সুতরাং এটি এই মনস্তাত্ত্বিক দূরত্বের সাথে সম্পর্কিত হতে পারে বলে মনে হচ্ছে। এখন, আমি অনেক বিকাশকারী নিম্নলিখিতটি করতে দেখছি

public Range PadRange(Range myRange) {}

আমার ব্যক্তিগতভাবে এই সম্মেলনের জন্য শক্তিশালী বিরক্তি রয়েছে। পরিবর্তনশীল নামের সাথে "আমার" উপসর্গ যুক্ত করা কোনও অতিরিক্ত প্রসঙ্গ সরবরাহ করে না।

আমি নিম্নলিখিতটিও দেখছি

public Range PadRange(Range rangeToPad) {}

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

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


35
আপনি যদি আরও বর্ণনামূলক পরামিতি নিয়ে আসতে না পারেন Range rangeতবে ভাল।
রবার্ট হার্ভে

21
এই পরিস্থিতিতে, আইডিই 'রেঞ্জ' এবং 'রেঞ্জ' আলাদাভাবে রঙ করবে তাই এটি দেখতে খুব সহজ যে এটির ধরণ এবং একটি একটি পরিবর্তনশীল নাম।
26

10
হ্যাঁ, মনে আছে। এটি বিবেচনা হিসাবে তাদের নকশা নির্দেশিকাতে। "কোনও সম্পত্তি তার ধরণের নামে একই নাম প্রদান করা বিবেচনা করুন" " ডকস.মাইক্রোসফট.এইন
জেসন টাইলার

11
এছাড়াও সূক্ষ্ম: Range r(কমপক্ষে একটি স্বল্প পদ্ধতির শরীরের জন্য) এবং Range toPad
বার্গি

19
আমি সর্বদা "আমার" উপসর্গটিকে এমন কিছু হিসাবে বিবেচনা করি যা উদাহরণ কোডে করা হয় যেখানে এটি পাঠকের কাছে বোঝানো হত যে প্রসঙ্গের উপর নির্ভর করে একটি নাম পরিবর্তন করা উচিত। এটি এমন কোনও কিছু নয় যা আসলে কোনও বাস্তব কোডে শেষ হওয়া উচিত।
কেপেক্স

উত্তর:


100

এটা overthink করবেন না, Range rangeঠিক আছে। আমি সি # তে 15 বছরেরও বেশি সময় ধরে এই জাতীয় নাম ব্যবহার করি এবং সম্ভবত সি ++ এর চেয়ে অনেক বেশি সময় ধরে, এবং এর থেকে প্রকৃত কোনও ত্রুটি কখনই অনুভব করি নি।

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


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

17
আমি Wack(Bozo bozoToBeWacked)ভেরিয়েবল নামের একটি অপ্রয়োজনীয় উদাহরণ হিসাবে বিবেচনা করব যা পদ্ধতিটি নিজেই প্রকাশ করে (এবং এইভাবে মূল প্রশ্নে অনাকাঙ্ক্ষিত)। Wack(Person bozo)এটি আরও শব্দার্থগতভাবে মূল্যবান, তবে এটি বোঝা যাচ্ছে যে এটি কেবল বোসোদের জেগে উঠার প্রত্যাশা।
মিরাল

2
কেস আপনি দ্বিতীয় অনুচ্ছেদে উল্লেখ, আমি প্রায়ই ভালো কিছু করার জন্য পরামিতি নামান্তর হবে initialRange। এটি এখনও খুব জেনেরিক তবে প্রায় একই স্তরের মতো বিপর্যয় নেই myRange
জাকজ

@ মিরাল: এটি ক্ষেত্রে আরও প্রাসঙ্গিক হয়ে ওঠে Punch(Bozo punchingBozo, Bozo bozoToBePunched)। যখন আপনাকে একাধিক জিনিসের মধ্যে পার্থক্য করতে হয় (যা শব্দার্থগতভাবে একই শব্দগুলির সাথে বর্ণনা করা হয়) তখন নামকরণ আরও প্রাসঙ্গিক। ওপির পরামর্শটি Range rangeToPadতার একটি প্যারামিটার পদ্ধতির উদাহরণে প্রয়োজনীয় নয়, তবে এটি এমন একটি পদ্ধতির জন্য অবিশ্বাস্যরূপে প্রয়োজনীয় হতে পারে যা বেশ কয়েকটি Rangeবস্তু গ্রহণ করে।
ফ্ল্যাটার

7
@ ফ্লাটার কাজটি Punch(Bozo source, Bozo target)করবে
টমাস আইয়ুব

17

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

this.range = range;

এবং আমার সাধারণত রেঞ্জ নামে সম্পত্তি থাকবে।

এগুলি সমস্ত একই জিনিস, কেবল প্রসঙ্গে ভিন্ন ভিন্ন তাই একক নাম বজায় রাখা অর্থপূর্ণ এবং আপনাকে কেবল একটি নাম মনে রাখতে হবে। এটি একটি জিনিস, পার্থক্যগুলি সম্পূর্ণ প্রযুক্তিগত।

"এটির" সাথে পুরোপুরি যোগ্যতার সদস্যদের সাথে আপনার কঠোর হওয়া উচিত। যদিও, তবে স্টাইলকপ এটিই।

স্টাইলকপ সাইড নোট

বিতর্কের নিশ্চয়তা!

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

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

"এটি আরও চরিত্র!" সিরিয়াসলি? "সংকলন সময় আকাশ ছোঁয়া হবে!" সিরিয়াসলি? "টাইপ করার সময় আমার গোলাপী তুলতে হবে!"। যেন টাইপিং টাইমের মোট বিকাশের সময়ে কোনও তাত্পর্য থাকে।

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

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

আপনি যদি এটিতে নতুন হন: এটি সাধারণত এক বা দুই সপ্তাহের জন্য আপনাকে ক্ষোভিত করে তোলে এবং তারপরে আপনি এটি পছন্দ করবেন।


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

12
আমি @ ডেভিড আর্নোর সাথে সম্মতি জানাই। 'এটি' খাঁটি শব্দ মাত্র। 'রেঞ্জ' একটি সম্পত্তি, '_রেঞ্জ' একটি ক্ষেত্র এবং 'পরিসর' একটি প্যারামিটার।
26

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

6
আমার আইডিই ফায়ারবোলগুলিকে গুলি করবে তবে দ্বিতীয়টি আমি নিজেই একটি পরিবর্তনশীল নিযুক্ত করবো।
কোইকজে

21
@ ডেভিড আর্নো কে "গোলমাল" এর শব্দের চেয়ে কেন বেশি পছন্দ করবেন _তা বোঝানোর জন্য কেয়ার this.? আমি যুক্তি দিয়ে বলতে পারি যে একটির দ্বারা ভাষা প্রয়োগ করা হয়েছে (এবং সাধারণত সিনট্যাক্স হাইলাইট করা থাকে) অন্যটিতে থাকে না।
ক্লিন্ট

9

নামকরণের পদ্ধতি, পরামিতি এবং ভেরিয়েবল সম্পর্কে আমার স্ব-গাইডেন্স বেশ সহজ:

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

সুতরাং আমার মতে অনুকূল পদ্ধতিটির স্বাক্ষরটি হ'ল:

Range Pad(Range toPad)

পদ্ধতির নামটি সংক্ষিপ্ত করা স্ব-ব্যাখ্যামূলক।

প্যারামিটারের নামটি toPadতাত্ক্ষণিকভাবে পাঠককে বলে যে প্যারামিটারটি সম্ভবত প্যাডড করে স্থানে পরিবর্তিত হতে চলেছে, তারপরে ফিরে আসবে। বিপরীতে, নামের একটি পরিবর্তনশীল সম্পর্কে কোনও অনুমান করা যায় না range

তদুপরি, পদ্ধতির আসল অংশে, Rangeপ্রবর্তিত অন্য যে কোনও ভেরিয়েবলগুলি তাদের অভিপ্রায় অনুসারে নামকরণ করা উচিত (যাতে) সেই নামকরণের কনভেনশনগুলিতে আপনার থাকতে পারে paddedএবং unpadded... toPadজাস্ট rangeথাকে না এবং জেল হয় না।


3
padded/ unpaddedস্থানীয় অপরিবর্তনীয় ভেরিয়েবলগুলির জন্য ভাল শোনাচ্ছে। তবে যদি কোনও পরিবর্তনীয় toPadপ্যারামিটার থাকে, তবে প্যাডিংয়ের পরে নামটি toPadআর ফিট হয় না (যদি না ফলাফলটি অবিলম্বে ফিরে না আসে)। আমি বরং Range rangeএই ক্ষেত্রে অনড় থাকি ।
কেপেক্স

@ কেপ্প আমি এটিকে কেবল ফোন করব result। এটি পায় পরিবর্তিত এবং ফিরে । নামটি পূর্বের নাম থেকে পরিষ্কার এবং পূর্বের অনুসারে, একটি অযৌক্তিক যুক্তি ফিরিয়ে দেওয়ার কোনও মানে হয় না।
মার্টিনাস

স্বাক্ষর থেকে, Padপদ্ধতিটি a প্রদান করে Range। এটি আমার কাছে ইঙ্গিত দেয় যে আমি যে পাস করেছি সে সংরক্ষণ করা হবে, জায়গায় স্থানান্তরিত Rangeহবে না এবং একটি নতুন, প্যাডড ফিরিয়ে দেওয়া হবে। ।
হারুন এম। এশবাচ

1
আপনার পরামর্শ সম্পর্কে কী ভাবেন তা আমি নিশ্চিত নই। Pad(toPad)আইএমএইচও-কে ভুল মনে হচ্ছে। আপনি যদিও আপনার দৃষ্টিভঙ্গি রক্ষার জন্য একটি ভাল পয়েন্ট করেছেন। আপনি আমার কাছ থেকে একটি +0 পান! :)
এরিক ডুমিনিল

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

3

কোড উপাদানগুলির নামকরণের জন্য (প্রকার, ভেরিয়েবল, ফাংশন, যে কোনও কিছু) নিজেকে জিজ্ঞাসা করার মূল প্রশ্ন

আমি যদি টাইপো করি, সংকলকটি কি এটি আমার জন্য খুঁজে পাবে?

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

আপনার পরিস্থিতির জন্য যেখানে ধনাত্মক এবং পরিবর্তনশীল কেবলমাত্র মূলধনীতে পৃথক হয়, সর্বদা এটি হবে। (বা প্রায় সর্বদা - পর্যাপ্ত পরিশ্রমের সাথে, আমি নিশ্চিত যে আপনি এটি কার্যকর করতে পেরেছিলেন তবে আপনাকে সত্যই চেষ্টা করতে হবে)) সুতরাং আমি মনে করি আপনি ঠিক আছেন there

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

এছাড়াও হাঙ্গেরীয় নোটেশন শৈলীতে একই প্রযোজ্য নোটটি উল্লেখ করুন , যেখানে নামগুলি যা-ই হোক না কেন এটি সম্পর্কে আরও কিছু বলার জন্য এক বা একাধিক অক্ষরের সাথে উপস্থাপিত হয়। যদি আপনার কাছে একটি ভেরিয়েবল বলা হয় Rangeএবং এটির জন্য একটি পয়েন্টার বলা হয় PRange, Pউদাহরণস্বরূপ ঘটনাক্রমে এটি মিস করা সহজ । সি # এটিকে ধরা উচিত, তবে সি এবং সি ++ আপনাকে সর্বাধিক সতর্কতা দেবে। বা আরও উদ্বেগজনকভাবে, মনে করুন যে আপনার একটি ডাবল সংস্করণ বলা হয়েছে DRangeএবং আপনি এটি নামক একটি ফ্লোট সংস্করণে নমুনা নিলেন FRange। দুর্ঘটনাক্রমে ভাসমানটি ব্যবহার করুন (যা সহজ যেহেতু কীগুলি একটি কীবোর্ডের সাথে সংলগ্ন হয়) এবং আপনার কোডটি ধরণের কাজ করবে তবে প্রক্রিয়াটি রেজোলিউশন ও আন্ডারফ্লোগুলি শেষ হয়ে গেলে এটি অদ্ভুত এবং অনাকাঙ্ক্ষিত উপায়ে নেমে আসবে।

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


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

@ টি.সার এমনকি দিনের আগেও, আমি এটি একটি আবেগ দিয়ে ঘৃণা করি! আপনি যেমনটি বলেছেন, আরও ভাল আইডিই সমস্যাগুলি সমাধান করেছে যার লক্ষ্য ছিল তবে এটি এখনও প্রায়শই প্রায়ই প্রদর্শিত হয়। উদাহরণস্বরূপ, forতিহাসিক কারণে উইন্ডোজ এপিআইয়ের সাথে কথা বলার দরকার থাকলে আপনি এটি দেখতে পাবেন। মানুষের পছন্দসই স্টাইলগুলি যদি সত্যিই তারা পছন্দ করে তবে আমি তাদের সম্পূর্ণরূপে বশ করতে চাই না, তবে আমি নামটি আঁকতে পারি না এমন আপার / লোয়ার কেস দেখানোর জন্য এটি হুক হিসাবে ব্যবহার করতে চাই না।
গ্রাহাম

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

@ টি.সার যথেষ্ট সত্য। "যাঁরা অতীতকে স্মরণ করেন না তারা এটির পুনরাবৃত্তি করেছিলেন" এবং এগুলি " : /
গ্রাহাম

1
আমরা কি আসল হাঙ্গেরীয় স্বরলিপি বা মাইক্রোসফ্ট দ্বারা এটি কীভাবে গুরুতরভাবে ব্যাখ্যা করা হয়েছিল ( উইন্ডোজ দলের নথি লেখকরা অজান্তে আবিষ্কার করেছিলেন যেগুলি সিস্টেম হাঙ্গেরিয়ান হিসাবে পরিচিতি পেয়েছিল) এবং ত্রিঙ্গুলেশনের পর্বে লিও ল্যাপার্টের জোয়েল স্পলস্কির সাক্ষাত্কারেও? 277, 2016-12-12, 04 মিনিট 00 সেকেন্ড - 06 মিনিট 35 সেকেন্ড )?
পিটার মর্টেনসেন

1

আমি একটি উপাখ্যান যুক্ত করতে চাই, যদিও Range rangeএটি সিন্টেক্সিকভাবে আইনী, এটি ডিবাগ বা রিফ্যাক্টরকে আরও চ্যালেঞ্জযুক্ত করে তুলতে পারে। প্রকারভেদ প্রচুর ভেরিয়েবলের সাথে একটি ফাইলটিতে "রেঞ্জ" নামে একটি ভেরিয়েবলের সন্ধান করছেন? এই নামকরণের পছন্দ হিসাবে আপনি পরে আরও কাজ শেষ করতে পারেন।

যদিও এটি মূলত প্রাসঙ্গিক নির্ভর। এটি যদি 30 লাইনের ফাইল হয় তবে আমার বক্তব্যগুলি সত্যই কার্যকর হয় না।


7
বেশিরভাগ লোক উইন্ডোজ বিকাশের জন্য এমন সরঞ্জামগুলি ব্যবহার করে যা প্রকার এবং পরামিতি বা ভেরিয়েবলের মধ্যে পার্থক্য করে। আপনি যা বর্ণনা করেছেন তা ইউনিক্সের ভাল পুরানো গ্রেপ দিনগুলির কথা মনে করিয়ে দেয়।
ফ্র্যাঙ্ক হিলেমান

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

আমি মনে করি যে আমরা একমত যে প্ল্যাটফর্মটি মূল বিষয় নয়। grepএকটি দুর্দান্ত সরঞ্জাম, তবে এটি একটি সংশোধনকারী সরঞ্জাম নয়। এবং আমি ব্যবহার করেছি প্রতিটি বিকাশ প্ল্যাটফর্মে রিফ্যাক্টরিং সরঞ্জাম বিদ্যমান। (ওএস এক্স, উবুন্টু, উইন্ডোজ)।
এরিক উইলসন

@ এরিকউইলসন এক সময় গ্রেপ এবং সেডই ইউনিক্সে একমাত্র রিফ্যাক্টরিং সরঞ্জাম ছিল।
ফ্র্যাঙ্ক হিলিমান

@ ফ্র্যাঙ্কহিলিমান কেবল যেহেতু কিছু রিফ্যাক্টরিং সরঞ্জাম হিসাবে ব্যবহৃত হয় তার অর্থ এই নয় যে এটি একটি। আমি নোটপ্যাডে রিফ্যাক্টর করতে পারি, তবে এটি কোনও পাঠ্য সম্পাদক থেকে বেশি তৈরি করে না।
এরিক উইলসন

1

আমি মনে করি আপনি Range rangeআজকাল একটি কারণে ব্যবহার করতে পারেন : সিনট্যাক্স হাইলাইটিং। আধুনিক আইডিইগুলি সাধারণত টাইপের নাম এবং প্যারামিটারের নামগুলি বিভিন্ন রঙে হাইলাইট করে । এছাড়াও একটি প্রকার এবং একটি ভেরিয়েবলের সহজেই বিভ্রান্ত না হওয়ার যথেষ্ট "যৌক্তিক দূরত্ব" থাকে।

যদি এটি না হয় তবে আমি অন্য কোনও নাম বিবেচনা করব বা একটি প্লাগিন / এক্সটেনশন সক্ষম করার চেষ্টা করব যা এই সিনট্যাক্স হাইলাইট করতে পারে।


0

যখন কোনও ফাংশন জেনেরিক হয়, তখন এটি যুক্তি দেয় যে প্যারামিটারগুলি জেনেরিক হবে এবং সুতরাং জেনেরিক নাম থাকতে হবে।

আপনি যা বলছেন তা নয়, তবে আমি এমন ফাংশন দেখেছি যা জেনেরিক ফাংশন সম্পাদন করে যার পরামিতির নামগুলি বিভ্রান্তিকরভাবে নির্দিষ্ট specific মত

public String removeNonDigits(String phoneNumber)

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

সুতরাং নিশ্চিত, রেঞ্জ পরিসীমা বলার পরিবর্তে, আপনি পরিসীমা পরিসীমাটিপ্যাড বলতে পারেন। তবে এর সাথে কী তথ্য যুক্ত হয়? অবশ্যই এটি প্যাডের পরিসীমা। এটা আর কি হতে পারে?

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

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

public Range pad(Range range1, Range range2)

রেঞ্জ 1 এবং রেঞ্জ 2 এর মধ্যে পার্থক্য কী? আমি কিভাবে জানব? যদি এটি এমন কিছু হয় যেখানে তারা সত্যিকার অর্থে দুটি জেনেরিক এবং বিনিময়যোগ্য মান হয় তবে ঠিক আছে

public boolean overlap(Range range1, Range range2)

আমি প্রত্যাশা করব যে রেঞ্জগুলি যদি ওভারল্যাপ হয় এবং মিথ্যা না ঘটে তবে সত্য হয়, তাই তারা জেনেরিক এবং বিনিময়যোগ্য।

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

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