বর্ণনামূলক নামকরণ বনাম 80 টি অক্ষরের রেখা [বন্ধ]


17

আমি প্রায়শই এই দুটি মূল্যবান প্রোগ্রামিং অনুশীলন শুনতে পাই: (1) কোডের লাইনগুলি 80 টি বর্ণ বা তার চেয়ে কম হওয়া উচিত এবং (2) ভেরিয়েবল, পদ্ধতি, শ্রেণি ইত্যাদির জন্য বর্ণনামূলক নাম ব্যবহার করা উচিত, তবে এই উভয় পরামর্শের যুক্তির যুক্তিটি আমি বুঝতে পারি , তারা প্রায়শই একে অপরের ট্রেড অফস বলে মনে হয়। আমি যদি আমার কোডটি ৮০ টি অক্ষরের / রেখার নীচে রাখি তবে আমি কম বর্ণনামূলক নাম ব্যবহার করে শেষ করি (উদাহরণস্বরূপ পাইথনে প্রতিটি ইন্ডেন্টেশনটি 4 টি অক্ষর হিসাবে গণনা করা হয়) তবে আমি যদি আরও বর্ণনামূলক নাম ব্যবহার করি তবে আমি 80 টিরও বেশি অক্ষরের লাইন দিয়ে শেষ করব।

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


4
@BillyONeal বড় স্ক্রীন সঙ্গে, 120 :)
BЈовић

4
আমি মনে করি আমার কমপক্ষে 130
9

8
আমি 80 টি পছন্দ করি কারণ আমি তখন আমার নোটবুকের পাশে খুব সহজেই 2 টি ফাইল খুলতে পারি।
হনজা ব্রাবেক

5
৮০ টির বেশি অক্ষরের চেয়ে বেশি রেখাগুলি অপঠনযোগ্য হয়ে যায়। সুতরাং 80 একটি ভাল সীমা। বর্ণনামূলক খুব বেশি ভারবস হতে হবে না। এবং এটি স্কোপের উপর নির্ভর করে: ছোট স্কোপ সংক্ষিপ্ত পরিবর্তনশীল নাম, বড় স্কোপ দীর্ঘ নাম। এবং সর্বদা বৃহত সুযোগ সহ ভেরিয়েবলগুলি এড়িয়ে চলুন। আপনি যদি এতে উপস্থিত থাকেন তবে একটি কার্যকরী ভাষা ব্যবহার করেন এবং আপনার কোডটি ছোট ফাংশনগুলিতে ভেঙে যখন এটি খুব গভীর -> খুব ছোট স্কোপ == সংক্ষিপ্ত বর্ণের নাম অন্তর্ভুক্ত করে। ফাংশনটির নামগুলি একই রকম তবে সাধারণত তাদের অবস্থান আরও বড় হয়।
পিয়ার স্ট্রিটজিঙ্গার

4
@ অট--: আপনি কি এমন সম্পাদককে দেখেছেন, যা সি ++ সিনট্যাক্স অনুসারে প্রকৃতপক্ষে একটি দীর্ঘ রেখাটি ভেঙে ফেলতে পারে এবং ধারাবাহিকতাটিকে প্রারম্ভের চেয়ে আরও একটি স্তর উপস্থাপিত করে? অন্যথায় এ জাতীয় পরামর্শ অকেজো।
জানু হুডেক

উত্তর:


34

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

আপনার ইনডেন্টগুলি কয়েক রাখুন।

প্রায়শই যখন আমি নিজেকে ইনডেন্ট বনাম বর্ণনামূলক নামকরণের মধ্যে লড়াইয়ের মুখোমুখি করি, তখন আমি একটি পদক্ষেপ পিছনে নিয়ে আমার ইন্ডেনশন স্তরটি দেখি। যদি আপনি 3 বা 4 স্তরেরও বেশি ইনডেন্ট করেন (2 টি স্তরটি স্বয়ংক্রিয় এবং অনেক ক্ষেত্রে অপ্রয়োজনীয় Read পড়ুন: শ্রেণীর পদ্ধতি সংজ্ঞা), আপনি কোনও কোড বা পদ্ধতিতে কার্যকারিতা বিমূর্ত করে আপনার কোডটি পুনর্গঠন করতে চাইতে পারেন।

আপনার নাম বর্ণনামূলক

আপনার সবসময় আপনার নাম বর্ণনামূলক রাখা উচিত। বর্ণনামূলক নামগুলি স্ব-ডকুমেন্টিং কোড তৈরি করে। কিছু কিছু ক্ষেত্রে নাম ছোট করার চেষ্টা করতে পারেন, তবে পঠনযোগ্যতা প্রথমে আসে।

একটি লাইন ভঙ্গ করতে ভয় পাবেন না

বিষ্ঠা ঘটে। যদি আপনি ৮০ টির বেশি অক্ষর রেখে যান এবং লাইনের কোনও স্থান পুনরায় দাবি করতে আপনি আর দেখতে না পান - এটি ভাঙ্গুন। বেশিরভাগ ভাষাগুলি লাইন বিভাজনের বিষয়ে চিন্তা করে না, তাই লাইনটি একাধিক মধ্যে বিভক্ত করে। শুধু একটি এলোমেলো অবস্থান চয়ন করবেন না। জিনিসগুলি যৌক্তিকভাবে গোষ্ঠীভুক্ত রাখুন এবং লাইনটি ভাঙ্গলে আপনি অন্য স্তরে প্রবেশ করুন।


3
এটি লক্ষ করা উচিত, বর্ণনামূলক নাম দীর্ঘ নাম হিসাবে একই নয়। প্রসঙ্গ থেকে সহজেই দেখা যায় এমন জিনিসগুলির পুনরাবৃত্তি এড়ানো এবং কয়েকটি মুখ্য সাবধানতার সাথে নির্বাচিত সংক্ষিপ্ত বিবরণগুলি (কেবলমাত্র খুব সাধারণ ধারণার জন্য) সংক্ষিপ্ত বর্ণনামূলক নামের দিকে দীর্ঘ পথ যেতে পারে।
জানু হুডেক

18

কেন না উভয়?

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

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

৮০-চরিত্রের সীমাটি, যদিও মূলত ১৯ 1970০ এর পাঠ্য টার্মিনালের প্রযুক্তিগত সীমাবদ্ধতার ফলাফল, আজও অনেকের দ্বারা এটি মূল্যবান এবং এখনও প্রযুক্তিগত কারণগুলি রয়েছে (কিছু নেটওয়ার্ক প্রোটোকলে সর্বাধিক লাইনের দৈর্ঘ্য, উল্লেখযোগ্যভাবে ই-মেইল সম্পর্কিত), আরও জোরালো কারণগুলি হ'ল মানসিক এবং সামাজিক social দেখা যাচ্ছে যে line 66 টি চরিত্রের চিহ্নটি প্রায় প্রাকৃতিক-ভাষা গদ্যের জন্য আরামদায়ক পাঠের অভিজ্ঞতা অর্জন করে (ফন্টের আকার আকর্ষণীয়ভাবে কোনও পার্থক্য করে না এবং ফলস্বরূপ, পর্দা বা কাগজের আকারও নয়); ৮০-অক্ষরের রেখার সীমাটি এর থেকে খুব কাছাকাছি, তবে যেহেতু কোডের একটি সাধারণ টুকরো বেশিরভাগ অংশ সাধারণত কমপক্ষে এক বা দুটি স্তরকে ইন্ডেন্ট করে থাকে (যার অর্থ ইনডেন্টেশন সেটিংসের উপর নির্ভর করে 4 এবং 16 অক্ষরের মধ্যে থাকে),

৮০-চরিত্রের লাইনে আটকে থাকার আরও একটি প্রভাব হ'ল জিনিসগুলি যখন খুব জটিল হয় তখন এটি একটি খুব ভাল সূচক। দীর্ঘতর রেখাগুলি সাধারণত নিম্নলিখিতগুলির মধ্যে একটি দ্বারা সৃষ্ট হয়:

  • যুক্তিগুলির দীর্ঘ তালিকা সহ ফাংশন; এটি রাখা খুব ভাল জিনিস নয়, কারণ এগুলি পঠনযোগ্যতা বাধা দেয় এবং সহজেই সূক্ষ্ম বাগগুলি তৈরি করতে পারে, উদাহরণস্বরূপ যখন লোকেরা যুক্তি অর্ডারটিকে এমনভাবে বদলে দেয় যে সংকলকটি ধরে না।
  • জটিল প্রকাশ, প্রায়শ শর্তসাপেক্ষে পাওয়া যায় (যেমন if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)); এটি খুব সহজেই সিদ্ধান্ত গ্রহণ করা শক্ত, এবং কোডটি আরও কাঠামোগত কিছুতে আবার লিখতে হবে। সম্ভবত, প্রকাশটি খুব বেশি করে এবং কোনও পদ্ধতি বা ফাংশনে ফ্যাক্টর হওয়া উচিত।
  • ফাংশন কল বা এক্সপ্রেশন হিসাবে ব্যবহৃত দীর্ঘ আক্ষরিক, যেমন print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));। আক্ষরিক একটি পরিবর্তনশীল বা ধ্রুবক মধ্যে সরান; এটি এখনও রেখার দৈর্ঘ্য অতিক্রম করতে পারে, তবে আপনি যদি এটি ধারাবাহিকভাবে করেন তবে পাঠক কমপক্ষে নিরাপদে লাইনের অদৃশ্য অংশটিকে উপেক্ষা করতে পারে, ধরেই ধরে নিবে যে কেবল আক্ষরিক বাকী অংশগুলি অনুসরণ করে। বা আরও ভাল, আক্ষরিকগুলি কোডের বাইরে এবং একটি বাহ্যিক ডেটা স্টোর (ফাইল, ডাটাবেস, যাই হোক না কেন) এ সরান।
  • গভীরভাবে নেস্টেড বিবৃতি, উদাহরণস্বরূপ ifএকটি শ্রেণি পদ্ধতিতে ছয় স্তরের বিবৃতি (এটি আদর্শ সেটিংসের জন্য 32 টি কলামের ইন্ডেন্টেশন)। আবার, গভীর বাসা বাঁধাই জটিল এবং হার্ড-টু-পঠনের কোড তৈরি করে এবং প্লেগের মতো এড়ানো উচিত - সহজভাবে বলতে গেলে, গভীর বাসা বাঁধার ফলে পড়ার সময় মানুষের মস্তিষ্কের স্ট্যাকগুলি প্রবাহিত হয়।

এগুলি সবশেষে আপনার কোড বেসগুলিতে দীর্ঘমেয়াদে না থাকা জিনিসগুলির লক্ষণ are এবং ৮০-বর্ণের সীমা প্রয়োগ করা একটি দুর্দান্ত এবং সহজ উপায় যা জটিলতা হ্রাস করতে এবং পঠনযোগ্যতা বজায় রাখতে সহায়তা করে। (এটি 80 টি কলামে আপনি পুরোপুরি অপঠনযোগ্য কোডটি লিখতে পারবেন না বলে বলার অপেক্ষা রাখে না: বিভিন্ন অবলম্বন-কিছু-কোড প্রতিযোগিতা একটি পরিষ্কার পাল্টা-উদাহরণ)।


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

অবশ্যই দীর্ঘ আক্ষরিক উদাহরণ হিসাবে ব্যবহৃত বাক্যটির উত্স কোডে বাস করার কোনও জায়গা নেই। পৃষ্ঠা টেম্পলেটগুলিতে এর মতো জিনিসগুলি। তবে ত্রুটি বার্তাগুলির মতো জিনিসের জন্য আমি তাদের কোডটি রাখি যা তাদের উত্সাহ দেয় prefer
জানু হুডেক

@ জানহুদেক: অবশ্যই, আক্ষরিকাগুলি একটি ডেটা ফাইলে স্থানান্তর করা বরাবরই বোধগম্য নয়। যদিও আমি অত্যধিক দীর্ঘ আক্ষরিক কথা বলছি, এবং এর সাথে আমি খুব কমই এমন একটি অনুষ্ঠান দেখেছি যেখানে অন্য কোথাও তাদের সংজ্ঞা দেওয়া কোডটি আরও খারাপ করে তুলেছিল: পাঠ্যের দৈর্ঘ্য পড়তে বাধাগ্রস্ত করছে, তবে এর অর্থ সহজেই হতে পারে একটি ধ্রুবক বা পরিবর্তনশীল নামে কনডেন্সড, যা আপনি অন্য কোথাও সংজ্ঞায়িত করেছেন। আমার ধারণা, ত্রুটি বার্তা একটি রায় কল judgment
টিডামার্স 18'13

16

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


2
এই. এক্স অক্ষরে লাইন ভাঙ্গা থামান, আইডিই হ্যান্ডেল করুন। অন্যথায় আপনি অন্য সকল ব্যবহারকারীকে বিরক্ত করবেন (ভবিষ্যতে আপনিও!) যিনি পর্দা / আইডিই'র 2 * এক্স অক্ষর এমন কোড সহ পরিচালনা করতে পারবেন যা কোনও পৃষ্ঠায় আর ফিট করে না।
কনারাক

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

4
আমি একমত না আমি যদি কোডটি একবারে দেখতে না পাই তবে নামগুলি যতটা বর্ণনামূলক হোক না কেন এটি পড়া শক্ত।
জানু হুডেক

4

প্রতি লাইনে ৮০ টি অক্ষর পূরণ করাও কঠিন নয় এমনকি নামকরণও দীর্ঘ হয় কারণ দীর্ঘ কোডের একক লাইনকে একাধিক শর্ট কোডে ভাঙ্গার অনেকগুলি উপায় রয়েছে, উদাহরণস্বরূপ, আমি সি-তে একটি শর্ত বিবৃতি ৪০ এরও কম কম ফিট করতে পারি চরিত্র,

if ( a == b || c == d  || d == e
    || c == e || c == a || c == k
    || c == l)

আপনি একাধিক লাইনে ফাংশন কলের একটি লাইন বিভক্ত করতে পারেন।

সুতরাং, বর্ণনামূলক নামকরণের 80 টি বিধি এবং 80 টি অক্ষরের রেখার কোনও দ্বন্দ্ব নেই, তারা পাঠযোগ্যতার উন্নতি করতে সহাবস্থান করতে পারে।


2
80 টি অক্ষর কি সত্যিই পাঠযোগ্যতার উন্নতি করে? কোন পর্দা এই দিনগুলিতে সহজেই 120 টি করতে পারে না?
বিলি ওনেল

7
@BillyONeal এটা 120 ওভার প্রস্থ 80 প্রস্থ উপর স্ক্যান করা আরো সহজ
র্যাচিট খামখেয়াল

2
নিউজ পেপারটি কলামগুলিতে বিভক্ত হয়ে যায় এবং আপনি ux ux.stackexchange.com/questions/3618/…
নিও

1
লজিক শর্তটি ভেঙে পড়াশোনার উন্নতি হয় যখন লাইনটি শর্তের কাঠামোর সাথে মিলিত হয়, তবে অগত্যা যদি তারা কেবল কিছু স্বেচ্ছাসেবী সীমা মেনে চলে।
mikołak

1
@ বিলিওনিওল: বেশিরভাগ স্ক্রিনগুলি 120 করতে পারে তবে খুব কমই 240 করতে পারে Or বা আপনি কখনও ভিন্নতা তুলনা করেন না?
হুবার্ট কারিও

0

80 সীমা এমন একটি বিষয় যা অনেক আগেই বাড়ানো উচিত ছিল। নোট করুন যে এই সীমাটি বয়স থেকেই ব্যবহৃত হয় যখন প্রতিটি শনাক্তকারীর দৈর্ঘ্য 8 টি অক্ষর এবং স্ক্রিন / প্রিন্টারে কেবল একটি ফন্টের মধ্যে সীমাবদ্ধ ছিল। হরফ আকার পরিবর্তন করার কোন সম্ভাবনা নেই।

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

তারপরেও এটি কোনও কঠোর সীমা হওয়া উচিত নয়। আপনি লাইন ধরে একটি চরিত্র যেতে? ঠিক আছে, কিছুই হয় না!

সম্পাদনা:

80-চর সীমাটির ইতিহাস সম্পর্কে বিশদ উত্তর

উইকিপিডিয়ায় প্রতি লাইন অক্ষর

উইচিটা স্টেট ইউনিভার্সিটির একটি সমীক্ষায় দেখা গেছে যে গতি এবং বোধগম্যতার কারণগুলি সহ সিপিএল পড়ার যোগ্যতার উপর কেবলমাত্র ছোট প্রভাব ফেলে। অগ্রাধিকারের জন্য জিজ্ঞাসা করা হলেও, 60% উত্তরদাতারা গবেষণায় ব্যবহৃত সংক্ষিপ্ততম (35 সিপিএল) বা দীর্ঘতম (95 সিপিএল) লাইনের জন্য পছন্দকে নির্দেশ করেছেন indicated একই সময়ে, 100% উত্তরদাতারা এই পরিমাণে যে কোনও একটিকেই স্বল্পতম পছন্দসই হিসাবে বেছে নিয়েছেন।


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

3
@ জানহুদেক এর পর্দা / মুদ্রণ প্রযুক্তির সাথে সমস্ত কিছু রয়েছে। প্রোগ্রামারস.স্ট্যাকেক্সেঞ্জিং / প্রশ্ন / 148677/… দেখুন । ৮০ টি চরিত্রের সাথে যাওয়ার সিদ্ধান্ত নিখুঁত historicতিহাসিক, অধ্যয়নের ভিত্তিতে নয়। আপনি দয়া করে আপনার মতামত নিশ্চিত করতে অধ্যয়নের লিঙ্কগুলি যুক্ত করতে পারেন?
সুলতান

অন্য একটি প্রশ্ন এর মন্তব্যে ইতিমধ্যে এই ইউএক্স লিঙ্কটি পেয়েছে ; সেখানে আরও রেফারেন্স। যদিও ৮০ নম্বর নিজেই historicতিহাসিক কাকতালীয়, টাইপ রাইটারগুলির প্রতি লাইনের প্রতি স্ট্রাইক সংখ্যা থেকে প্রায় প্রাপ্ত, এটি প্রায় একক-কলাম প্রিন্টের সাধারণ প্রস্থ থেকে প্রাপ্ত এবং গড় 66 66 অক্ষরের জন্য এটি দীর্ঘকালীন প্রতিষ্ঠিত traditionতিহ্য ছিল।
জানু হুডেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.