কিছু ভাষাগুলি কেন ট্যাবগুলির চেয়ে স্পেস ব্যবহারের পরামর্শ দেয়? [বন্ধ]


10

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

পাইথনের মতো ভাষা কেন ট্যাবগুলিতে স্পেস ব্যবহারের পরামর্শ দেয়?


24
আপনি যখন আঘাত করবেন তখন আপনি বেশিরভাগ সম্পাদককে ট্যাবগুলির পরিবর্তে স্থান সন্নিবেশ করতে কনফিগার করতে পারেন tab। যদি আপনি এটি আপনার প্রিয় সম্পাদকটিতে কনফিগার করতে না পারেন তবে আপনার আরও ভাল সম্পাদক দরকার।
অ্যাডাম শিখুন

একটি জিনিস, অনেকগুলি সম্পাদক যখন 'ট্যাব' টিপানো হয় তখন 4-8 স্পেস সন্নিবেশ করানোর জন্য সেটআপ করা যায়, সুতরাং এটি ট্যাবের মতো কেবল একটি কী প্রেস।
ইকো

2
এটি এখনও আমার প্রশ্নের উত্তর দেয় না। ট্যাবগুলির পরিবর্তে স্পেস কেন? অবশ্যই, আপনি ট্যাবগুলির পরিবর্তে স্থান সন্নিবেশ করতে আপনার সম্পাদককে কনফিগার করতে পারেন, তবে আপনি সম্ভবত স্পেসগুলি সহ ট্যাবগুলি সন্নিবেশ করতে পারেন। প্রশ্ন আপনি কেন এটি করতে চান? কি সম্ভব সুবিধা প্রাপ্ত হয়?
নাফটুলি কে

4
@ টিকে স্পেসগুলি দ্ব্যর্থহীন ট্যাবগুলি পরিবর্তন করা যেতে পারে
মার্টিন বেকেট

3
@ টি কেকোচেরান, কারণ আপনি যখন ভুলবশত একটি স্ট্রিংয়ের মধ্যে প্রবেশ করান তখন ট্যাবগুলি আপনার আউটপুটটিতে মজাদার জিনিসগুলি করে।
zzzzBov

উত্তর:


15

ধারাবাহিকতা, প্রাথমিকভাবে।

এছাড়াও, মাঝেমধ্যে এমন কিছু আসে যা প্রকৃতপক্ষে হোয়াইটস্পেস ব্যবহার করে - পাইথনের মতো: আমাকে বলুন, আমি নিম্নলিখিত কোড স্নিপেটটি চালালে কী ঘটবে?

def foo():
    print "a"
    print "b"

উত্তর: আপনি একটি ইনডেন্টেশনআরার পাবেন, কারণ এই দুটি মুদ্রণ বিবরণী একই স্তরে ইন্টেন্টেড নয় - এবং তাই একই কোড ব্লকের অংশ নয়। (প্রথমটি একটি ট্যাব ব্যবহার করে, দ্বিতীয়টি সমস্ত স্পেস)

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

সুতরাং এগুলি দুটি স্পষ্টত বা ট্যাব থাকুক না কেন সর্বদা সুসংগত থাকার জন্য দুটি ভাল কারণ।

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

সম্পাদনা: এবং মজাদারভাবে যথেষ্ট, সাইটটি আমার ট্যাবগুলিকে স্পেসে স্বাভাবিক করেছে বলে ব্রাউজারটি এটি সঠিকভাবে প্রদর্শন করতে পারে। মূল দেখতে ট্যাবগুলি অন্তর্ভুক্ত করতে "সম্পাদনা" এ ক্লিক করুন;)


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

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

4
আমি দেখতে পেয়েছি - ভাল, আপনার দলের জন্য একটি গাইডলাইন সেট করা দরকার - হয় নিয়মিতভাবে স্পেস বা ট্যাব ব্যবহার করুন ... যে কোনও
উপায়েই

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

কেবল রেকর্ডের জন্য, আমি @ পলনাথন
ইজকাটা

11

এই খাঁজ এবং পাইথন মধ্যে হোয়াইটস্পেস সম্পর্কে একটি ভাল আলোচনা হয়; নিবন্ধ থেকে:

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

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

নিজের জন্য, আমি স্পেসগুলি পছন্দ করি কারণ কোডটি সর্বদা একই পরিমাণ ইনডেন্টেশন সহ প্রদর্শিত হয়, আমি এটি কোনও আইডিইতে দেখছি, বা less, বা নোটপ্যাডে; অর্থাত্ স্পেসগুলি আরও বহনযোগ্য।


3
পুনরায়: "আমি এটি কোনও আইডিইতে দেখছি, বা কম, বা নোটপ্যাডে; যেমন স্পেসগুলি আরও পোর্টেবল" - আমি শুনেছি এমন জায়গাগুলির পক্ষে এটি সেরা যুক্তি। আমি নিজেই একজন "ট্যাবস" লোক, তবে মাঝে মাঝে অপ্রত্যাশিতভাবে রেন্ডার করা ট্যাব-স্পেস কোড দেখতে অপছন্দ করি।
এরিক

2

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

যদি আপনার স্পেস বারে পরিধান এবং টিয়ার আপনাকে চিন্তিত করে, আপনার সম্পাদক সম্ভবত ট্যাবগুলিকে স্বয়ংক্রিয়ভাবে স্থানগুলিতে রূপান্তর করতে সেট করতে পারেন।


আমি উভয়ই করার জন্য একটি কীস্ট্রোকের তুলনায় চারবার টাইপিং স্পেস বা ব্যাকস্পেসে ব্যয় করা সময় নিয়ে আরও বেশি উদ্বিগ্ন।
নাফটুলি কে

হ্যাঁ, তবে পাইথন সেভাবে অদ্ভুত। আমি স্পেসের প্রতি যত্নশীল এমন অন্য কোনও জিনিস কখনও পাইনি।
এয়ারিক

@ টি কে কোচরান ওহ, এটিই আপনার সত্যিকারের উদ্বেগ? তারা কীভাবে এটি করেছে আমি জানি না, তবে আমার কাজটিতে ভিএম সেট আপ করা হয়েছে যাতে ব্যাকস্পেস সম্পূর্ণ ট্যাবস্টপের দিকে চলে যায় একাধিক স্পেসের উপর সম্পূর্ণ স্বচ্ছভাবে
Izkata

আপনি কি .vimrcআমার জন্য ফেলে দিতে পারেন :)
নাফতুলি কে

1
@ টিকেকেরান এটি খুঁজে পেয়েছে - এটি ঠিক set softtabstop=4, এবং ট্যাব এবং ব্যাকস্পেস উভয়ই একটি ট্যাব হিসাবে 4 টি স্পেস ব্যবহার করবে। (ঠিক আছে, প্রতিটি ট্যাবস্টপের কাছে প্রস্থটিকে 4 টি স্পেস হিসাবে বিবেচনা করা হচ্ছে)
ইজকাটা

2

স্পেসগুলি সর্বদা ব্যবহার করা উচিত, কারণ একা ট্যাবগুলি অনেকগুলি শৈলীর জন্য পর্যাপ্ত নমনীয় নয় এবং ট্যাবগুলি এবং স্পেসগুলি আন্তঃসম্পর্কিত করে (প্রায়) সর্বদা একটি নিখুঁত জগাখিচুড়ি সৃষ্টি করে।

একটি শৈলীর উদাহরণের জন্য যা সাধারণত স্পেস প্রয়োজন , এর মতো কিছু বিবেচনা করুন:

call_some_function(parameter1,
                   parameter2,
                   parameter3,
                   parameter4,
                   parameter5,
                   parameter6,
                   parameter7);

আপনি যদি আপনার সমস্ত ক্রিয়াকলাপকে ট্যাব আকারের (এক প্রথম প্যারেন্টেসিসের জন্য বিয়োগ এক) একাধিক হিসাবে পুনরায় নামকরণ করতে ইচ্ছুক না হন তবে কেবলমাত্র এটিই এটি করবে না।

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

এমনকি যদি আপনি আপনার ট্যাবগুলির সাথে শূন্যস্থানগুলি মিশ্রণের বিরুদ্ধে তা নিশ্চিত করতে পারেন তবে আপনার এখনও একটি সমস্যা রয়েছে: ট্যাবগুলি ভেরিয়েবল-প্রস্থের ফন্টগুলির সাথে খুব খারাপভাবে খেলবে। এই সমস্যাটি দেখা দেয় যখন (উদাহরণস্বরূপ) আপনি পূর্ববর্তী মন্তব্যগুলি সারিবদ্ধ করতে চান:

a.m = 9;   // this is the slope
a.i = 4;   // this is the intensity
a.x = 1;   // this is the x-intercept

যেহেতু এখনই তারা দাঁড়িয়েছে, সেগুলি পুরোপুরি লাইন আপ। একটি পরিবর্তনশীল প্রস্থের ফন্টের সাথে দেখা হয়েছে তবে জিনিসগুলি কুৎসিত হয়। স্পেসগুলির সাথে, মন্তব্যগুলি (প্রায়শই) কিছুটা সামঞ্জস্য হতে পারে। ট্যাবগুলির সাহায্যে, মিস্যালাইনমেন্ট প্রায়শই বেশ মৌলবাদী হয়ে ওঠে:

a.m = 9;          // this is the slope
a.i = 4;  // this is the intensity
a.x = 1;          // this is the x-intercept

হঠাৎ আমাদের ভ্যারিয়েবল-প্রস্থের ফন্টের 'i' এবং 'm' বা 'x' এর মধ্যে প্রস্থের ছোট পার্থক্যটি একটি সম্পূর্ণ ট্যাব স্টপে রূপান্তরিত হয়েছে।

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

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

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


1
আমি আপনাকে দেখতে পেয়েছি "আনুপাতিক ফন্টগুলি ফাঁকা এবং ট্যাব উভয়ই ভেঙে দেয় তবে তারা ট্যাবগুলিকে আরও খারাপভাবে ভেঙে দেয়, তাই স্পেস ব্যবহার করুন"। ইলাস্টিক ট্যাবস্টপগুলি ব্যবহার করবেন না কেন? নিকগ্রাভগার্ড
আমারা

@ স্পার্কলেশি: এটি একটি দুর্দান্ত ধারণা, তবে বাস্তব কোডটির সাথে কোনও তাত্পর্য নেই এবং যতক্ষণ না রিয়েল এডিটররা ইতিমধ্যে এটি অন্তর্ভুক্ত করবেন না (বা কমপক্ষে বিশাল সংখ্যক) এটিকে ইতিমধ্যে অন্তর্ভুক্ত করবেন না।
জেরি কফিন

... আমি জানি: '(- ভাল, কিন্ডা) আপনি এখনও এমন একটি সম্পাদক ব্যবহার করতে পারেন যা ফাঁকা স্থান দ্বারা সমর্থিত (যেমন ট্যাব কীটি হওয়া উচিত যদি আপনি ফাঁকা স্থান ব্যবহার করছেন) তবে তারা ইলাস্টিক ট্যাবস্টপ রয়েছে বলে ভান করে; এটি স্পেসগুলি পরিচালনা করে তোলে সহজ।
Amara

2
আপনি যদি আনুপাতিক প্রস্থের ফন্টগুলিতে প্রোগ্রামিং করেন, ভাল, আপনি কেবলমাত্র ট্যাবগুলি নিয়েই চিন্তিত হওয়ার চেয়ে অনেক বেশি সমস্যা পেয়েছেন ...
ব্রায়ান নোব্লাচ

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

2

বড় সমস্যাটি হ'ল "ট্যাব" প্রস্থের অসামঞ্জস্যতা কখনও কখনও এগুলিকে কখনও কখনও চারটি স্পেস হিসাবে রেন্ডার করা হয়। অনেক সম্পাদকের ক্ষেত্রে আপনি এগুলিকে 1 থেকে 9 স্পেস পর্যন্ত যে কোনও কিছুতে সেট করতে পারেন।

সুতরাং এটি একটি সাধারণ ডাব্লুওয়াইওয়াইওয়াইজি সম্পাদককে আপনি যা দেখছেন তা অন্য কোনওটি কী পেতে পারে তা রূপান্তরিত করে।

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

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