কোঁকড়ানো ধনুর্বন্ধনী তাদের নিজস্ব লাইনে প্রদর্শিত হবে? [বন্ধ]


273

কোঁকড়ানো ধনুর্বন্ধনী তাদের নিজস্ব লাইনে থাকা উচিত বা না? আপনি এটি সম্পর্কে কি মনে করেন?

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

বা এটি হওয়া উচিত

if (you.hasAnswer())
{
    you.postAnswer();
}
else
{
    you.doSomething();
}

অথবা এমনকি

if (you.hasAnswer())
    you.postAnswer();
else
    you.doSomething();

দয়া করে গঠনমূলক হন! কেন অভিজ্ঞতাগুলি ভাগ করুন, এটিকে সত্য এবং তথ্যসূত্রগুলির সাথে ব্যাক আপ করুন।


104
আমি "== সত্য "টিকে ব্রেস প্লেসমেন্টের নির্বাচনের চেয়ে বেশি বিভ্রান্তিকর বলে মনে করি।
ড্যান ডায়ার

11
@ ড্যান: আমি মনে করি শর্তাধীন অভিব্যক্তিটি সর্বদা প্রকাশ করা সুস্পষ্টভাবে সহায়তা করে।
উইজার্ড 79

4
আপনার আইডিই / সম্পাদকটি কোঁকড়ানো বন্ধনী সনাক্তকরণের সাথে মেলে না, তবে এটির কারণ হ'ল reason
leeand00

4
@ লীয়ানডে00: আমাদের মধ্যে কিছু এখনও অধ্যয়ন / টীকা লেখার জন্য জটিল / অপরিচিত কোডটি মুদ্রণ করে। একটি ভাল সুন্দর-প্রিন্টার যদিও বেশিরভাগ সমস্যা প্রশমিত করে।
Shog9

2
দু: খিত প্রশ্ন বন্ধ। ইনডেন্ট ভিত্তিক সিনট্যাক্স ব্যবহারের কিছু সময় পরে আমি অন্য ধনুর্বন্ধনী কাঠামোটিতে (সম্ভবত অদ্ভুত) স্যুইচ করেছি। ব্লকের শেষ লাইনে আপনার প্রথম তবে বন্ধ বন্ধনী পছন্দ করুন। (কোড লাইনের পরে)
সিএনডি

উত্তর:


88

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

তবে বৃহত অ্যাপ্লিকেশনগুলিকে কোডিং করার সময়, কেবলমাত্র কয়েকটি ধনুর্বন্ধনী যুক্ত রেখাগুলি সাশ্রয়ী হয়, এটি 'গ্রুপিং' অনুভূতি বিবেচনা করে।

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


6
অন্যদিকে, নতুন লাইনে বন্ধনীটি একটি এএনএসআই স্ট্যান্ডার্ড, কেএন্ডআর নেই। তবে মান সম্পর্কে সৌন্দর্যটি হ'ল, এখানে অনেকগুলি আলাদা আলাদা রয়েছে ( আনসাইক্লোপিডিয়াতেও অ্যাসাইক্লোপিডিয়া.উইকিয়া / উইকি / এএএএএএএএএএ দেখুন !)
চৌম্বকীয়

"কম লাইন রয়েছে" আমার কাছে টেরাবাইটস স্পেস এবং প্রচুর পিক্সেল রয়েছে। কেন আমি আরও লাইন ব্যবহার সম্পর্কে যত্নশীল হব?
12431234123412341234123

1
@ 12431234123412341234123: আমি মনে করি তার অর্থ হ'ল কারণ কিছু লোক কোড-পর্যালোচনার জন্য কোড মুদ্রণ করে। এবং প্রতিটি একেবারেই প্রয়োজনীয় নয়নলাইন হ'ল কাগজ নষ্ট হয়, বা স্কেলতে এক কিলোমিটার ফরেষ্ট নষ্ট হয়। তবে, আপনি যদি এটি মুদ্রণ না করেন (আমি অবশ্যই না) তবে এএনএসআই কেএন্ডআর থেকে অনেক ভাল a এছাড়াও, যে কেউ মুদ্রণ করতে চায় তার সম্ভবত একটি স্বয়ংক্রিয় কোড ফর্ম্যাটার ব্যবহার করা উচিত - সুতরাং এটি কোডিং শৈলীর নয়, সরঞ্জামচালনার প্রশ্ন হওয়া উচিত।
চৌম্বকীয়

247

আপনার তৃতীয় পদ্ধতি কখনই করা উচিত নয়।

ধনুর্বন্ধনী নেভিগেশন Skmping আপনি প্রথম কয়েকটা স্ট্রোক সংরক্ষণ করতে পারে, কিন্তু পরের কোডার যিনি বরাবর আসে, ব্লকটি অনুপস্থিত না করেই আপনার অন্য ধারাতে কিছু যুক্ত করে যা প্রচুর ব্যথা পেতে চলেছে।

অন্যান্য লোকের জন্য আপনার কোড লিখুন।


113
আমি আশা করি আমি জানতাম যে সেই সামান্য জ্ঞানের উদ্ভব কোথায়। কারণ আপনার কোড লিখতে এমন লোকদের জন্য যারা এটি পড়তে বিরক্ত করবেন না আপনি যতটা পেতে পারেন তা প্রায় অর্থহীন ...
শোগ 9

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

25
.চ্ছিক ধনুর্বন্ধনী alচ্ছিক নয়। সি-তে নেওয়া এবং এর বংশধরদের কাছে নিয়ে যাওয়া হয়েছিল এমন আরও কিছু খারাপ ডিজাইন সিদ্ধান্ত রয়েছে। এটি সি ভাষায় সাম্প্রতিক কোনও ভাষায় বেঁচে থাকায় তা আমাকে ক্রুদ্ধ করে
অ্যাডাম ক্রসল্যান্ড

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

11
স্টাইল # 3 এর একটি সুবিধা রয়েছে যা আপনি সকলেই মিস করছেন: আপনি আপনার স্ক্রিনে একবারে আরও কোড পাবেন।
লরেন পেচটেল

203

দীর্ঘদিন ধরে আমি যুক্তি দিয়েছিলাম যে এগুলি সমান মূল্যবান বা সমানভাবে খুব কাছাকাছি যে সঠিক পছন্দ করে সম্ভাব্য লাভটি এটি সম্পর্কে তর্ক করার ব্যয়ের চেয়ে অনেক দূরে, অনেক দূরে ।

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

আমি প্রোগ্রামাররা এর আগে পরিবর্তনের বিরুদ্ধে প্রতিরোধ করতে দেখেছি। এটি পেতে! আমি আমার কেরিয়ারে অনেকবার পরিবর্তন করেছি। এমনকি আমি আমার পাওয়ার শেলের চেয়ে আমার সি # তে বিভিন্ন স্টাইল ব্যবহার করি।

কয়েক বছর আগে আমি একটি দলে (~ 20 বিকাশকারী) কাজ করছিলাম যা ইনপুট চেয়েছিল এবং তারপরে সিদ্ধান্ত নেবে এবং তারপরে সমস্ত কোড বেস জুড়ে এটি প্রয়োগ করে। আমাদের সিদ্ধান্ত নিতে এক সপ্তাহ সময় লাগবে।

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

আমরা যেহেতু প্রশ্নের সূক্ষ্ম বিষয়গুলি অধ্যয়ন করছিলাম, কেউ জিজ্ঞাসা করলেন কীভাবে ব্রেস-অন-দ্য-লাইন স্টাইলে এই সমস্যাটি মোকাবেলা করতে হবে:

void MyFunction(
    int parameterOne,
    int parameterTwo) {
    int localOne,
    int localTwo
}

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

void MyFunction(
    int parameterOne,
    int parameterTwo) 
{
    int localOne,
    int localTwo
}

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

void MyFunction(
    int parameterOne,
    int parameterTwo) {

    int localOne,
    int localTwo
}

আপনি যদি ভিজ্যুয়াল ব্রেক করতে চলেছেন তবে আপনি এটি একটি ধনুর্বন্ধনী দিয়েও করতে পারেন। তারপরে আপনার ভিজ্যুয়াল ব্রেকগুলিও সামঞ্জস্যপূর্ণ হয়ে ওঠে।

সম্পাদনা : কেএন্ডআর ব্যবহার করার সময় 'অতিরিক্ত ফাঁকা রেখা' সমাধানের দুটি বিকল্প:

1 / ফাংশন বডি থেকে ফাংশন আর্গুমেন্ট আলাদাভাবে যুক্ত করুন

2 / প্রথম যুক্তিটি ফাংশন নামের মতো একই লাইনে রাখুন এবং নতুন যুক্তিতে আরও প্রথম যুক্তিটিকে প্রথম আর্গুমেন্টে সারিবদ্ধ করুন

উদাহরণ:

1 /

void MyFunction(
        int parameterOne,
        int parameterTwo) {
    int localOne,
    int localTwo
}

2 /

void MyFunction(int parameterOne,
                int parameterTwo) {
    int localOne,
    int localTwo
}

/ সম্পাদনা

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


33
এফওয়াইআই, আমি যুক্তিযুক্ত ব্যক্তির মতো শুনতে পাব, তবে আমি আসলে বাদাম। সরল, একক-লাইন ব্লকের জন্য, আমি 'if (foo) বার ()' সমস্ত এক লাইন তৈরি করে ব্রেস বা নিউলাইনগুলি ব্যবহার করব না। আমি আমার কোডটি যথেষ্ট সহজ করার জন্য সচেষ্ট হলাম যে এটি কোনও সমস্যা নয়।
জে বাজুজি

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

27
আমি ফাঁকা লাইনটি দেখিনি - আমি যখন মাইফ্যাঙ্কশন () এর পরামিতিগুলির ডাবল-ইনডেন্টের সাথে আরও পরিচিত তখন তারা অন্য লাইনে ভ্রষ্ট হয়।
আরমান্ড

34
এরকম একাধিক লাইনে প্যারামিটারগুলি ছিন্ন করা ম্যাডেনিং।
ফস্কো

10
"ফাংশন প্যারামিটার" আর্গুমেন্ট একটি লাল হেরিং। স্পষ্টতই যুক্তিগুলি দ্বিগুণ উদ্দেশ্যে করা উচিত। নিম্নলিখিত কোড থেকে এটি আলাদা করতে সমস্যা নেই।
ডেভিড ওঙ্গারো

99

মূল নিয়মগুলি হ'ল:

  1. প্রকল্পের বিদ্যমান কোডিং স্ট্যান্ডার্ডটি অনুসরণ করুন।
  2. যদি কোনও কোডিং মান না থাকে এবং আপনি অন্য কারও মালিকানাধীন বিদ্যমান কোড-বেসটি সম্পাদনা করছেন - আপনি যে পরিমাণে পছন্দ / অপছন্দ করেন তা বিবেচনা না করে বিদ্যমান কোডের স্টাইলের সাথে সামঞ্জস্য থাকুন।
  3. যদি আপনি একটি সবুজ ক্ষেত্রের প্রকল্পে কাজ করছেন - অন্যান্য দলের সদস্যদের সাথে আলোচনা করুন, এবং আনুষ্ঠানিক বা অনানুষ্ঠানিক কোডিং মান সম্পর্কে sensকমত্যে আসুন।
  4. আপনি যদি একমাত্র বিকাশকারী হিসাবে সবুজ ক্ষেত্রের প্রকল্পে কাজ করছেন - নিজের মন তৈরি করুন এবং তারপরে নির্মমভাবে ধারাবাহিক হন।

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

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


10
এই উত্তরটি আরও ভোটের দাবিদার।
অ্যাশেলি

1
ধারাবাহিকতা কী
মিডিয়াভান্স

70

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

আমি যখন বন্ধনীটির জন্য পূর্ববর্তী যখন / যখন / যদি ইতিমধ্যে দৃষ্টিভঙ্গি ইতিমধ্যে দৃষ্টিবদ্ধভাবে কোনও ব্লকের সূচনা নির্দেশ করে তখন কেবল একটি বন্ধনীটির জন্য একটি সম্পূর্ণ লাইন নষ্ট করার কোনও কারণ দেখি না।

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


12
না ... আমি বলছি যে কোডের স্পষ্টতা যুক্ত হয় না এমন কিছু করে আপনার স্ক্রিনে ফিট করতে পারে এমন কোডের পরিমাণ কেন কম করবেন?
এপসিলনভেেক্টর

6
আমি যখন কোডিং শুরু করছিলাম তখন আমি প্রতিটি
লাইকটি

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

10
LOL @ "একটি সম্পূর্ণ লাইন নষ্ট"। ঈশ্বর! ওইটা না!! = পি
নিক স্প্রেইটিজার

6
@ জুলিও কলেজে আমি পদ্ধতিটি 1 টির পক্ষে ছিলাম, এবং পদ্ধতি 2 পড়তে পারি না। এমন একটি কোম্পানিতে কাজ করার পরে যা সি # ব্যবহার করে, যেখানে স্ট্যান্ডার্ড পদ্ধতি 2, আমি ঠিক তেমন পছন্দ করতে এসেছি। আমি এখন পড়তে বা ব্যবহার করতে পারি; কেউই আমাকে বিরক্ত করে না। যে লোকেরা একে অপরের প্রতি তীব্র বিরূপ প্রতিক্রিয়া পোষণ করে তারা সাধারণত এমন কোনও কিছুর প্রতি অত্যধিক আচরণ করে যা তারা অপরিচিত।
কেচালোক্স

46

আমি পছন্দ করি

if (you.hasAnswer())
{
    you.postAnswer();
}
else
{
    you.doSomething();
}

উপর

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

কারণ you.postAnswer();প্রথম নজরে পড়ার এবং খুঁজে পেতে লাইনটি আরও সহজ। দ্বিতীয় উপায়ে, এটি এর ওপরের লাইনের সাথে মিশে গেছে ( you.hasAnswer()) আমার চোখ পড়ার জন্য আরও ফোকাস করতে হবে।


7
আপনার প্রোগ্রামটি আপনার স্ক্রিনের উচ্চতা অতিক্রম না করা পর্যন্ত এটি সত্য। ;)
weberc2

13
@ ওয়েবারসি 2 আমি মনে করি যে যখন আপনার প্রোগ্রামটি পর্দার উচ্চতা অতিক্রম করবে, তখন দুটি লাইন কম বেশি পরিবর্তন হবে না।
ম্যাজেক

13
10 বছর আগে, আমি স্ক্রিন স্পেস সম্পর্কে সম্মত হয়েছি। আজ, আমি একটি 1920 * 1200 স্ক্রিন ব্যবহার করি। এটি আমার কোডের চেয়ে একবারে প্রক্রিয়া করতে পারে তার চেয়ে অনেক বেশি কোড ফিট করে। প্রথম পদ্ধতিটি আমাকে পিছনে টানতে এবং এটি পড়তে না পেরে বিভিন্ন স্কোপ খোলার / বন্ধ দেখতে দেয়।
লাইট স্ট্রাইকার

3
আমি কেন এই পদ্ধতিটিকে প্রাধান্য দিয়েছি তা কখনই জানতে পারি না তবে এটি ঠিক এই জন্য।
ডিক্লান ম্যাককেনা

2
@ ম্যাজেক এটি বিচলিত, তবে এটি 2 লাইন নয়, এটি প্রতিটি সুযোগের জন্য 2 টি লাইন। এটি ও (এন), ও (1) নয়। আমি আসলে এটি সম্পর্কে দৃ strongly়তা অনুভব করি না; আপনি আরও এমন গুরুত্বপূর্ণ যে আপনি এমন একটি শৈলী বেছে নিন যা দীর্ঘ প্যারামিটারের তালিকা পাঠযোগ্য করে তোলে read
weberc2

38

আমি প্রথম পদ্ধতি পছন্দ। ধনুর্বন্ধনী সম্পূর্ণ পৃথক লাইনের মূল্য নয়।

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

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

if (you.hasAnswer()){
    you.postAnswer();
}else{
    you.doSomething();
}

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

14
@ রবার্ট, সি-তে আপনাকে হোয়াইটস্পেস এবং ধনুর্বন্ধনী উভয়ই করতে হবে । পাইথনে আপনার কেবল সাদা স্থান করা উচিত। কোনটা ভাল?
পি

5
@ পাভেল, সি-তে আপনাকে হোয়াইটস্পেস করতে হবে না।
কেন ব্লুম

7
হোয়াইটস্পেস ছাড়াই @ কেনব্লুম সি প্রোগ্রামগুলি পড়া অসম্ভব। সুতরাং আপনাকে সেগুলি যাইহোক করতে হবে।
পি

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

37

পাইথন ব্যবহার করুন এবং যুক্তিটি সম্পূর্ণরূপে আটকে দিন।


17
+1SyntaxError: not a chance
শেঠ

6
এটি কেবলমাত্র বিশাল, বিশাল সংখ্যক প্রকল্পের বিকল্প নয়। এছাড়াও, গ্রুপ-ইন-গ্রুপিংয়ের সমস্যাগুলির ভাগ রয়েছে।
ব্রায়ান ওকলে

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

গো ব্যবহার করুন এবং আর্গুমেন্টটিকে পুরোপুরি
পাশ কাটা

4
তারপরে স্পেস বারটি একবারে অনেক বার টিপুন এবং সংকলক / দোভাষী আপনাকে দেখে হাসবেন। বেশিরভাগ ব্রাসেড ভাষায় এটি ঘটবে না।
ফারাপ

27

কোঁকড়া ধনুর্বন্ধনী অবস্থান হতে হবে

মেটা ডেটা

প্রোগ্রামার দ্বারা আইডিই কনফিগারযোগ্য। এইভাবে, লেখক নির্বিশেষে সমস্ত কোডে pসব বেহুদি ধনুর্বন্ধনীগুলি একই দেখায়।


7
সম্পূর্ণ একমত. এটি উপস্থাপনা এবং ডেটা নয়।
পেট্রুজা

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

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

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

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

19

এটা নির্ভর করে.

আমি জাভাস্ক্রিপ্ট বা jQuery এ কোডিং করছি, আমি প্রথম ফর্ম ব্যবহার:

jQuery(function($) { 
    if ($ instanceOf jQuery) { 
        alert("$ is the jQuery object!"); 
    } 
}); 

তবে আমি যদি সি # তে কোডিং করছি, তবে আমি দ্বিতীয় রূপটি ব্যবহার করি, কারণ এটি সি # তে করার স্বতন্ত্র উপায়।

public int CalculateAge(DateTime birthDate, DateTime now) 
{ 
    int age = now.Year - birthDate.Year; 
    if (now.Month < birthDate.Month 
        || (now.Month == birthDate.Month && now.Day < birthDate.Day)) 
        age--; 
    return age; 
} 

আপনার উদাহরণটি লেখা যেতে পারে তা নোট করুন

if (you.hasAnswer())
    you.postAnswer();
else
    you.doSomething();

সি # তে


1
এটি এর মতো অনেকগুলি ভাষায় লেখা যেতে পারে, কারণ একটি ব্লক-বিবৃতি একটি বিবৃতি। যোগ করার পদ্ধতি! :-)
তামারা উইজসম্যান

2
"ফ্রেমওয়ার্ক ডিজাইন গাইডলাইনস" অনুসারে "ক্যানোনিকাল ওয়ে" হ'ল উদ্বোধনী ব্রেসটি একই লাইনে স্থাপন করা (অর্থাত্ প্রথম ফর্মটি)। শুধু বলুন '...
উয়ে হেনেক্যাম্প

3
@ ইউউ: সম্ভবত তবে মাইক্রোসফ্ট তার সমস্ত এমএসডিএন সি # উদাহরণের জন্য "প্রান্তিকৃত ধনুর্বন্ধনী" পদ্ধতি অবলম্বন করেছে এবং এটি ভিজ্যুয়াল স্টুডিওতে বেকড, তাই ...
রবার্ট হার্ভে

@ ইউউ: এটি কোয়ালিনার বই এবং এটির চেয়ে অনেক বেশি নামকরণ করার কারণে এর নামকরণ ভয়াবহ। এমএসডিএন-এর এফডিজির এ ​​বিষয়ে কিছু বলার নেই। এছাড়াও আমি ভাবছি, ফ্রেমওয়ার্ক ডিজাইন নির্দেশিকা কেন সি # কোডিং অনুশীলন সম্পর্কে কিছু বলবে ?
আর মার্টিনহো ফার্নান্দেস

3
আপনার জাভাস্ক্রিপ্টে একই লাইনে কোঁকড়ানো ধনুর্বন্ধনী করা উচিত। কোঁকড়ানো ধনুর্বন্ধনী তাদের নিজস্ব লাইনে থাকলে আপনি ত্রুটি ঘটাতে পারেন। উদাহরণস্বরূপ, এনকোসিয়া.com
জোসেফ হানসেন

18

আমি প্রথমটিকে পছন্দ করি কারণ এই উদাহরণটিতে ভুলটি দেখা আমার পক্ষে কঠিন।

if (value > maximum);
{
    dosomething();
}

এটি এই উদাহরণে তুলনায়

if (value > maximum); {
    dosomething();
}

; {লাইনটি শেষ হওয়ার চেয়ে কেবল আমার কাছে আরও ভুল দেখায় ;তাই আমি এটির নজরে পড়ার সম্ভাবনা বেশি।


11
আপনি একটি ভাল যুক্তি দিয়েছেন, কিন্তু ব্যক্তিগতভাবে, আমার 5 বছরের প্রোগ্রামিংয়ে এটি আমার সাথে কখনও ঘটেছে। এটি নির্বাহ করা হচ্ছে না তা আমি বুঝতে পারি না, এটি এসওতে পোস্ট করেছিলেন এবং কেউ দ্রুত আমার কাছে আধা-কোলনটি নির্দেশ করেছেন। যাইহোক, যতবারই এই 1 টি কম লাইনটি ব্যবহার করা যায়, আমি এটি পড়তে আরও কঠিন find
জেডি আইজ্যাকস

6
";" দেখতে এক ধরণের কুঁচকে যাওয়া কুঁচকানো মুখের বা সম্ভবত গোঁফযুক্ত ব্যক্তির মতো দেখা যাচ্ছে।
গ্লেনাট্রন

+1 উত্তরের দুর্দান্ত উদাহরণ: খুব সূক্ষ্ম ভুল, সহজেই উপেক্ষা করা। এটি দেখানো লেআউটটিতে খুব উস্কানি দেওয়া ভেবেছিল।
থ্রোবায়ুয়ান

10
অবশ্যই যে কোনও শালীন আইডিই খালি নিয়ন্ত্রণ বিবৃতিটিকে পতাকাঙ্কিত করবে এবং যে কোনও শালীন সংকলক একটি সতর্কতা জারি করবে।
ডঙ্ক

@ ডাঙ্ক আপনার যুক্তির একমাত্র ত্রুটি (যার সাথে আমি দৃig়তার সাথে একমত হই) হ'ল এত দিন এত লোক প্রচলিত ভাষা ব্যবহার করছে (জাভাস্ক্রিপ্ট, পিএইচপি, ইত্যাদি) যে অনেক "প্রোগ্রামার" ডাবল থেকে সংকলক জানতে পারে না ল্যাটির।
ক্রেগ 18

15

আমি 1 এর সামান্য বৈকল্পিক পছন্দ করি

if (you.hasAnswer()) {
    you.postAnswer();
} // note the break here
else {
    you.doSomething();
}

কেন?

  • আমি মনে করি সর্বদা তাদের নিজস্ব লাইনে ব্রেস লাগানো পাঠযোগ্যতা হ্রাস করে। আমি কেবল আমার স্ক্রিনে উত্স কোডের একটি নির্দিষ্ট পরিমাণে ফিট করতে পারি। বন্ধনী শৈলী 2) প্রচুর নেস্টেড লুপ এবং শর্তসাপগুলি ব্যথার সাথে দীর্ঘ দিয়ে ভারী অ্যালগরিদম তৈরি করে।

  • যাইহোক, আমি elseএকটি নতুন লাইনে শুরু করতে চাই কারণ ifএবং elseদর্শনীয়ভাবে একত্রিত belong এর সামনে যদি একটি বন্ধনী থাকে তবে elseকিসের সাথে এটি চিহ্নিত করা আরও বেশি কঠিন।

  • 3) নিজেকে অযোগ্য ঘোষণা করে। আপনি যদি বন্ধনী ছেড়ে যান এবং এটির কথা ভুলে যান তবে কী খারাপ জিনিসগুলি ঘটতে পারে তা আমরা সকলেই জানি।


1
আমি যেখানে কাজ করি সেখানেই এটি দেখেছি। এটা মজার.
এলো

1
আমি এই শৈলীটি আরও ভাল পছন্দ করি, কারণ এটি আমাকে elseযখন প্রয়োজন হয় তখন লাইনের উপরে মন্তব্য করতে দেয় এবং / অথবা আইফ-ব্লক এবং অন্য-ব্লকের মধ্যে ফাঁকা রেখা রেখে জিনিসগুলিকে কম ক্র্যামেড দেখায়। বন্ধনী শৈলী # 2 শর্তগুলি থেকে ক্রিয়াগুলি দূরে সরিয়ে ছাড়া আর কিছুই করে না। এই বলে যে, আমার প্রিয়টি অবশ্যই অজগরটির কোনও বন্ধনী শৈলী নয় :)
সায়েপ

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

1
হ্যাঁ, যদি এবং অন্যত্র একত্রে থাকেন তবে তবে এটি করুন {এবং} এবং যেমন a একটি পৃথক লাইনে রয়েছে, {এছাড়াও একটি পৃথক লাইনে থাকা উচিত। "আমি কেবলমাত্র আমার স্ক্রিনে একটি নির্দিষ্ট পরিমাণের উত্স কোডের সাথে ফিট করতে পারি" এবং ঠিক এই কারণেই 3) বলা হবে "নিজেকে অযোগ্য ঘোষণা করা" কোনও বিকল্প নয়। 3 এর সাথে কাজ করার এক দশক পরে) আমি কোনও নতুন লাইন কোড যুক্ত করার সময় বন্ধনী যুক্ত করা ভুলে যাইনি, বা কখনও ছিল না এমন কাউকেও জানি না। যদি আমাকে লোকের সাথে কোড সামঞ্জস্য করতে হয়, যারা সঠিকভাবে পড়তে পারে না, তবে এটি শেষ কোথায়? কিছু ভাষার বৈশিষ্ট্য ব্যবহার বন্ধ করা হচ্ছে, কারণ কিছু কোডের পাঠক সেগুলি বুঝতে না পারে?
কাইসারুলদী 5:25 '

10

আমি কোথাও পড়েছি যে কোনও কোনও বইয়ের লেখকরা তাদের কোডটি এভাবে বিন্যাস করতে চান:

if (you.hasAnswer())
{
    you.postAnswer();
}
else
{
    you.doSomething();
}

তবে তাদের প্রকাশকের কাছ থেকে স্থানের সীমাবদ্ধতার অর্থ হ'ল তাদের এটি ব্যবহার করতে হয়েছিল:

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

এটি সত্য কিনা আমি এখন জানি না (যেহেতু আমি এটি আর খুঁজে পাচ্ছি না) তবে উত্তরোত্তর শৈলী বইগুলিতে খুব প্রচলিত।

ব্যক্তিগত স্তরে আমি পৃথক লাইনে বন্ধনীগুলি পছন্দ করি:

ক) তারা একটি নতুন সুযোগ নির্দেশ করে
খ) আপনার কোনও মিল নেই তখন স্পট করা সহজ (যদিও এটি কোনও আইডিইতে আপনার ইস্যুতে ত্রুটিগুলি হাইলাইট করে এটি কম)।


... দ্বিতীয় বিকল্পটি আপনার উভয় পয়েন্টকেও সহজলভ্য করে (একাকী ব্রেস / ইনডেন্টেশন কম্বোর উদ্দেশ্যে পরিবেশন করা)। :)
weberc2

10

আহ, ওয়ান মুক্ত বন্ধনী স্টাইল

এটি পবিত্র পথের জন্য সবকিছু জড়িত - এমনকি একজন নবীও (রিচার্ড "আমার পথ বা হাইওয়ে" স্টলম্যান)।

লোকটি এত কিছু সম্পর্কে এত ভুল ছিল, কিন্তু ব্রেসগুলির ক্ষেত্রে জিএনইউ স্পট-অন হয়।


[আপডেট] আমি আলো দেখেছি, এবং এখন অলম্যানের উপাসনা করছি


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

আমি জিএনইউ স্টাইল ব্যবহার করে এমন কাউকেই জানি না। 1 টিবিএস পুরো পথ।
Jé ক্যু

আপনি ব্লক প্রতি দুটি ইনডেন্টেশন স্তরের চেয়ে খারাপ আরও কিছু করতে পারবেন না, অবশ্যই লিস্প শৈলী ব্যতীত, এটি বলার অপেক্ষা রাখে না।
এরগোসিস

4
ব্রেস শৈলীতে লিঙ্কের জন্য +1 + এটি দেখায় যে আপনার স্টাইল যাই হোক না কেন, অনেক মহান ব্যক্তি আপনার সাথে একমত নন।
ফ্লোরিয়ান এফ

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

9

দ্বিতীয় উদাহরণ, আমি পঠনযোগ্যতার উপর খুব বড়। অন্য কোনও উপায়ে বাধা দেয় কিনা সেদিকে আমি দাঁড়িয়ে থাকতে পারি না ((


1
গবেষণা ইঙ্গিত দেয় যে একবার কোনও কোড বেস স্ক্রিনের উচ্চতা ছাড়িয়ে গেলে কমপ্যাক্ট কোড পড়া সহজ।
weberc2

5
@ ওয়েবারসি 2, আপনি কি এই গবেষণা পত্রকে ডিওআই সরবরাহ করতে পারেন?
গ্রেজগোর্জ অ্যাডাম কোওলস্কি

9

সহজ উত্তর: ডিবাগ করা সহজ কি?

// Case 1:
void dummyFunction() {
  for (i = 0; i != 10; ++i) {
    if (i <= 10)
      std::cout << "i is: " << i << "\n";
      std::cout << 10 - i << " steps remaining\n";

      // Some hard work here
      // which is really hard
      // and does take some screen estate
    }
    else
      std::cout << "We'll never get there";
  }
} // COMPILER ERROR HERE


// Case 2:
void dummyFunction()
{
  for (i = 0; i != 10; ++i)

    if (i <= 10)
    {
      std::cout << "i is: " << i << "\n";
      std::cout << 10 - i << " steps remaining\n";

      // Some hard work here
      // which is really hard
      // and does take some screen estate
    }
    else
      std::cout << "We'll never get there\n";
  }
} // COMPILER ERROR HERE

কোন ক্ষেত্রে আপনি প্রথমে সমস্যাটি নির্ণয় করেছেন?

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

"নষ্ট স্থান" যুক্তি হিসাবে, আমি এটি কিনছি না: প্রোগ্রামটিকে আরও পরিষ্কার করার জন্য আমি লজিক্যাল গ্রুপগুলির মধ্যে ফাঁকা রেখা যুক্ত করার ঝোঁক রাখি ...


1
এগুলি উভয়ই ডিবাগ করা সহজ, কারণ এটি কোডের একটি সংক্ষিপ্ত ব্লক since প্রকৃত কোড ব্লকগুলি ভিজ্যুয়ালাইজ করা সহজতর করে ইন্ডেন্টেশনটি সামঞ্জস্যপূর্ণ।
Htbaa

@ এইচটিবা: সত্যই :) তাই কেন বিরক্ত করবেন?
ম্যাথিউ এম।

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

7

যে কেউ খেয়াল করবে না, তবে এই কারণেই বন্ধনীগুলি শর্তসাপেক্ষ হিসাবে একই লাইনে অন্তর্ভুক্ত (খুব দীর্ঘ শর্তসাপেক্ষে বাদে, তবে এটি একটি প্রান্তের কেস):

সি তে, এটি একটি বৈধ নির্মাণ:

যখন (সত্য);
{
    চর গ;
    getchar, (); // ইনপুট জন্য অপেক্ষা করুন
}

কুইক! এই কোডটি কী করে? আপনি যদি "ইনপুট চেয়ে জিজ্ঞাসা" অসীম লুপ উত্তর দেন, আপনি ভুল! এটি এমনকি ইনপুট পেতে না। এটি ধরা পড়ে while(true)। শেষে সেমিকোলন লক্ষ্য করুন। এই নিদর্শনটি আসলে আরও সাধারণ যে এটির মতো হওয়া উচিত বলে মনে হয়; সি আপনাকে একটি ব্লকের শুরুতে আপনার ভেরিয়েবলগুলি ঘোষণার প্রয়োজন, যার কারণে একটি নতুন শুরু হয়েছিল।

কোডের একটি লাইন একটি চিন্তাভাবনা। বন্ধনীগুলি শর্তাধীন বা লুপযুক্ত চিন্তার একটি অংশ। সুতরাং, তারা একই লাইনে অন্তর্ভুক্ত।


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

5

আমি প্রথম পদ্ধতিটি পছন্দ করি। এটি আরও কম আইএমও বলে মনে হচ্ছে এবং এটি আরও কমপ্যাক্ট, যা আমার পছন্দ।

সম্পাদনা: আহ, তৃতীয়। আমি যতটা সম্ভব সম্ভব সেরাটিকে পছন্দ করি কারণ এটি আরও ছোট / পরিষ্কার থাকে ater


5

আপনি এটি লিখতে পারে:

you.hasAnswer() ? you.postAnswer() : you.doSomething();

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


এটির মতো ব্যবহার করা উচিত postAnswer()এবং doSomething()টের্নারি অপারেটরের জন্য মানটি ফিরিয়ে দেওয়া উচিত, যা প্রায়শই হয় না: তারা খুব ভালভাবে শূন্যরূপে ফিরে আসতে পারে (কোনও মূল্য নেই)। এবং এছাড়াও (কমপক্ষে সি # এ) এর ফলাফলটি ?:কিছু পরিবর্তনশীলকে বরাদ্দ করা উচিত
ASh

4

এখানে প্রায় সমস্ত প্রতিক্রিয়াগুলি "আপনি যা কিছু করেন না কেন, একটি বা দু'টির সাথে লেগে থাকুন" তে কিছুটা পার্থক্য বলছে।

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

int foo(int a, Bar b) {
    int c = 0;
    while(a != c)
    {
        if(b.value[a] == c) {
            c = CONST_A;
        }
        c++;
    }
    return c;
}

আমি অন্য কারও বিষয়ে নিশ্চিত নই ... তবে শৈলীর মধ্যে আমার মানসিকভাবে পিছনে পিছনে স্যুইচ করার সমস্যা আছে। কোডটি কী করেছিল তা নির্ধারণ করতে আমার কয়েক মুহুর্ত লাগল, তবে এটি আমার ফলাফল কেবল এলোমেলোভাবে সি-এর মতো সিনট্যাক্স টাইপ করে। :)

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

এফডব্লিউআইডাব্লু, কাজের ক্ষেত্রে আমাদের কোডিং শৈলীগুলি কিছুটা আরও কাঠামোগত ফর্ম 1 এবং একটি পরিবর্তিত ফর্ম 3 ব্যবহার করে (সি ++)

            // blank line is required here
if (x) {
            //This blank line is required
   y = z;
}
            // blank line is required here too, unless this line is only another '}'

if (x) y = z; //allowed

if (x)
    y = z;  // forbidden

আমি কৌতূহলী যারা ফর্ম 2 টি দৃ strongly়ভাবে পছন্দ করেন তারা যদি ফর্ম 1 এর এই সংস্করণটি আরও ভাল দেখতে পান তবে ফাঁকা লাইনটি দৃ visual় দৃষ্টি বিভাজন দেয় because


4
আপনার উদাহরণ হিসাবে দেখায়, পঠনযোগ্য কোডের জন্য ব্রেসগুলির চেয়ে ইনডেন্টেশনটি এত গুরুত্বপূর্ণ is আসলে কিছু ভাষায় বাসা বাঁধার একমাত্র উপায় ইনডেন্টেশন করে তোলে !

1
ঠিক আছে, আমি সত্যিই আপনাকে বেমানান উদাহরণটি পড়ার পক্ষে কঠিন মনে করি। সত্যিই কঠিন নয়, তবে এটি যদি সামঞ্জস্যপূর্ণ হয় তার চেয়ে শক্ত hard
এলো

আমি আলমোর সাথে একমত এটি "এটি আসলেই কঠিন" এর ঘটনা নয়। এটি কঠিন না হলেও "এটি অবশ্যই দৃ defin়তর" এর একটি ঘটনা। তাহলে কেন জিনিসগুলি আরও শক্ত করা? "খেলনা" উদাহরণগুলিতে লোকেরা অবশ্যই দেয় কিছুটা পার্থক্য নেই। আমার অভিজ্ঞতা হিসাবে, যখন আমি অন্য কারও কাছ থেকে কদর্য কোড পেয়েছি এবং তারা পদ্ধতি 1 ব্যবহার করে, প্রায়শই প্রায়শই যুক্তি অনুসরণ করতে সক্ষম হওয়ার জন্য এগিয়ে যাওয়া এবং এটি পদ্ধতি 2 তে পরিণত করা প্রয়োজন হয়ে পড়ে। কারণ এটি প্রায়শই প্রয়োজনীয় হয়ে ওঠে; কোন পদ্ধতিটি আরও ভাল এবং সহজে বোঝা যায় সে প্রশ্নের উত্তর স্বয়ংক্রিয়ভাবে দেয়।
ডাঙ্ক

@ ডাঙ্ক: আমি চারপাশে এ জাতীয় অপ্রাসঙ্গিক বিবরণ অদলবদলের মাধ্যমে কোডটি লক্ষণীয়ভাবে উন্নত করা সম্ভব হবে না।
জেকেরিয়ান

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

4

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

যখন বন্ধনীগুলি একই কলামে এবং তাদের নিজস্ব লাইনে শুরু হয় এবং শেষ হয়, আপনি মার্জিন থেকে বা কলামটি কলামে 0 টি নির্বাচন করতে পারেন This

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


আমার মতো ওল্ড টাইমাররা ব্লকটি নির্বাচন করতে প্রথমে তিনটি কীস্ট্রোক ব্যবহার করে নিন্দিত ধনুর্বন্ধনী যেখানেই থাকুক না কেন।
এরগোসিস

2

আমি ব্যক্তিগতভাবে দ্বিতীয় উপায় পছন্দ করি।

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

while(1){
i=0;
printf("Enter coded text:\n");
while((s=getchar())!='\n'){
         if(i%1==0){
            start=(char*)realloc(input,(i+1)*sizeof(char));
if(start==NULL){
printf("Memory allocation failed!");
exit(1);}
input=start;}
      input[i++]=s;}
start=(char*)realloc(input,(i+1)*sizeof(char));
if(start==NULL){
printf("Memory allocation failed!!!");
exit(1);}
input=start;
input[i]='\0';
                puts(input);

8
খারাপ, খারাপ, মানে আমি ভয়ানক, ভয়ানক উদাহরণ। সমস্যাটি ধনুর্বন্ধনী! এটা পাগল ইন্ডেন্টেশন!
আর মার্টিনহো ফার্নান্দেস

@ মার্টিনহো ফার্নান্দেস আমি ভেবেছিলাম যে ব্রেস লাগানো এবং ইন্ডেন্টেশন একসাথে চলে যায় ...
আন্দ্রেজা কো

2
অগত্যা নয় ... উপরের দিকে সঠিক ইন্ডেন্টেশন করুন এবং তারপরে এলোমেলোভাবে ব্রেস-স্টাইলগুলি স্যুইচ করুন, আপনি দেখতে পাবেন এটি বোধগম্য।
জেকেরিয়ান

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

"তিনি যে প্রোগ্রামটি করেছিলেন তার মধ্যে 95% ত্রুটি অমিলের ধনুর্বন্ধনী থেকে এসেছিল" - কেবল বর্ণিত ভাষায়, সংকলিত নয়।
মগগ

2

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

একক লাইন ifবিবৃতি জন্য, আমি ব্যবহার করব

if (you.hasAnswer()) you.postAnswer();

যদি এটি না হয় you.postAnswer();তবে অনেক দীর্ঘ কিছু হয় যেমন you.postAnswer(this.AnswerId, this.AnswerText, this.AnswerType);আমি সম্ভবত প্রথম ধরণে ফিরে যাব:

if (you.hasAnswer) {
    you.postAnswer(this.AnswerId, this.AnswerText, this.AnswerType);
}

আমি কখনই লাইন ব্রেক ব্যবহার করব না, এবং কোনও elseবিবৃতি থাকলে আমি এই পদ্ধতিটি কখনও ব্যবহার করব না ।

if (you.hasAnswer()) you.postAnswer();
else you.doSomething()

একটি তাত্ত্বিক সম্ভাবনা, তবে আমি কখনও ব্যবহার করব না এমন একটি। এটি রূপান্তরিত করতে হবে

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

2

তাদের উচিত নয়; আমার জন্য প্রথম পদ্ধতি।

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

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

প্লাস, যেমন ইতিমধ্যে বলা হয়েছে, এটি স্ক্রিনে আরও কোড ফিট করতে দেয় যা অন্যথায় সামান্য বিপরীত।


2

এটি প্ল্যাটফর্ম / ভাষা / সম্মেলনের উপর নির্ভর করে

জাভাতে:

void someMethod() { 
     if (you.hasAnswer()) {
         you.postAnswer();
     } else {
       you.doSomething();
     }
}

সি # তে

void someMethod() 
{ 
     if (you.hasAnswer()) 
     {
         you.postAnswer();
     } 
     else 
     {
       you.doSomething();
     }
}

সি তে:

void someMethod() 
{ 
     if (you_hasAnswer()) {
         you.postAnswer();
     } else {
       you_doSomething();
     }
}

আমি ঘৃণা করি যখন জাভা ছেলেরা তাদের স্টাইলটি সি # কোড এবং তার বিপরীতে ব্যবহার করে।


3
সি স্টাইল সর্বদা আমাকে বিরক্ত করত। ধারাবাহিক থাকো!
খ্রিস্টান মান

1

আমি কেবল এটিই বলতে পারি যে আপনি যদি পদ্ধতি # 3 এর অনুরাগী হন তবে আপনি পৃথিবীর প্রতিটি আইডিই কোড-ফর্ম্যাটারের দ্বারা নির্যাতিত হবেন।


1

আমি প্রথম পদ্ধতিটি কেবলমাত্র इसलिए ব্যবহার করি কারণ এটি আরও কমপ্যাক্ট এবং স্ক্রিনে আরও কোডের অনুমতি দেয়। আমি নিজেই ব্রেস আপ করার ক্ষেত্রে কখনও সমস্যায় পড়িনি ( ifশর্তটি যুক্ত করার আগে আমি সবসময় এগুলি বিবৃতি দিয়ে লিখি এবং বেশিরভাগ পরিবেশ আপনাকে মেলানো ধনুর্বন্ধনীতে লাফিয়ে অনুমতি দেয়)।

আপনি যদি হয়নি চাক্ষুষরূপে ধনুর্বন্ধনী আপ পেয়ার করতে হবে, তারপর আমি দ্বিতীয় পদ্ধতি পছন্দ করেন। তবে এটি এক সময়ে কম কোডের অনুমতি দেয় যার জন্য আপনাকে আরও স্ক্রোল করতে হবে। এবং এটি, আমার পক্ষে কমপক্ষে, ঝরঝরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামিয়ে নেওয়া হচ্ছে than আমি স্ক্রোলিং ঘৃণা করি। তারপরে আবারও যদি আপনাকে কোনও একক ifবিবৃতি জুড়ে স্ক্রোল করতে হয় তবে এটি সম্ভবত খুব বড় এবং রিফ্যাক্টরিংয়ের প্রয়োজন।

কিন্তু; সবার মধ্যে সবচেয়ে গুরুত্বপূর্ণ বিষয় হল ধারাবাহিকতা। এক বা অন্য ব্যবহার করুন - উভয়ই!


0

আমি যখন 12 এ প্রথম প্রোগ্রামিং শিখছিলাম তখন আমি পরের লাইনে বন্ধনীগুলি রেখেছিলাম কারণ মাইক্রোসফ্ট কোডিং টিউটোরিয়ালগুলি এর মতো। আমি সেই সময় 4-স্পেস টিএবিএস-এর সাথে ইন্টেন্টেডও করেছি।

কয়েক বছর পরে, আমি জাভা এবং জাভাস্ক্রিপ্ট শিখেছি এবং আরও ব্রেস-অন-একই-লাইন কোড দেখেছি, তাই আমি পরিবর্তন করেছি। আমি 2-স্পেস স্পেস দিয়ে ইন্ডেন্ট করতে শুরু করেছি।


5
+1, -1। কোনও সম্পাদক ট্যাব দৈর্ঘ্যটিকে আপনার স্বেচ্ছাসেবী দৈর্ঘ্যের সাথে সামঞ্জস্য করতে পারে কেন আপনি কেন ট্যাবগুলিতে ইন্ডেন্ট করবেন না? অন্যথায়, আপনি আমাদের অনেককে নেতৃত্ব দেন যারা আপনার কোডটি অভিশাপ দেওয়ার জন্য 8-তে সত্যিকারের ইনডেন্ট পছন্দ করে।
Jé ক্যু

0

এখানে একটি চতুর্থ বিকল্প রয়েছে যা ধনুর্বন্ধনী সংযোজিত রাখে, তবে স্থানটি অপচয় করে না:

if (you.hasAnswer())
{    you.postAnswer();
     i.readAnswer();
}
else
{   you.doSomething();
}

একমাত্র সমস্যা হ'ল বেশিরভাগ আইডিই'র অটোফর্মেটরগুলি এটির উপরে চাপ দেয়।


9
... বেশিরভাগ প্রোগ্রামারদের মতো যারা এটাকে শ্বাসরোধ করবে।
Jé ক্যু

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

হ্যাঁ এই দুর্দান্ত! :) প্রথম স্টাইলের চেয়ে ভাল!
নওফাল

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

-1

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

আমি ব্যক্তিগতভাবে 1 ম পদ্ধতি পছন্দ করব।

এছাড়াও আমি তৃতীয় পদ্ধতিতে আপনি যা দেখতে চান তা পেলাম না?

এটা কি ভুল উপায় নয়? উদাহরণস্বরূপ একটি পরিস্থিতি হিসাবে বিবেচনা করুন ..

if (you.hasAnswer())
  you.postAnswer();
else
  you.doSomething();

এখন কি যদি কেউ আরো কিছু বিবৃতি যুক্ত করতে চায় যদি অবরোধ করবেন?

সেক্ষেত্রে আপনি যদি ২ য় পদ্ধতি ব্যবহার করেন তবে সংকলক সিনট্যাক্স ত্রুটি নিক্ষেপ করবে।

if (you.hasAnswer())
   you.postAnswer1();
   you.postAnswer2();
else
   you.doSomething();

2
আরও খারাপ হতে পারে যদি কেউ পাশে এসে তা করেন: যদি (you.hasAnswer ()) you.postAnswer (); অন্য আপনি.ডোসোমথিং (); you.doSomethingElse (); - এটি সূক্ষ্ম বাগগুলির জন্য একটি রেসিপি যা চোখ সহজেই পিছলে যেতে পারে এবং
সংকলকটি কোনওরকম

@ ফিননক: হুবহু!
চানকি পাঠক

2
যদি কেউ অন্য বিবৃতি যোগ করতে চায় তবে তারা নিজেরাই ব্রেসগুলি রাখতে পারে। তার লবণের জন্য যে কোনও প্রোগ্রামার সত্যই তা খুঁজে বের করতে সক্ষম হবে।
রবার্ট হার্ভে

আমি বলতে চেয়েছিলাম যে তার ২ য় পদ্ধতিটি ভুল।
চানকি পাঠক

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