পাইথন পিপ -8 কেন ইনডেন্টেশনের জন্য ট্যাবগুলির চেয়ে ফাঁকা জায়গাগুলি দৃ strongly়তার সাথে সুপারিশ করে?


147

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

স্থানগুলিকে পছন্দ করার কোনও অন্তর্নিহিত কারণ আছে কি? আমি ভাবতাম যে ট্যাবগুলি দিয়ে কাজ করা আরও সহজ।


7
জানতে পিইপি আলোচনাটি পড়ুন।
ই-সন্তুষ্ট

106
ইনডেন্টেশনের 1 স্তর হ'ল ... ১. আপনি যখন সমস্ত একক ট্যাব ব্যবহার করতে পারতেন তখন এন স্পেস ব্যবহারের বিষয়ে একমত হওয়া সম্পূর্ণ যুক্তিযুক্ত নয়। যা, যাইহোক, ঠিক এটি করতে বোঝানো হয়েছে to ইন্ডেন্ট। একদা. ইনডেন্টেশনের 1 স্তর = 1 একক অক্ষর, অর্থাৎ 1 টি একক ট্যাব। এবং তারা আরও কার্যকর কারণ প্রতিটি কোডার কীভাবে এটি ভিজ্যুয়ালাইজ করতে হয় তা নির্দ্বিধায় চয়ন করতে পারে। ফাঁকা স্থান ব্যবহার করা বোবা, আমি এর পক্ষে কখনও একটি যুক্তি দেখিনি যা মূর্খ নয়।
o0 '

31
@ ব্লুবম্বার এবং আপনি যখন সেখানে অবস্থান করছেন তখন আপনি কেন লোকদের একটি ফন্টের আকার এবং রঙ পছন্দ করতে বাধ্য করেন না? তবুও বোকা।
o0 '

10
পছন্দ করুন
o0 '

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

উত্তর:


111

উত্তরটি ঠিক সেখানেই পিইপিতে দেওয়া হয়েছিল [সম্পাদনা: ২০১৩ সালে এই উত্তরণটি সম্পাদনা করা হয়েছে ]। আমি উদ্ধৃতি:

সবচেয়ে জনপ্রিয় পাইথন ইন্ডেন্ট করেও প্রণালী শুধুমাত্র শূণ্যস্থান সাথে।

আপনার আর কোন অন্তর্নিহিত কারণ প্রয়োজন?

এটিকে কম কথায় কথায় বলতে: প্রথম অনুচ্ছেদে বর্ণিত পিইপি এর ক্ষেত্রটিও বিবেচনা করুন:

এই দস্তাবেজটি পাইথন বিতরণে স্ট্যান্ডার্ড লাইব্রেরি সমন্বিত পাইথন কোডের কোডিং কনভেনশন দেয়।

উদ্দেশ্যটি হল সমস্ত কোড যা সরকারী অজগর বিতরণে যায় ধারাবাহিকভাবে বিন্যস্ত (আমি আশা করি সম্মত করতে পারেন যে, এই সর্বজনীন একটি ভাল জিনিস ™)।

যেহেতু পৃথক প্রোগ্রামারটির জন্য স্পেস এবং ট্যাবগুলির মধ্যে সিদ্ধান্ত হ'ল) ​​কৃত্রিম উপায়ে (সম্পাদক, রূপান্তর স্ক্রিপ্ট ইত্যাদি) সহজেই প্রযুক্তিগত উপায়ে মোকাবেলা করা হয়, তাই সমস্ত আলোচনা শেষ করার একটি সুস্পষ্ট উপায় রয়েছে: একটি বেছে নিন ।

গাইডোই বেছে বেছে বেছেছিলেন। এমনকি তাকে কোনও কারণও দিতে হয়নি, তবে তিনি অভিজ্ঞতাগত তথ্য উল্লেখ করে তা করেছিলেন।

অন্যান্য সমস্ত উদ্দেশ্যে আপনি প্রস্তাবটি হিসাবে এই পিইপি নিতে পারেন, বা আপনি এটিকে উপেক্ষা করতে পারেন - আপনার পছন্দ, বা আপনার দলের বা আপনার দলের নেতারা।

তবে আমি যদি আপনাকে একটি পরামর্শ দিতে পারি: মিক্সেম না ;-) [সম্পাদনা: ট্যাব এবং স্পেসগুলি মিশ্রিত করা এখন আর বিকল্প নয়]]


11
একমত। এক্স স্পেস বনাম ওয়াই স্পেসগুলির চেয়ে ট্যাবগুলির চেয়ে ধারাবাহিকতা আরও গুরুত্বপূর্ণ।
মাইক ক্লার্ক

10
আমাকে অবাক করে তোলে ... স্ট্যান্ডার্ড লাইব্রেরিতে কেন এত মিক্সড কেস পদ্ধতির নাম রয়েছে?
কাইল ওয়াইল্ড

6
@ ডার্কিটিউড: ক) কেউই নিখুঁত নয়। খ) .তিহাসিক কারণ।

8
তাহলে কেন এত প্রোগ্রামাররা পিইপি -8 এর আগে স্পেস ব্যবহার করতে বেছে নিয়েছিল? এটাই আমি সত্যিই জানতে চাই। ট্যাবগুলির সুবিধাগুলি আমার কাছে সুস্পষ্ট বলে মনে হচ্ছে, তবে স্থানগুলি নয়।
জ্ঞানহীন


95

ঠিক আছে, দেখে মনে হচ্ছে সবাই স্পেসের প্রতি দৃ strongly় পক্ষপাতদুষ্ট। আমি একচেটিয়াভাবে ট্যাব ব্যবহার করি। কেন জানি তা আমি খুব ভাল করেই জানি।

ট্যাবগুলি আসলে একটি দুর্দান্ত আবিষ্কার, যা স্পেসগুলির পরে এসেছিল । এটি আপনাকে কয়েক মিলিয়ন বার জায়গা ঠেকানো বা একটি জাল ট্যাব (যা স্পেস তৈরি করে) ব্যবহার না করে ইনডেন্ট করতে দেয়।

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

আপনার সম্পাদক সঠিকভাবে ট্যাবগুলি পরিচালনা করতে পারবেন না? ভাল, একটি আধুনিক সম্পাদক পান। ভয়ঙ্কর সময় হতে পারে, আমরা এখন একবিংশ শতাব্দীতে এবং সেই সময় যখন একটি সম্পাদক একটি উচ্চ প্রযুক্তি জটিল সফটওয়্যার ছিল খুব অতীত is আমাদের কাছে এখন অনেকগুলি সংখ্যক সম্পাদক বাছতে হবে, যাঁরা ট্যাবগুলিকে সমর্থন করে। এছাড়াও, আপনি একটি ট্যাব কত হওয়া উচিত তা নির্ধারণ করতে পারেন, এমন একটি জিনিস যা আপনি স্পেস দিয়ে করতে পারবেন না। ট্যাবগুলি দেখতে পাচ্ছেন না? এটি একটি যুক্তি জন্য কি? ঠিক আছে, আপনিও ফাঁকা জায়গা দেখতে পাচ্ছেন না!

আমি কি আরও ভাল সম্পাদক পেতে পরামর্শ দিতে এত সাহসী হতে পারি? এর মধ্যে একটি হাই টেক প্রযুক্তিগুলির মধ্যে একটি, যা প্রায় 10 বছর আগে মুক্তি পেয়েছিল, যা অদৃশ্য চরিত্রগুলি প্রদর্শন করে ? (কটূক্তি বন্ধ)

স্পেস ব্যবহার করে অনেক বেশি মোছা এবং ফর্ম্যাট করার কাজ ঘটে। এজন্য (এবং অন্যান্য সমস্ত ব্যক্তি যারা এটি জানেন এবং আমার সাথে একমত হন) পাইথনের জন্য ট্যাব ব্যবহার করেন।

ট্যাব এবং স্পেসগুলি মিশ্রণ এটি সম্পর্কে একটি নো এবং কোনও যুক্তি। এটি একটি জগাখিচুড়ি এবং কখনও কাজ করতে পারে না।


26
এটি যুক্ত করতে, আপনার কীবোর্ডটি একবার দেখুন, ট্যাব কী-এর প্রতীক স্পষ্টভাবে ইনডেন্টেশন চিত্রিত করেছে - এটি মূল উদ্দেশ্যটির স্পেসের উদ্দেশ্য নয় ented পিইপি 8 স্পেস ব্যবহার করার পরামর্শ দিচ্ছে একটি ভুল আইএমএইচও তবে এটি কেবল একটি সুপারিশ - en.wikedia.org/wiki/Tab_character#Tab_characters
ড্যানিয়েল সোকলোভস্কি

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

12
@ জিঙ্গহাম কেউই একচেটিয়াভাবে ট্যাব ব্যবহার করতে পারবেন না: ট্যাব এবং স্পেস সবসময় সংমিশ্রণে ব্যবহৃত হয় এবং এর ফলে অসঙ্গতি ঘটে। আমি এবং অন্যান্য সহস্র হাজার হাজার প্রতিদিন এগুলি বেশ ধারাবাহিকভাবে ব্যবহার করছি are ইন্ডেন্টেশন জন্য ট্যাব, প্রান্তিককরণ জন্য ফাঁকা। ঠিক এই ধারণার কোন অংশটি আপনি বুঝতে এত ভয়ঙ্কররকম মনে করেন এবং আপনি কেন নিশ্চিত হন যে এটি ধারাবাহিকভাবে প্রয়োগ করা অসম্ভব?

1
ট্যাবগুলির সাথে আসল সমস্যাটি হ'ল আপনি "# উদ্বোধনী ডিলিমিটারের সাথে সংযুক্ত" মন্তব্যের আওতায় একই PEP8 দ্বারা প্রস্তাবিত চরিত্রটির প্রতি নির্ভুল পরিচয় পেতে পারবেন না। কেবলমাত্র স্থানগুলিকে পছন্দ করার কারণ: ইন্ডেন্টেশনটি সঠিকভাবে পেতে!
user541905

1
প্রশ্নটি হল "পাইথন পিপ -8 কেন দৃent়তার সাথে ট্যাবগুলিতে ফাঁকা স্থান দেওয়ার পরামর্শ দেয়?" । এই উত্তরটি কখনও পিইপি 8 সম্পর্কে কিছু উল্লেখ করে না। ||| প্রশ্নের উত্তর দেওয়ার চেষ্টা করার পরিবর্তে ... এই উত্তরটি আমার কাছে একটি বিশাল সংখ্যক প্রাথমিক ধারণা মতামত হিসাবে আসে । "ট্যাবগুলি জায়গাগুলির চেয়ে ভাল এবং এখানে কেন ..." বলার জন্য 276 টি শব্দ ব্যবহৃত হয়েছে।
ট্রেভর বয়েড স্মিথ

42

আমি ব্যক্তিগতভাবে ট্যাবগুলির ফাঁকা জায়গাগুলির সাথে একমত নই। আমার কাছে, ট্যাবগুলি হ'ল ডকুমেন্ট লেআউট চরিত্র / মেকানিজম এবং শূন্যস্থানগুলি কোডের ক্ষেত্রে কমান্ডের মধ্যে বিষয়বস্তু বা চিত্রের জন্য রয়েছে।

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

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


3
আমি নিজেকে ফাঁকা স্থানগুলি ব্যবহার করার জন্য জোর করার চেষ্টা করেছি, তবে সম্পাদক (কমপক্ষে এক্লিপস + পাইডিভ) বুদ্ধিমান ট্যাবগুলি জিতেছে বিশেষত যদি আপনি অদৃশ্য চরিত্রগুলি প্রদর্শন করতে সক্ষম হন। এবং আমি সহজেই 4, 8, 6 স্পেসটি ভিজ্যুয়াল হিসাবে সেট করতে পারি। সুতরাং আমার কোডে আমি কমপক্ষে ব্যক্তিগত পছন্দকে গুরুত্ব দিই এবং যদি বিদ্যমান কোড বেসে এটি প্রতিষ্ঠিত কনভেনশন হয় তবে স্পেসে আটকে থাকি।
ড্যানিয়েল সোকলভস্কি

2
যতক্ষণ না আপনি দলে কোডিং করছেন না ততক্ষণ তা ঠিক। আপনি একবার দলে গেলে আপনি একটি একক সম্মেলনে সম্মত হন এবং এটিতে আঁকড়ে থাকেন।
সোভিয়েট

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

হ্যাঁ তবে এটাই আমি বোঝাতে চাইছিলাম কিছু কিছু eventuallyক্যমত্য অবশেষে পৌঁছে যায় এবং প্রয়োগ হয়। যেমনটি আপনি বলেছেন, এটি সাধারণত "কেবলমাত্র স্পেস ব্যবহার করে"।
সোভিয়েট

এই কারণেই আমি ট্যাবগুলিকে পছন্দ করি। লেআউট এবং শব্দ
বিস্মৃতকরণের

31

স্পেসগুলির কারণ হ'ল ট্যাবগুলি alচ্ছিক। বিরামচিহ্নগুলিতে স্পেসগুলি হ'ল প্রকৃত সর্বনিম্ন-সাধারণ ডোনমিনেটর।

প্রতিটি সুনির্দিষ্ট পাঠ্য সম্পাদকের একটি "স্পেস সহ ট্যাবগুলি প্রতিস্থাপন করুন" থাকে এবং অনেক লোক এটি ব্যবহার করে। তবে সব সময় নয়.

যদিও কিছু পাঠ্য সম্পাদকরা কোনও ট্যাব দিয়ে রানের ফাঁকা স্থানগুলি প্রতিস্থাপন করতে পারে, এটি সত্যই বিরল।

নীচে লাইন । আপনি স্পেস দিয়ে ভুল করতে পারবেন না। আপনি ট্যাবগুলির সাথে ভুল হতে পারেন। তাই ট্যাব ব্যবহার করবেন না এবং ভুলগুলির ঝুঁকি হ্রাস করুন।


15
আমি কখনও কখনও ভুল পথে কিছু করার শপথ করতাম না কারণ অন্য অনেক লোক (লোক, পাঠ্য সম্পাদক ইত্যাদি )ও এটি ভুল উপায়ে ঘটে। 2015 সালে, কোনও পাঠ্য সম্পাদক যা ট্যাবগুলি ভালভাবে পরিচালনা করে না তা আবর্জনার ক্যানের সাথে সম্পর্কিত।
antred

2
"আপনি স্পেস দিয়ে ভুল করতে পারবেন না You আপনি ট্যাবগুলি দিয়ে ভুল হতে পারেন"। আমি খুঁজে পেয়েছি যে 100% টপসি-টারভি ভুল হতে পারে। আমার অভিজ্ঞতায়: "আপনি ট্যাবগুলির সাথে ভুল হতে পারবেন না You আপনি স্পেসগুলি দিয়ে ভুল হতে পারেন" ... বিশেষত কোড ভাগ করার সময়।
সেমরোয়ানিরগো

5
সুতরাং কেউ শেষ পর্যন্ত বলেছে: স্পেস ব্যবহার করুন কারণ এটি সর্বনিম্ন সাধারণ ডিনোমিনেটর। একই বিধিটি আমাদের অফিসে এমবিআর, বিআইওএস এবং কাগজের ফর্ম ধরে রাখতে to এগুলি আসলে ধারণাগত সমস্যাগুলি ব্যতীত, ট্যাবগুলি বনাম স্পেসগুলি 100% বোকা ব্যবহারকারী সমস্যা।
মিলিণ্ড আর

1
এটি আমার কাছে একটি আর্গুমেন্টাম অ্যাড পপুলাম বলে মনে হচ্ছে: মিথ্যা যুক্তি যা উপসংহারে পৌঁছে যে একটি প্রস্তাব সত্য কারণ অনেক বা বেশিরভাগ লোক এটি বিশ্বাস করে। কারণ প্রতিটি সম্পাদক ফাঁকা জায়গায় ট্যাবগুলি প্রতিস্থাপন করতে পারে তবে ফাঁকা স্থানগুলি সঠিক পছন্দ হ'ল ভুলকাজ !!
দুনজু

27

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

আপনি যদি পিইপি 8 টি অস্বীকার করার জন্য এবং ট্যাবগুলি ব্যবহার করার জন্য জোর করে থাকেন - বা আরও খারাপ, ট্যাব এবং স্পেসগুলি মিশ্রণ করে - অন্তত সর্বদা '-tt' যুক্তি দিয়ে অজগর চালান, যা বেমানান ইনডেন্টেশন করে (কখনও কখনও একটি ট্যাব, কখনও কখনও একই इंडেন্টেশনের জন্য একটি স্থান) স্তর) একটি ত্রুটি। এছাড়াও, যদি সম্ভব হয় তবে আপনার সম্পাদককে আলাদাভাবে ট্যাব প্রদর্শন করতে সেট করুন। তবে সত্যই, সেরা পন্থাটি ট্যাবগুলি, পিরিয়ড ব্যবহার না করা।


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

47
না, স্থানগুলির ক্ষেত্রেও এটি একই নয়। লোকজন স্পেসের প্রস্থে একমত হতে পারে।
রাফা ডাউগার্ড

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

26
হ্যাঁ, আমি জানি যে দুজনের মেশানো সমস্যার কারণ হতে পারে। আমি যা বুঝতে পারি না তা কেন কিছু লোক এটির জন্য ট্যাবগুলিতে দোষ দেয়। সমস্যাটি তাদের মিশ্রণ করছে, বিশেষত ট্যাবগুলিতে নয়। আপনি শূন্যস্থান দিয়ে ট্যাবগুলি প্রতিস্থাপন করে সমস্যার সমাধান করতে পারেন, তবে আপনি ট্যাবগুলি দিয়ে স্পেসগুলি প্রতিস্থাপন করেও সমস্যার সমাধান করতে পারেন।
জিম

70
এবং না, আমি যদি 8-প্রশস্ত ট্যাব ব্যবহার করি এবং আপনি 6-প্রশস্ত ট্যাব ব্যবহার করেন এবং আমরা কোডটি ভাগ করি তবে তা গোলমাল হয় না। পাইথন ইন্টারপ্রেটারের কাছে এটি কেবল একটিই ট্যাব।
জিম

22

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

যাইহোক, আইএমএইচও কয়েকটি ট্যাবগুলিতে শূন্যস্থানগুলির পক্ষে কিছু ছোটখাটো কারণ রয়েছে:

  • বিভিন্ন সরঞ্জাম। কখনও কখনও কোড প্রোগ্রামারের সম্পাদকের বাইরে প্রদর্শিত হয়। যেমন। নিউজগ্রুপ বা ফোরামে পোস্ট করেছে। স্পেসগুলি এখানে ট্যাবগুলির চেয়ে সাধারণত ভালভাবে কাজ করে - সর্বত্র ফাঁকা স্থানগুলি ম্যাঙ্গেল হয়ে যায়, ট্যাবগুলি পাশাপাশি করা হয় তবে বিপরীতে নয়।

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

  • অবিরত লাইন ইন্ডেন্টেশন। কখনও কখনও আপনি পূর্ববর্তীটি থেকে বাহিত হয় তা বোঝাতে কোনও লাইন ইন্ডেন্ট করতে চান। যেমন।

    def foo():
        x = some_function_with_lots_of_args(foo, bar, baz,
                                            xyzzy, blah)

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

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

বিষয়টিও জেমি জাওনস্কির এই নিবন্ধটি পড়ার মতো ।


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

3
@ সোভিয়েট: আপনি যদি স্পেস দিয়ে ইন্ডেন্ট করেন তবে আলাদা ট্যাব আকারের সাথে দেখার সাথে সাথে অ্যালাইনমেন্টটি গণ্ডগোল হয়ে যায়। এটি সংরক্ষণের একমাত্র উপায় হ'ল ইনডেন্ট স্তরে ট্যাবগুলি ব্যবহার করা এবং তারপরে বিশ্রামের জন্য স্থান - অর্থাৎ স্পেস এবং ট্যাবগুলি মিশ্রন করা, যা এটি তার নিজের সমস্যার দিকে পরিচালিত করে।
ব্রায়ান

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

2
@ ব্রায়ান: আমি দেখতে পাচ্ছি না কীভাবে এটি কোনও সমস্যার দিকে পরিচালিত করে। এটি ঠিক সঠিক উপায়ে, প্রসারণের জন্য ট্যাবগুলি, প্রান্তিককরণের জন্য স্পেস। এটি ইন্ডেন্টেশনের জন্য স্পেস এবং ট্যাবগুলিকে মেশানোর মতো নয় ।
antred

1
@ কোরডাম্পেরর উহ না, এটি অবশ্যই হয় না। আমি জানি যেহেতু পাইথন 3 কখনই আমার স্ক্রিপ্টগুলির কোনওটির জন্য অভিযোগ করে না এবং আমি অভিযুক্ত সময় / স্থান নির্ধারণের জন্য ইনডেন্টেশন / স্পেসের জন্য ট্যাব ব্যবহার করি। এছাড়াও, পিইপি 8 কোনও কিছুরই "নিষেধ" করতে পারে না, কারণ এটি নিছক একটি সুপারিশ (এবং আমার মতে একটি খাঁটিযুক্ত)।
antred

12

নোট করুন যে ট্যাবগুলির ব্যবহার পিইপি 8 এর অন্য দিকটিকে বিভ্রান্ত করে:

সমস্ত লাইন সর্বাধিক characters৯ টি অক্ষরে সীমাবদ্ধ করুন।

অনুমান করা যাক, আপনি 2 এর ট্যাব প্রস্থ ব্যবহার করেন এবং আমি 8 এর ট্যাব প্রস্থ ব্যবহার করি। আপনি আপনার কোডটি লিখেন যাতে আপনার দীর্ঘতম রেখাগুলি 79 টি অক্ষরে পৌঁছে যায়, তারপরে আমি আপনার ফাইলটিতে কাজ শুরু করি। এখন আমি হার্ড-টু-পঠিত কোড পেয়েছি কারণ (পিইপি অনুযায়ী):

বেশিরভাগ সরঞ্জামগুলিতে ডিফল্ট মোড়ানো কোডের ভিজ্যুয়াল কাঠামোকে ব্যাহত করে

যদি আমরা সবাই 4 টি স্পেস ব্যবহার করি তবে এটি সর্বদা একই। যার সম্পাদক 80 অক্ষরের প্রস্থকে সমর্থন করতে পারেন তিনি স্বাচ্ছন্দ্যে কোডটি পড়তে পারেন।দ্রষ্টব্য: 80 টি চরিত্রের সীমাটি নিজের মধ্যে একটি পবিত্র যুদ্ধ, সুতরাং এখানে এটি শুরু করা যাক না।

যেকোন অ-স্তন্যপায়ী সম্পাদকের কাছে স্পেস ব্যবহার করার বিকল্প থাকতে হবে যেন তারা ট্যাব (সন্নিবেশ করানো এবং মোছার উভয়ই) থাকে, যাতে এটি সত্যই কোনও বৈধ যুক্তি না হয়।


7

প্রশ্নের উত্তরটি হ'ল: পিইপি -8 একটি সুপারিশ করতে চায় এবং সিদ্ধান্ত নিয়েছে যে স্পেসগুলি বেশি জনপ্রিয় তাই এটি ট্যাবগুলিতে ফাঁকা জায়গাগুলির দৃ strongly়ভাবে সুপারিশ করবে।


পিইপি -8-তে নোটস

পিইপি -8 বলেছে 'প্রতি ইন্ডেন্টেশন স্তরের 4 টি স্পেস ব্যবহার করুন।'
এটি পরিষ্কার যে এটি স্ট্যান্ডার্ড প্রস্তাবনা।

'সত্যিকারের পুরানো কোডটির জন্য যা আপনি গণ্ডগোল করতে চান না, আপনি 8-স্পেস ট্যাব ব্যবহার চালিয়ে যেতে পারেন' '
এটি স্পষ্ট যে কয়েকটি পরিস্থিতিতে যখন ট্যাবগুলি ব্যবহার করা যেতে পারে।

'ট্যাব এবং স্পেসগুলি কখনও মিশ্রিত করবেন না।'
এটি মেশানোর সুস্পষ্ট নিষেধ - আমি মনে করি আমরা সকলেই এতে একমত। পাইথন এটি সনাক্ত করতে পারে এবং প্রায়শই দম বন্ধ করে দেয়। -T আর্গুমেন্ট ব্যবহার করে এটি সুস্পষ্ট ত্রুটি করে।

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

'নতুন প্রকল্পগুলির জন্য, কেবলমাত্র ট্যাবগুলিতে ফাঁকা স্থানগুলিই দৃ strongly়ভাবে প্রস্তাব দেওয়া হয়' '
এটি একটি স্পষ্ট সুপারিশ, এবং একটি শক্তিশালী, তবে ট্যাব নিষিদ্ধ নয়।


আমি পিইপি -8 এ আমার নিজের প্রশ্নের ভাল উত্তর খুঁজে পাচ্ছি না। আমি ট্যাব ব্যবহার করি, যা আমি অন্যান্য ভাষায় historতিহাসিকভাবে ব্যবহার করেছি। পাইথন ট্যাবগুলির একচেটিয়া ব্যবহারের সাথে উত্স গ্রহণ করে। আমার জন্য যথেষ্ট ভাল.

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

পাইথনকে পড়ার ইন্ডেন্টেশনের সময় ট্যাবগুলিকে এন স্পেস হিসাবে বিবেচনা করতে বলা যায় না? যদি আমরা প্রতি ইনডেন্টেশন 4 টি স্পেস এবং ট্যাব প্রতি 4 টি স্পেসে সম্মতি জানাতে পারতাম এবং পাইথনকে এটি মেনে নেওয়ার অনুমতি দিই, তবে কোনও সমস্যা হবে না।
আমাদের সমস্যার জিত-সমাধানের সন্ধান করা উচিত।


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

আপনি ঠিক বলেছেন - আমি ব্যাকস্পেসে উত্সর্গ করার কোনও বিকল্প দেখতে পাচ্ছি না, তবে আপনি সম্ভবত শিফট-ট্যাব ব্যবহার করে এটি মোকাবেলা করতে পারেন বা পরিবর্তে ইনডেন্ট (সিটিআরএল-শিফট-আই) হ্রাস করতে পারেন।
ব্রায়ান

আমি কেবল পাইস্ক্রিপ্টরটি চেষ্টা করছি যা আপনি যখন ট্যাব টিপবেন এবং যখন আপনি ব্যাকস্পেস টিপবেন তখন 4 এর মধ্যে সরিয়ে ফেলতে জায়গাগুলি ব্যবহার করা ভাল বলে মনে হয়।
কুমারানা

28
"আমাকে স্পেসগুলি মুছতে হবে! আরগ! ট্যাব হিসাবে চার বারের চেয়ে অনেক বেশি মুছতে হবে!" - আমি সমস্ত কিছুর জন্য ট্যাব ব্যবহার করার একক কারণ এবং কেন আমি মনে করি যে লোকেরা স্পেস ব্যবহার করে সে পাগল। :) আমি কখনই সমস্যা ছিল না, কেবল যখন আমি ওয়েব থেকে স্পেস ব্যবহার করে এমন কোনও জিনিস পেস্ট করি। তারপরে একটি সাধারণ অনুসন্ধান-প্রতিস্থাপনের স্থির করে দেয়।
অ্যাপেলেক্স

3

আমি আমার কোডটিতে সর্বদা ট্যাব ব্যবহার করেছি। এটি বলেছিল, আমি সম্প্রতি স্পেসগুলি ব্যবহার করার কারণ খুঁজে পেয়েছি: আমার নোকিয়া এন 900 ইন্টারনেট ট্যাবলেটে বিকাশ করার সময়, আমার এখন ট্যাব কী ছাড়াই একটি কীবোর্ড ছিল। এটি আমাকে ট্যাবগুলি অনুলিপি করে আটকানো বা স্পেস সহ আমার কোডটি আবার লিখতে বাধ্য করেছিল। আমি অন্য ফোনগুলির সাথে একই সমস্যার মধ্যে পড়েছি। মঞ্জুর, এটি পাইথনের মানক ব্যবহার নয়, তবে কিছু মনে রাখবেন।


2

জেডব্লিউজেড এটি সেরা বলেছে :

[লোকেরা] কোড পড়ার সময় এবং যখন তারা নতুন কোড লেখার কাজ শেষ করে, তখন তারা কোনও নতুন স্কোপ (বা সেক্সপ্রেস, বা যা কিছু) খোলার সাথে সাথে কোডটি কতগুলি স্ক্রিন কলাম প্রবর্তন করে তা যত্ন করে ...

... আমার মতে প্রযুক্তিগত সমস্যাগুলি সমাধান করার সর্বোত্তম উপায় হ'ল আদেশ দেওয়া যে ASCII # 9 টিএবি অক্ষরটি ডিস্ক ফাইলগুলিতে কখনই উপস্থিত না হয়: ডিস্কে লাইনগুলি লেখার আগে আপনার সম্পাদককে টিএবিগুলি যথাযথ স্থানে প্রসারিত করতে প্রোগ্রাম করুন। ..

... এটি ধরে নিয়েছে যে আপনি যেখানে স্ট্রিং বা চরিত্রের ধ্রুবকগুলির মতো প্রকৃতপক্ষে তাত্পর্যপূর্ণ সেগুলিতে ট্যাবগুলি কখনই ব্যবহার করবেন না, তবে আমি কখনই তা করি না: যখন এটি গুরুত্বপূর্ণ যে এটি একটি ট্যাব, আমি সর্বদা পরিবর্তে '' t 'ব্যবহার করি।


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

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

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

এটি কীভাবে এটি বুঝতে সক্ষম হবে তা আমি দেখছি না।
মার্ক সিডেপ

1

যেহেতু অজগর প্রোগ্রাম কাঠামোটি সনাক্ত করতে স্বর্ণের উপর নির্ভর করে তাই পরিচয় সনাক্তকরণের একটি সুস্পষ্ট উপায় প্রয়োজন। ফাঁকা জায়গা বা ট্যাবগুলি বেছে নেওয়ার কারণ এটি।

যাইহোক, পাইথনেরও কেবল কাজ করার একটি উপায় থাকার শক্তিশালী দর্শন রয়েছে, সুতরাং ইন্টেন্টেশন করার জন্য একটি উপায়ের জন্য অফিসিয়াল সুপারিশ থাকা উচিত।

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


8
এবং যেহেতু প্রতিটি সম্পাদকও তার রঙীন স্কিমটি বেছে নিতে পারে, আপনি কি মনে করেন যে কোন বর্ণ স্কিমটি তাদের ব্যবহার করা উচিত?
o0 '

8
হ্যাঁ তবে এই অসঙ্গতি আসলে কী আরও বোঝায় না? কারণ এটি কেবল চাক্ষুষ পছন্দের বিষয়। আমি যদি আমার সম্পাদকটিতে আরও বড় "দেখা" ইন্ডেন্ট পছন্দ করি তবে আমি আমার ট্যাবগুলিকে 8 টি স্পেস হিসাবে সেট করতে পারি, যদি আমি কম পছন্দ করি তবে আমি এটি 2 এ সেট করতে পারি That এইভাবে কোডটি, প্রকৃত বিন্যাসটি পরিবর্তন না করেই, সেই ব্যক্তিটির পক্ষে আরও উপযুক্ত এটি পর্যবেক্ষণ।
dennmat

8
আমি ডেন্ম্যাট-এর সাথে একমত- আমি যদি দৃষ্টিভঙ্গিভাবে 2 টি স্পেস পছন্দ করি এবং গিডো দৃশ্যত 4 টি স্থান পছন্দ করে, তবে লজিক্যাল পছন্দটি ট্যাব ইন্ডেন্টেশন ব্যবহার করা।
সেপিরো

0

ট্যাবগুলির চেয়ে ফাঁকা জায়গাগুলির আমি উল্লেখ করতে সবচেয়ে গুরুত্বপূর্ণ সুবিধাটি হ'ল প্রচুর প্রোগ্রামার এবং প্রকল্পগুলি সোর্স কোডের জন্য একটি নির্দিষ্ট সংখ্যক কলাম ব্যবহার করে এবং যদি কেউ তাদের ট্যাবস্টপ সেটটি 2 স্পেসে সেট করে এবং প্রকল্পটি 4 টি স্পেস ব্যবহার করে তবে ট্যাবস্টপ লম্বা লাইনগুলি অন্য ব্যক্তির সম্পাদক উইন্ডোর জন্য খুব দীর্ঘ হতে চলেছে। আমি সম্মত হই যে ট্যাবগুলি দিয়ে কাজ করা সহজ তবে আমি মনে করি সহযোগিতার জন্য স্থানগুলি সহজতর, যা পাইথনের মতো বৃহত ওপেন সোর্স প্রকল্পে গুরুত্বপূর্ণ।


2
এটি ভুল: আপনি যদি ট্যাব এবং স্পেসগুলি মিশ্রিত করেন তবেই এটি ঘটে থাকে এবং আপনি সবাইকে ফাঁকের পরিবর্তে ট্যাব ব্যবহার করতে বাধ্য করে এটির সমান সমাধান করবেন।
o0 '

0

আপনি আপনার কেক রাখতে পারেন এবং এটি খেতে পারেন। ট্যাবগুলি স্বয়ংক্রিয়ভাবে ফাঁকাতে আপনার সম্পাদককে সেট করুন।

(এটি :set expandtabভিমে হবে ))


0

আমার ধারণা হ'ল বেশিরভাগ লিনাক্স পাঠ্য সম্পাদকরা ডিফল্টরূপে হাস্যকরভাবে বড় দেখায়। আমি ট্যাবগুলিতে স্পেস ব্যবহার করার জন্য অন্য কোনও ভাল কারণ সম্পর্কে ভাবতে পারি না।


-1

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

  1. যদি কোনও সম্পাদক ট্যাবগুলি না দেখায় (যা কিছুটা কনফিগারেশনের উপর নির্ভর করে ঘটে), অন্য লেখক ধরে নিতে পারেন যে আপনার কোডটি 4 টি স্পেস ব্যবহার করে, খ / সি প্রায় সমস্ত পাইথন কোড প্রকাশ্যে পাওয়া যায়; যদি সেই একই সম্পাদকটির ট্যাব প্রস্থ 4 এর মতো হয়ে থাকে, বাজে জিনিসগুলি ঘটতে পারে - কমপক্ষে, দরিদ্র ব্যক্তি একটি ইনডেন্টেশন ইস্যুতে সময় হারাবে যা কনভেনশনটিতে আটকে থাকা খুব সহজ ছিল। সুতরাং আমার জন্য, এক নম্বর কারণ হ'ল ধারাবাহিকতা সহ বাগগুলি এড়ানো।

  2. ট্যাব বা স্পেসগুলি কোনটি উত্তম সে প্রশ্নটি পুনরায় প্রত্যাখ্যান করে আপনার জিজ্ঞাসা করা উচিত যে ট্যাবগুলির সুবিধা কী; আমি ট্যাবগুলির প্রশংসা করে প্রচুর পোস্ট দেখেছি, তবে তাদের জন্য কয়েকটি জোর যুক্তিযুক্ত যুক্তি; ইমাকস, ভিআই (এম), কেট, ... এর মতো ভাল সম্পাদক আপনার কোডের শব্দার্থবিজ্ঞানের উপর নির্ভর করে যথাযথ ইনডেন্টেশন করে - এমনকি ট্যাব ছাড়াই; একই সম্পাদকগুলি ব্যাকস্পেস ইত্যাদিতে অনিয়ন্ত্রিত করতে সহজেই কনফিগার করা যায় etc.

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

  4. ইন্ডেন্টেশনের জন্য স্পেস ব্যবহার করে "লেআউট ট্রিকস" যা কোড বোঝা সহজতর করতে পারে; এর কয়েকটি উদাহরণ পিইপি 8-তে তালিকাভুক্ত; যেমন।

    foo = long_function_name(var_one, var_two,
                             var_three, var_four)
    
    # the same for lists
    a_long_list = [1,
                   2,
                   # ...
                   79]
    
    # or dictionaries
    a_dict = {"a_key": "a_value",
              "another_key": "another_value"}

    অবশ্যই, উপরেরটিও হিসাবে সুন্দরভাবে লেখা যেতে পারে

    foo = long_function_name(
        var_one, var_two,
        var_three, var_four)
    
    # the same for lists
    a_long_list = [
        1,
        2,
        # ...
        79]
    
    # or dictionaries
    a_dict = {
        "a_key": "a_value",
        "another_key": "another_value"}

    তবে, পরবর্তীগুলি কোডের আরও লাইন নেয় এবং কম লাইনগুলি মাঝে মাঝে ভাল হওয়ার পক্ষে যুক্তিযুক্ত হয় (বি / সি আপনি একটি পর্দায় আরও পাবেন)। তবে আপনি যদি সারিবদ্ধতা পছন্দ করেন, স্পেসগুলি (একটি ভাল সম্পাদক দ্বারা অগ্রাধিকারপ্রাপ্ত) আপনাকে এক অর্থে পাইথনে ট্যাবগুলির চেয়ে বেশি স্বাধীনতা দেয়। [আচ্ছা, আমার ধারণা কিছু সম্পাদক আপনাকে একই ডাব্লু / ট্যাবগুলি করতে দেয়;) - কিন্তু স্পেস সহ, তারা সবাই করেন ...]

  5. সবাই যে একই যুক্তিতে ফিরে আসছে - পিইপি 8 টি ফাঁক করে দেয় (ঠিক আছে, দৃ strongly়ভাবে প্রস্তাব দেয়) s যদি এমন কোনও প্রকল্পে আসছেন যা কেবলমাত্র ট্যাব ব্যবহার করে তবে অবশ্যই আপনার পছন্দ কম। কিন্তু পিইপি 8 কনভেনশন প্রতিষ্ঠার কারণে প্রায় সমস্ত পাইথন প্রোগ্রামার এই স্টাইলে অভ্যস্ত। এটি বেশিরভাগ প্রোগ্রামারদের দ্বারা গৃহীত স্টাইলে একটি sensক্যমত্য সন্ধান করাটিকে আরও সহজ করে তোলে ... এবং ব্যক্তিদের স্টাইলে একমত হওয়া অন্যথায় খুব কঠিন হতে পারে।

  6. স্টাইল প্রয়োগে সহায়তা করা সরঞ্জামগুলি অতিরিক্ত প্রচেষ্টা ছাড়াই সাধারণত পিইপি 8 সম্পর্কে সচেতন হয়। এটি একটি দুর্দান্ত কারণ নয়, তবে বাক্সের বাইরে জিনিসগুলি কাজ করা খুব ভাল।


-3

ট্যাবগুলির সাথে সর্বজনীন সমস্যা হ'ল এগুলি বিভিন্ন পরিবেশে আলাদাভাবে উপস্থাপন করা যায়।
প্রদত্ত সম্পাদকটিতে একটি ট্যাব 8 টি স্পেস বা এটি 2 হতে পারে
some

ট্যাবগুলির সাথে অন্য একটি সমস্যা হ'ল কীভাবে সেগুলি মুদ্রিত আউটপুটে উপস্থাপন করা হয়। আমি বিশ্বাস করি বেশিরভাগ প্রিন্টার একটি ট্যাবকে 8 টি স্পেস হিসাবে ব্যাখ্যা করে।

স্পেস সহ, কোনও সন্দেহ নেই। লেখকের উদ্দেশ্য অনুসারে সবকিছু সীমাবদ্ধ থাকবে।


14
অন্য একজন যিনি মূলত ট্যাবটি ভুল বুঝেছেন ... একটি যান্ত্রিক টাইপরাইটার পান এবং এটির সাথে কিছুক্ষণ খেলেন, সত্যই! 1 টি ট্যাব 8 টি স্পেসের সমান নয়! এটি সমাপ্তি পর্যন্ত_ 8_ স্পেস পর্যন্ত ! ওটোহ: আনুপাতিক হরফ সহ, ট্যাবগুলি সারিবদ্ধকরণের গ্যারান্টি দেওয়ার একমাত্র উপায়।

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

-4

জিম এবং টমাস বাউটারদের মধ্যে আলোচনার বিষয়েমন্তব্যে মধ্যে ।

সমস্যাটি ছিল ... যেহেতু ট্যাব এবং স্পেসগুলির প্রস্থ উভয়ই পৃথক হতে পারে - এবং যেহেতু প্রোগ্রামাররা উভয় প্রস্থে একমত হতে পারে না - কেন এটি ট্যাবগুলির দোষ।

আমি এতে জিমের সাথে একমত - ট্যাবগুলি নিজের এবং নিজের মধ্যে মন্দ নয়। কিন্তু একটি সমস্যা আছে...

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

সুতরাং যদিও এটি সত্য যে এমনকি স্পেসগুলিও ধারাবাহিকতার গ্যারান্টি দিতে পারে না - তারা কমপক্ষে সর্বত্র আপনার OWN কোডের চেহারাতে আপনাকে আরও নিয়ন্ত্রণের ক্ষমতা দেয় - এমন কিছু যা ট্যাবগুলি পারে না।

আমি মনে করি যে কোডার লেখার প্রোগ্রামারদের মধ্যে এটি ধারাবাহিকতা নয় - তবে সম্পাদকদের সেই কোডটি দেখানো ধারাবাহিকতা - যা স্পেসগুলি অর্জন করা সহজ করে (এবং চাপিয়ে দেওয়া)।


6
আপনি "সম্পাদকের জন্য ট্যাব-প্রস্থ সেটিংসের দয়াতে"? যদি আপনার সম্পাদক আপনাকে
পছন্দসই

4
@ জিগগ এই তর্কটির সাথে একেবারেই অপ্রাসঙ্গিক, যেহেতু তিনি (তিনি?) তার নিজের কোড সম্পর্কে বিশেষভাবে কথা বলছেন (যে তথ্যটি আরও সাহসী, তির্যক এবং সমস্ত ক্যাপগুলিতে রয়েছে)। আলোচনার কোথাও কোডটি প্রাসঙ্গিক নয়।
ব্যবহারকারী 137369

1
সম্পাদকগুলি কোড সহ কেবলমাত্র সরঞ্জামই নয়। এছাড়াও পৃথকীকরণ, ট্রেসব্যাকস, গিথুব এবং অন্যান্য ওয়েব পৃষ্ঠাগুলি রয়েছে এবং এর ফলে সমস্ত আপনার নিয়ন্ত্রণের বাইরে কিছু ট্যাব প্রস্থ বেছে নেবে (সম্ভবত 8)।
রিমকো জারলিচ

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