একটি প্রোগ্রামার, অনেক ভাষা - নাম দ্বিধা


14

আপনি যখন একাধিক প্রোগ্রামিং ল্যাঙ্গুয়েজ জুড়ে কাজ করেন, তখন আপনার একটি সমস্যা দেখা দেয় ...

একটি ভাষায় একটি বৈধ নাম (সনাক্তকারী) অন্য ভাষায় অবৈধ। উদাহরণ স্বরূপ...

var new function thisজাভাস্ক্রিপ্টের একটি কীওয়ার্ড, তবে আপনি এগুলি পাইথনে অবাধে ব্যবহার করতে পারেন। একইভাবে list dict defসমস্যা ছাড়াই জাভাস্ক্রিপ্টে ব্যবহার করা যেতে পারে।

এটি খুব সাধারণ এবং কিছু প্রোগ্রামার সাধারণত একাধিক ভাষায় প্রোগ্রাম করার সাথে সাথে দ্রুত পরিচিত হয়ে যায়।

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

সুতরাং, আমার প্রশ্ন আপনি কী কৌশল অবলম্বন করেন ...

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

(দ্রষ্টব্য: আমি এই প্রশ্নে পাইথন এবং জাভাস্ক্রিপ্ট সম্পর্কেই কথা বলছি ... তবে দয়া করে আরও প্রশ্নটির উত্তর দিন)

-- হালনাগাদ --

সবগুলো উত্তরের জন্য ধন্যবাদ। সুতরাং যে সাধারণ sensক্যমতটি আমি উত্থিত দেখছি তা হ'ল প্রোগ্রামাররা অন্য ভাষাগুলি যা-ই করুক না কেন কোনও নাম ব্যবহার করুক - যতক্ষণ নাম বর্ণনামূলক হয় ততক্ষণ তাতে ক্ষতি হয় না।


1
বা কেবল প্রতিটি চলক নামের একটি দিয়ে শুরু হওয়া দরকার $। এটি পিএইচপি, জাভাস্ক্রিপ্ট এবং কিছু সি / সি ++ সংকলকগুলিতে কাজ করে । সমস্ত গম্ভীরতায়, এই একটি জিনিস পিএইচপি সঠিক আইএমএইচও পেয়েছে।
জোয়ে অ্যাডামস

উত্তর:


46

আমার অভিজ্ঞতার ৩০++ বছর ধরে বেশ কয়েকটি ভাষায় প্রোগ্রাম করার পরে আমি বলব যে কোনও নামেই যে নামকরণের মান কাজ করবে যে কোনও ভাষায় কাজ করবে তা সম্ভবত আকাশের ধারণার পাই pie

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

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

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

আপনি যদি নিজের নামকরণের কনভেনশনগুলিকে এমন কিছু ক্ষেত্রে সীমাবদ্ধ করেন যা ভেরিয়েবলের ব্যাখ্যার ব্যাখ্যা দেয়, তবে আপনি সম্ভবত যে কোনও ভাষায় ভাল কোড তৈরি করবেন।


3
যে নামগুলি বোঝায় সেগুলি হ'ল আপনার প্রয়োজনীয় সমস্ত কারণ।
জেফো

24

আপনার প্রথমে জিনিসগুলির "তালিকা", "নতুন", "ভার", "এটি" নামকরণ করা উচিত নয়, কারণ এগুলি কোনও ভাষায় যথেষ্ট বর্ণনামূলক নয়।


2
দিতো "ফাংশন"। যদি এটি কোনও কীওয়ার্ড না হয় তবে এটি কেবল বোঝানো উচিত নয়।
এমপিলেটিয়ার

11

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


7

আমি মনে করি আপনি বর্ণনামূলক ভেরিয়েবলের নামকরণ করা সমস্যাটি যদি বর্ণনা করেন তবে আপনার সমস্যাটি ন্যূনতম হওয়া উচিত। এর সাথে, যদি এটি ন্যূনতম হয় তবে ভাষার মধ্যে পরিবর্তনশীল নামকরণের কারণে প্রসঙ্গের স্থানান্তর গ্রহণও ন্যূনতম হয়ে যায়।


5

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


5

নির্দেশিকা লেখার জন্য আপনার সময় নষ্ট করা উচিত নয় যতক্ষণ না আপনি আবিষ্কার করেন যে এটি আসল , অনুমানের সমস্যা নয়।

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

বিটিডাব্লু, তালিকা বা ডিক উভয়ই পাইথনের একটি সংরক্ষিত শব্দ। এগুলি ভেরিয়েবলের নাম হিসাবে ব্যবহার করা যেতে পারে যদিও বেশ লম্পট নামগুলি।


3

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

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


2

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

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


-2

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


5
কিছু কিছু ভাষা বাদে প্রথম বর্ণের ক্ষেত্রে উল্লেখযোগ্য বাক্য গঠনের ব্যবস্থা রয়েছে।
কার্ল বিলেফেল্ড

1
... এবং এটি বহু ভাষায় প্রতিষ্ঠিত সাংস্কৃতিক পরিমাণের লঙ্ঘন করে।
tmadmers

হাঙ্গেরিয়ান নোটেশনটি আরও বেশি অবহেলা করছে যে ক্যামেলকেস ... ;-)
জেক্ক হানসেল

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

@ ডোটানকোহেন: আমার মনে আছে অনেক বছর আগে শখের একটি ম্যাগাজিনে প্যাসকাল প্রোগ্রামটি দেখেছিলাম, যখন পাস্কাল তখন দৃশ্যটি তৈরি করছিল। কোডটির কাঠামো থেকে এটি স্পষ্টভাবে স্পষ্ট হয়েছিল (এবং তারা সাব্রোটাইনগুলি এবং ফাংশনগুলিতে মানগুলি সরবরাহ করার জন্য বিশ্বব্যাপী ভেরিয়েবল ব্যবহার করেছিল) যে প্রোগ্রামটি আমি কখনও লিখিত পাস্কালকে দেখেছি সেই সর্বোত্তম বেসিক প্রোগ্রামগুলির মধ্যে একটি। ;-)
জেকে হ্যানসেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.