আপনি কীভাবে আপনার কোডে ফাঁকা লাইন ব্যবহার করবেন?


31

কোঁকড়ানো ধনুর্বন্ধনী প্লেসমেন্টগুলি নিয়ে ইতিমধ্যে আলোচনায় সাদা স্থান সম্পর্কে কয়েকটি মন্তব্য রয়েছে।

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

প্রকৃতপক্ষে, আমি বলতে চাই যে আমি আমার কোডটি কাঠামোর মতোই লিখেছি: আমি অনুচ্ছেদ তৈরি করি, কয়েকটি লাইনের চেয়ে বেশি নয় (অবশ্যই 10 এর চেয়ে কম), এবং প্রতিটি অনুচ্ছেদে স্ব-অন্তর্নিহিত করার চেষ্টা করব।

উদাহরণ স্বরূপ:

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

সব মিলিয়ে আমার খুব কমই 4/5 টিরও বেশি লাইন একসাথে ক্লাস্টার হয়েছে যার অর্থ খুব স্পার্স কোড।

আমি এই সমস্ত সাদা স্থানকে বর্জ্য হিসাবে বিবেচনা করি না কারণ আমি কোডটি কাঠামোর জন্য প্রকৃতপক্ষে এটি ব্যবহার করি (যেমন আমি প্রকৃতপক্ষে ইন্ডেন্টেশনটি ব্যবহার করি), এবং তাই আমি এটি পর্দা এস্টেটের জন্য মূল্যবান মনে করি।

উদাহরণ স্বরূপ:

for (int i = 0; i < 10; ++i)
{
    if (i % 3 == 0) continue;

    array[i] += 2;
}

আমি বিবেচনা করি দুটি বক্তব্যের চেয়ে স্পষ্ট স্বতন্ত্র উদ্দেশ্য রয়েছে এবং এটি সুস্পষ্ট করার জন্য পৃথক হওয়ার যোগ্য।

সুতরাং, আপনি কীভাবে কোডে ফাঁকা লাইন ব্যবহার করেন (বা না)?


6
if (i % 3 != 0) { <newline here> array[i] += 2; <newline here> }, তবে আমি আপনার
বক্তব্যটি

এই ধরণের প্রশ্ন গঠনমূলক নয় । "হ্যাঁ" এবং "না" কেবলমাত্র দুটি উপলভ্য উত্তর আপনি পুনরায় লিখে দিতে পারেন many

1
একটি ভাল প্রশ্ন আপনি এবং কেন ফাঁকা লাইন ব্যবহার করবেন? আমি যেমন খালি রেখা ব্যবহার করি ঠিক তেমনভাবে আপনিও একই প্রেরণা দিয়ে।
ডোমিনিক ম্যাকডোনেল

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

3
for (int i = 0; i < 10; i += 3) { <newline here> array[i] += 2; <newline here> }তবে আমি আপনার
বক্তব্যটি

উত্তর:


87

সর্বদা

পাঠযোগ্য কোড সাফ করার জন্য হোয়াইটস্পেস অত্যন্ত গুরুত্বপূর্ণ। একটি ফাঁকা রেখা (বা দুটি) কোডের লজিক্যাল ব্লকগুলিকে চাক্ষুষভাবে আলাদা করতে সহায়তা করে।

উদাহরণস্বরূপ, স্টিভ ম্যাককনেলের কোড সম্পূর্ণ, লেআউট এবং স্টাইল সম্পর্কিত দ্বিতীয় সংস্করণ অধ্যায় থেকে:

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


12
আমি কাউকে বলতে বলতে শুনতে পারি "তবে তারপরে আপনার পদ্ধতিটি এক্সট্রাক্ট করা উচিত!"। একটি অনুচ্ছেদে হ'ল যখন পদ্ধতিটি উত্তোলনের যথেষ্ট কারণ নেই।
ফ্র্যাঙ্ক শিয়েরার

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

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

আমি আপনার অবস্থান সমর্থন করতে কিছু তথ্য যুক্ত করেছি। দেখুন: মেটা.পোগ্রামার.সটাকেক্সচেঞ্জ
জেফ

2
এই তথ্যটি খালি রেখাগুলি সম্পর্কে কিছুই বলে না, কেবল ইনডেন্টেশন সম্পর্কে ..
ব্লারগার্ড

21

হ্যাঁ স্পষ্টতা জন্য।

ঠিক যেমন আমি এই উত্তরে করেছি।


13

আমি করি তবে আমি নিশ্চিত করে রেখেছি যে এটি রেখেছি document

(This line intentionally left blank.)

লাইনে


1
মন্তব্য সহ সাদা লাইনগুলি কোড থেকে মনোযোগ নিতে পারে
জুলিওসি

1
"এই লাইনটি ইচ্ছাকৃতভাবে ফাঁকা ছেড়ে গেছে" বলে প্রচুর মন্তব্য করেছে ... আপনি কি ধরে নিতে পারবেন না যে কোনও লাইন ফাঁকা থাকলে তা ইচ্ছাকৃত হয়, নাহলে এটি কোড পর্যালোচনা পাস করত না?
বিকল্প 22

43
হতে পারে এটি কেবল আমি, কিন্তু আমি ধরে নিয়েছি যে ওপি রসিকতা করছে ...
জেএসবি ձոգչ

7
আপনি কত দিন ধরে আইবিএমের জন্য কাজ করছেন?
Guillaume,

12

হ্যাঁ, তবে আমি এটি আপত্তি করি না।

আমি কোড দেখেছি যেখানে পদ্ধতির প্রতিটি কোডের লাইনটি একটি ফাঁকা রেখার দ্বারা পৃথক করা হয়, এবং দুটি ফাঁকা লাইন ব্যবহৃত হয় যেখানে লজিকাল বিভাজন ঘটে। এটি আমার মতে এটি আরও কম পাঠযোগ্য করে তোলে। আমি ক্রেজিট প্রান্তিককরণ তৈরি করতে ব্যবহৃত হোয়াইট স্পেসও দেখেছি, যেমন:

//Prot.   Return type                    Name                 Arg1        Arg2
//=====   ============================== ==================== =========== ========

private   int                            AMethodWithALongName(string s,   object o)
{
    ...
}

private   IDictionary<MyLongObject, int> SomethingCrazy      (string s)
{
    ...
}

protected void                           Foo                 (string str, object o)
{
    ...
}

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


1
দেখে মনে হচ্ছে এমন কিছু যা প্রাথমিক ধারণা স্তরের কলেজ কোর্সে ব্যবহৃত হবে যাতে কিছু ধারণা কীভাবে চালিত হয়। এটি কি আসলে কোনও পেশাদার পরিবেশে ব্যবহৃত হয়েছিল?
rjzii

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

এটি একটি শিরোলেখ বা ইন্টারফেস ফাইলে কাজ করতে পারে
মিং-টাং

সুতরাং যে লোকটি সেই ইন্ডেন্টেশন স্কিমটি লিখেছিল, যখন সে ক্লাসে একটি নতুন পদ্ধতি যুক্ত করেছে এবং পদ্ধতিটি ফেরতের ধরন বিদ্যমান রিটার্নের ধরণের যে কোনওটির চেয়ে দীর্ঘ ছিল, সে অন্য সমস্ত পদ্ধতির জন্য হোয়াইটস্পেস ইনডেন্টেশনটি পুনরায় সারণি করে দেবে the বর্গ?
মাইক ক্লার্ক

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

5

আমার কোডটি এভাবে লেখার জন্য আমি অনেক সমালোচনা করি। কেউ বুঝতে পারে না কেন এইভাবে কেউ এটি করবে না।

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


আপনি যে অনুমান করছেন তা হ'ল আপনার কোডটি সংক্ষেপিত করা পাঠযোগ্যতার সহায়তা করে এবং আমি মনে করি না যে এটি সর্বদা প্রদত্ত।
জেসন বেকার 0

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

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

5

আমি সবসময় সফ্টওয়্যার লিখি না, তবে আমি যখন করি তখন আমি স্পষ্টতার জন্য ফাঁকা লাইন ব্যবহার করি।


4
আমি প্রায়শই হার্ডওয়ারও লিখি, তারপর এটি মুদ্রণ করি। এটা এত সস্তা।
টিম পোস্ট

5
ডস ইকুইস রসিকতা?
পেপারজাম

@ টিম আসলে, এটি এত মজাদার নয়: 3 ডি প্রিন্টিং ;) (এবং… সুন্দর হোন , আমরা সবাই এখানে স্থানীয় ইংরেজী স্পিকার নই :) :)
তাকেশীন

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

আমি সফ্টওয়্যার লিখি না, তবে হার্ডওয়ার দিয়েছি।
mlvljr

5

আমি যতটা সম্ভব কোডটি পরিষ্কার করার জন্য আছি এবং হোয়াইটস্পেস প্রায়শই সেই প্রয়াসের একটি দরকারী সরঞ্জাম। তবে আসুন রিফ্যাক্টরিংটি ভুলে যাবেন না:

  • ক্লাসে, আমি পরবর্তী পদ্ধতি থেকে ফাঁকা রেখার দ্বারা পৃথক করার সময় তাদের একসাথে যাওয়ার পদ্ধতিগুলি গোষ্ঠীভুক্ত করব।

যেহেতু আপনার বেশ কয়েকটি সম্পর্কিত সদস্য রয়েছে, তারা নতুন ক্লাসের প্রার্থী।

  • যদি আমার কোনও মন্তব্য লেখার প্রয়োজন হয় আমি সাধারণত মন্তব্যের আগে একটি ফাঁকা লাইন রাখি

কোড যখনই কোনও মন্তব্য চান যথেষ্ট অস্পষ্ট, আমি জিজ্ঞাসা করব যে আমি মন্তব্যটির প্রয়োজন নেই বলে কোডটি যথেষ্ট পরিষ্কার করতে পারি?

  • একটি পদ্ধতিতে, আমি প্রক্রিয়াটির প্রতিটি ধাপে একটি অনুচ্ছেদ তৈরি করি

কেন প্রতিটি "অনুচ্ছেদে" জন্য একটি পদ্ধতি তৈরি করবেন না?

আপনি যদি আপনার ক্লাসে প্রচুর পদ্ধতি অবলম্বন করেন তবে নতুন ক্লাস নিষ্কাশন সম্পর্কে আমার নোটটি উপরে দেখুন।


5

হ্যাঁ। এটি দৃশ্যত কোনও ফাইল স্ক্যান করা সহজ করে তোলে। অন্যান্য বিষয়গুলির মধ্যে এটি স্পষ্ট করে তোলে কোন মন্তব্যটি কোন লাইনের সাথে চলেছে।

Some code here
// Which line does this comment go with?
More code here

// It's pretty clear which line this comment goes with
More code here

Still more code here

4

আমি ফাঁকা এবং ধারাবাহিকভাবে ফাঁকা রেখা ব্যবহার করি এবং ধারাবাহিকভাবে অল্প পরিমাণে বেশি গুরুত্বপূর্ণ। যাহোক:

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

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

// I don't like this
if (something == anotherthing) {
    print ...
    update ...
}

// I much prefer this
if (something == anotherthing)
{
    print ...
    update ...
}

// I loathe this - not least for its inconsistent spacing
if (something == anotherthing) {

    print ...
    update ...
}

// I loathe this too, for its absurd waste of vertical space
if (something == anotherthing) {

    print ...
    update ...

}

3

যা সবচেয়ে স্পষ্টত এবং অবাক বিস্ময়কর তা লিখুন।

function validEmail($addr) {
    $regex = "/.../";   
    return preg_match($regex, $addr);
}

এই ফাংশনটির জন্য 12 লাইন ডক মন্তব্যের প্রয়োজন নেই।

আসলে এটির কোনও মন্তব্যের দরকার নেই।

বা ফাঁকা লাইন।

তারা এর সারাংশ থেকে বিরত হবে।


1
কী ঠিকানাগুলি গ্রহণযোগ্য তা বর্ণনা করে উপরে একটি মন্তব্যটি দুর্দান্ত হবে। কোনও ইমেল ঠিকানা যাচাই করার জন্য কোনও নিয়মিত অভিব্যক্তি সত্যই ব্যবহৃত হতে পারে?
কেভিন

3

ভিতরে ফাংশন? কদাচিৎ

আমার যদি স্পষ্ট আলাদা ব্লক থাকে তবে এটি একটি নতুন ফাংশনে রিফ্যাক্টরিং। কয়েকটি ক্ষেত্রে এর মূল্য না হলে।

আমার জন্য ফাংশনের অভ্যন্তরে ফাঁকা রেখাগুলি সবচেয়ে ভুল "সেরা অনুশীলনগুলি"।


2

প্রায়ই

একইভাবে প্রক্রিয়াজাত করা কোডের লজিক্যাল ব্লকগুলির জন্য এটি ব্যবহার করুন। আপনি একটি আলাদা পদক্ষেপ করছেন তা দেখানোর জন্য একবার আপনি একটি মন্তব্য যুক্ত করুন - সময় বের করার পদ্ধতি।

গুড হোয়াইটস্পেস

{
    int x = computeX();
    x += ADJUSTMENT_FACTOR_X;

    int y = computeY();
    y += ADJUSTMENT_FACTORY_Y;

    setPosition(x, y);
}

খারাপ হোয়াইটস্পেস

{
    //Open a connection
    String serverAddress = lookupAddress();
    Connection connection = openConnection(serverAddress);
    connection.login(user, password);


    //Go get stuff from the server
    item1 = connection.get(1);
    item2 = connection.get(2);

    //Close connection
    connection.close();

    //log data
    log(item1);
    log(item2);

    //Update client
    gui.updateView(item1, item2);        
}    

বনাম

{
    Connection connection = openConnection();
    updateData(connection);
    closeConnection(connection);
    logUpdate();
    updateGui();
}

বনাম

{
     updateDataFromServer();
     logUpdate();
     updateGui();
}

4
আমি ধরে নিচ্ছি আপনার খারাপ হোয়াইটস্পেস উদাহরণটি কী খারাপ হিসাবে বিবেচিত হবে তার একটি সংক্ষিপ্ত সংস্করণ। বর্তমান দৈর্ঘ্যে এটি আলাদা হওয়া অপ্রয়োজনীয় বলে মনে হচ্ছে।
অ্যালন গুরালেনেক

1
আমি দেখতে পাচ্ছি না কেন খারাপ খারাপ বা আপনি কেন ভিএস লিখেছেন

5
এই মতামতগুলির কোনওটিরই কোনও প্রয়োজন নেই, এবং কেন বিশ্বের বিশ্বে এই connection.close()closeConnection(connection)
বিকল্পটি নেওয়া

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

এবং আপনি কেবল তৈরি করেন item1এবং item2বৈশ্বিক ভেরিয়েবলগুলি যে পদ্ধতিগুলির মাধ্যমে যোগাযোগ করে? Ick!
টিএমএন

2

আমি কেবল হোয়াইটস্পেসই ব্যবহার করি না, আমি স্বচ্ছতার জন্য ব্রেস ব্যবহার করি use

এগুলি বলার জন্য আমি যে ধনুকগুলি ব্যবহার করি তা কার্যকারিতা হতে পারে।

code
{
    code
    code
    code
    code
}
{
    code
    code=code
    code
    code

    code()
    code()
}

2

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

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

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

...

সংক্ষেপণের জন্য উচ্চ সহনশীলতা সহ একটি প্রোগ্রামার আসলে স্ক্রিনফুল গল্প বলার দ্বারা বাধা দেয় ind কেন? কারণ একটি কোড বেস বুঝতে আপনার নিজের মাথার মধ্যে এটি যথাসম্ভব প্যাক করতে হবে। যদি এটি একটি জটিল অ্যালগরিদম হয় তবে একজন অভিজ্ঞ প্রোগ্রামার পুরো জিনিসটি পর্দায় দেখতে চান, যার অর্থ ফাঁকা রেখা সংখ্যা এবং ইনলাইন মন্তব্যগুলি হ্রাস করা - বিশেষত মন্তব্যগুলি যা কোডটি কী করছে তা কেবল পুনরাবৃত্তি করে। এটি কোনও এন 100 বি প্রোগ্রামার যা চায় তার ঠিক বিপরীত। n00bs একবারে একটি বিবৃতি বা অভিব্যক্তিতে ফোকাস করতে চায়, চারপাশের সমস্ত কোডকে দৃষ্টির বাইরে নিয়ে যায় যাতে তারা মনোনিবেশ করতে পারে, জোরে জোরে out

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


2

একজন অধ্যাপক ইমেরিটাস পরামর্শের দুটি দুর্দান্ত টুকরো দিয়েছেন

  1. সাদা স্থান বিনামূল্যে
  2. কাগজের সামনের দিকে ফিরে আসা বড় বড় স্ট্যাপলগুলি ব্যবহার করবেন না, তবে আমি আপনাকে ব্যর্থ করব।

1

আমার থাম্বের নিয়মগুলি হ'ল:

  1. গতকাল আমি যে কোডটি লিখেছি তা যদি আমার সমস্যা হয় তবে আমার সম্ভবত একটি পদ্ধতি বা তিনটি বের করতে হবে।

  2. যদি আমার শ্রেণির সংজ্ঞাটি খুব সহজে পড়তে হয় তবে আমার সম্ভবত একটি মডিউল / ইন্টারফেস / অবজেক্ট বের করা দরকার।

  3. পদ্ধতির সংজ্ঞা: একটি লাইন যুক্ত করুন

  4. মডিউল / শ্রেণীর সংজ্ঞা: দুটি লাইন যুক্ত করুন


1

আমি অনুচ্ছেদ হিসাবে একইভাবে সাদা স্থানের কথা ভাবতে চাই। আপনি এক লাইনে একত্রিত হন যা একটি ধারণাতে অবদান রাখে।

আপনি যদি কোনও নতুন ধারণা বা একই ধারণাটির নতুন দিক শুরু করেন তবে আপনি একটি নতুন অনুচ্ছেদ শুরু করেন - এটির মতো।

আবশ্যক কোডে, আমি একত্রীকৃত কার্য সম্পাদন করে এমন কার্যগুলিকে একত্রিত করি; ঘোষিত কোডে, আমি একত্রে কোডটি গোষ্ঠী করি যা একটি ধারণার একটি সম্মিলিত বিবৃতি বর্ণনা করে।

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


1

ফাঁকা লাইনগুলি আমার মতে একটি আবশ্যক। আমি কোডের বিভিন্ন লজিক্যাল ব্লকগুলি পৃথক করতে তাদের ব্যবহার করি। কোডটি পঠনযোগ্য করে তোলে। পঠনযোগ্য কোডটি ভাল কোড;)

আমার আদর্শ কোড পিসটি হ'ল প্রতিটি লজিক্যাল ব্লক একটি ফাঁকা রেখা দ্বারা আলাদা করা হবে এবং প্রতিটি ব্লকের শীর্ষে একটি মন্তব্য রয়েছে যাতে একটি বড় যুক্তি রয়েছে।

অবশ্যই, লোকেরা যদি সর্বত্র একাধিক ফাঁকা লাইন যুক্ত করে এটি করে তবে আমি এটি খুব বিরক্তিকর বলে মনে করি :(


1

আমি কেবল ঘোষণা এবং কোড পৃথক করতে কোনও ফাংশন / পদ্ধতির মধ্যে শ্বেতস্পেস ব্যবহার করি।

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

সাধারণত, পুসডো-কোডে:

def function(arg1, argn, ...)
    INITIALIZERS

    CODE
    BLOCK_START
        INITIALIZERS

        CODE
    BLOCK_END
    CODE
end

আমি যদি অকেজো সাদা জায়গা দেখি তবে আমি সাধারণত ক্রিঞ্জ করি।


এটি সি-ইশ দেখায়, আমার সি ++ কোডিং স্ট্যান্ডার্ড কোনও বস্তুর সূচনা না করে এটি ঘোষণা না করার পরামর্শ দেয়, যা এই ব্যবহারটির
অব্যাহতি দেয়

@ ম্যাথিউ এম: ঠিক আছে, তারপরে সূচনাগুলি INITIALIZERS দ্বারা প্রতিস্থাপন করুন। তবে আমি কখনই কোনও ব্লকের মাঝখানে সূচি দেখতে চাই না। যদি এটির প্রয়োজন হয় তবে এটির জন্য একটি ছোট স্কোপ প্রয়োজন so তাই এটির জন্য একটি ব্যক্তিগত পদ্ধতি / ফাংশন প্রয়োজন।
হাইলেম

0

সাদা স্থান অত্যন্ত মূল্যবান।

এখানে চুক্তিটি রয়েছে ... E = MC 2 এর মতো জটিল কোড লেখার মতো নার্ডগুলি তাদের প্রোগ্রামিং দক্ষতা প্রদর্শন করতে দুর্দান্ত।

এখন আসুন ছয় মাস আগে লাফিয়ে পড়ুন, এবং সকাল সকাল 2:00 টা এবং ছয় মাসের মধ্যে যে ব্যবস্থাটি দেখা হয়নি তা E = MC 2 এর খুব লাইন ভেঙে গেছে । এটি ডিবাগ করা প্রায় অসম্ভব ... প্রত্যেকে বাইরে বেরোন।

ধরুন কোডটি আরও এরকম দেখাচ্ছে ...

See Dick
See Jane
See Dick and Jan

এটি যদি সকাল 2:00 টা হয় এবং কোডটি ভাঙা হয়। একটি দ্রুত নজরে আপনাকে দেখায় যে তিনটি লাইন হওয়া উচিত ছিল

See Dick and Jane

সমস্যা সমাধান.

নীচে লাইন ... সাদা স্থান ব্যবহার করুন।


1
এরম ... এই উদাহরণগুলির কোনওটিই যদিও সত্যই আপনার বক্তব্যটিকে সমর্থন করে না। ব্যক্তিগতভাবে, আমি মনে করি যে E = এমসি 2 ই = এমসি 2 এর চেয়ে বেশি পঠনযোগ্য (নীচের লাইনটি সাদা স্থান ব্যবহার করা উচিত, তাই না?)। ওহ, এবং আপনি এখনও উচ্চ বিদ্যালয়ে না থাকলে আমি নিশ্চিত যে আপনি "নার্ভ" এর চেয়ে অসম্মতিযুক্ত লোকদের উল্লেখ করার জন্য আরও ভাল উপায় নিয়ে আসতে পারেন।
জেসন বেকার 0

@ জেসন - ভাল পয়েন্ট খারাপ শব্দ পছন্দ। E = MC2 অনেক বেশি পঠনযোগ্য, আমি যে পয়েন্টটি দেখার চেষ্টা করছিলাম সেটাই ছিল না। এটি আপনার ওয়েবসাইট YAGNI এবং SYNDI- তে কথা বলার মতোই। jasonmbaker.com/tag/pogramming
মাইকেল রিলি -

0

অন্য অনেকের বক্তব্য অনুসারে, ফাঁকা লাইনগুলি কোডের সহজ পাঠের জন্য তৈরি করে। তবে কিছু ভাষা রয়েছে যা এই মানটিকে কার্যকর করে। আমি যেটা আমার মাথার উপরের অংশটি ভাবতে পারি তা হ'ল (ফাঁকা লাইনগুলি সম্পর্কে কিন্তু তেমন সঠিক ইন্ডেন্টেশন নয়) পাইথন।


0

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


0

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


0

সাইকোপ্যাথের উত্তরটি সবচেয়ে ভাল, তবে আমি পরের ব্যক্তি একজন নির্বোধ এবং এই ধারণাটি নিয়ে এটিকে প্রতিস্থাপন করব এবং তারা ধরে নিবে যে আপনিই, এবং আপনি তাদের ভুল প্রমাণ করতে চাইবেন।

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

আমি মনে করি অনেকগুলি কোডার হয় হয় ধরে নেয় যে তারা হ'ল, তারা নিজেরাই কোডে "মেরামত" করবে, বা কেবল যত্ন নেবে না।


0

ফাঁকা লাইনগুলি গুরুত্বপূর্ণ। তবে, খোলার ধনুর্বন্ধকের উপর একটি সম্পূর্ণ ফাঁকা রেখা নষ্ট করে আপনি স্ক্রিনফুলে দেখতে পাচ্ছেন এমন পরিমাণের পরিমাণ হ্রাস করে। হতে হবে:

for (int i; i < 10; ++i)
{  if (i % 3 == 0) continue;

   array[i] += 2;
}

(আমাকে 'for' একই লাইনে 'জন্য' ... যেটি মেশুগাহ হিসাবে ব্রেস লাগানো শুরু করবেন না)।


2
হ্যাঁ। আমি আপনার পুরো ফাংশনটি একটি পর্দায় দেখতে চাই। খোলার কোঁকড়া ধনুর্বন্ধনী এটি নিজস্ব লাইনে রাখবেন না। এটাই হ'ল ইনডেন্টেশন।
কেভ বার্নস জুন

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

0

হ্যাঁ। পাঠযোগ্যতার জন্য। কখনও কখনও আমি কোডটি ফাঁকা লাইনও লিখেছিলাম যা আমি লিখিনি। কোড ফাঁকা লাইনের মাধ্যমে যৌক্তিক গোষ্ঠীকরণ করার সময় আমি কোডটি বোঝা আরও সহজ মনে করি - যেমন আপনি এর মাধ্যমে "স্পিড-রিড" করতে পারেন।


0

আমরা যখন কোনও চিঠি লিখছি তখন আমাদের কোডব্লকের মধ্যে ফাঁকা রেখা ব্যবহার করা উচিত।

উদাহরণস্বরূপ, ফাংশনগুলির মধ্যে বা কোনও ফাংশনের অভ্যন্তরে যখন আমরা একটি লুপ শেষ করি ...

লোকেরা যদি কোনও রক্ষণাবেক্ষণ করতে হয় তবে একটি পরিষ্কার কোড আপনাকে ধন্যবাদ জানাবে;)


0

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

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


0

কোনও ফাঁকা রেখা কখনই না, পুরো ফাইলে থাকে না। এটি কোডে বিরতি নেই তা বলার অপেক্ষা রাখে না:

 code;
 //
 morecode;

ফাঁকা লাইনগুলি কোডটির বিভাগগুলি কাজ করার জন্য খোলার জন্য, আপনাকে পূর্ববর্তী / পরবর্তী ফাঁকা লাইনে নিয়ে যাওয়ার জন্য আপনার সম্পাদকের কয়েকটি হটকি রয়েছে ys

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