জাভা কোডের কিছু বিভাগের জন্য কীভাবে Eclipse কোড ফর্ম্যাটারটি বন্ধ করবেন?


488

আমি জাভা স্ট্রিং হিসাবে লিখিত এসকিউএল স্টেটমেন্ট সহ কিছু জাভা কোড পেয়েছি (দয়া করে কোনও ওআর / এম ফ্লেমওয়ারস নয়, এম্বেডড এসকিউএল এটি যা - তা আমার সিদ্ধান্ত নয়)।

রক্ষণাবেক্ষণের স্বাচ্ছন্দ্যের জন্য আমি এসকিউএল এর স্টেটমেন্টগুলি শব্দাবলীর সাথে বিভিন্ন কনডেটেটেড স্ট্রিংগুলিতে ভেঙে ফেলেছি। পরিবর্তে এর মতো কিছু:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

আমার মতো কিছু আছে:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";

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

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

এখন, কিছু প্রকল্পের সদস্যরা Eclipse Editor ব্যবহার করেন এবং যখন তারা পুরো উত্স ফাইলটি ফর্ম্যাট করেন তখন প্রায়শই শব্দার্থক বিন্যাসটি নষ্ট হয়ে যায়।

বিন্যাসকরণের ক্ষেত্রে উত্সের নির্দিষ্ট রেখাগুলি উপেক্ষা করার জন্য Eclipse কে নির্দেশ দেওয়ার কোনও উপায় আছে কি?

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

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING

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

আদর্শভাবে, একটি সমাধান আমাকে একটি আইডিই পুনরায় কনফিগারেশন করার জন্য অ্যাক্লিপস ব্যবহার করে দলের সদস্যদের প্রয়োজন ছাড়াই ইলিপস ফর্ম্যাটারের জন্য নির্দেশাবলী সন্নিবেশ করার অনুমতি দেবে (সম্ভবত একটি ফর্ম্যাটর অজ্ঞোস্টিক কমান্ড মন্তব্য বেছে নেওয়া ছাড়া: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING)।


1
আমাদের এই সমস্যা হয়েছে। অন্ধকার উচিত সবসময় একটি স্ট্রিং কন্সট্রাকটর একটি লাইন বিরতি যেখানে একটি + কিনা স্ট্রিং এর পরবর্তী বিট লাইনে মাপসই করা হবে নির্বিশেষে একজন বিকল্প আছে। তবে তা হয় না। :-(
জিবিবি

: দৃশ্যত এই বৈশিষ্ট্যটি অন্ধকার 3.6M6 মধ্যে যোগ করা হয়েছিল bugs.eclipse.org/bugs/show_bug.cgi?id=27079
Guillaume,

দ্রষ্টব্য: আপনি যদি আপনার মন্তব্যগুলিকে গণ্ডগোলের থেকে গ্রহটিকে রোধ করতে চান তবে আপনি প্রতিটি লাইনের সামনে // ব্যবহার করতে পারেন। একটি ব্লক মন্তব্য করতে, হাইলাইট করুন এবং Ctrl + / টিপুন।
জন হেন্কেল

নোট করুন যে এখন 10 বছর পরে, জাভা 14 সম্ভবত এটি অতীতের বিষয়টিকে বানাতে মাল্টি-লাইন স্ট্রিংগুলি আনবে।
থোরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


865

Eclipse 3.6 আপনাকে একটি বিশেষ মন্তব্য, পছন্দ মতো করে ফর্ম্যাটিং বন্ধ করতে দেয়

// @formatter:off
...
// @formatter:on

চালু / বন্ধ বৈশিষ্ট্য "চালু" চালু রাখতে হবে অন্ধকার পছন্দ আছে: Java > Code Style > Formatter। সক্ষম করুন Edit, ক্লিক করুন ।Off/On TagsEnable Off/On tags

পছন্দগুলিতে যাদু স্ট্রিংগুলি পরিবর্তন করাও সম্ভব - এখানে Eclipse 3.6 ডক্স পরীক্ষা করে দেখুন

অধিক তথ্য

Java > Code Style > Formatter > Edit > Off/On Tags

এই পছন্দটি আপনাকে ফর্ম্যাটর সক্ষম করতে একটি ট্যাগ অক্ষম করতে এবং একটি ট্যাগ সংজ্ঞায়িত করতে দেয় (আপনার ফর্ম্যাটর প্রোফাইলে অফ / অন ট্যাগ ট্যাব দেখুন):

এখানে চিত্র বর্ণনা লিখুন

আপনার কাছ থেকে পতাকাগুলি সক্ষম করতে হবে Java Formatting


7
এই পৃষ্ঠায় অন্যত্র উল্লিখিত "কখনই লাইনে যোগ দিন" বিকল্পটিও খুব দরকারী is
xpmatteo

89
অন ​​/ অফ বৈশিষ্ট্যগুলি "চালু" করতে হবে। গ্রহগ্রহের পছন্দগুলিতে: জাভা> কোড স্টাইল> ফর্ম্যাটর। "সম্পাদনা" বোতামটি ক্লিক করুন, "অফ / অন ট্যাগস", "ট্যাগগুলি সক্ষম / বন্ধ করুন" চেক করুন।
ডোমেনিক ডি

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

11
দলগুলিকে তাদের উইকিতে এক্লিপস প্রিফেস (ফাইল) এর একটি অনুলিপি রফতানি করতে হবে এবং প্রত্যেককে একই ব্যবহার করার প্রয়োজন হবে। আমাদের জন্য ভাল কাজ করে। ;)
জোসেফ লাস্ট

এফওয়াইআই আমাকে এটি কাজ করতে পেতে // এবং @ সাইন এর মধ্যে স্থান সরাতে হয়েছিল।
রায় ট্রুইলোভ

61

ফর্ম্যাটারে অ্যালাইক্স ৩.৫ এম 4 থেকে আফাইকের একটি বিকল্প রয়েছে "নেভারে জয়েন লাইনেস" যা ব্যবহারকারীর লাইন ব্রেকগুলি সংরক্ষণ করে। হতে পারে যে আপনি চান কি।

অন্যথায় এই কুরুচিপূর্ণ হ্যাক আছে

String query = //
    "SELECT FOO, BAR, BAZ" + //
    "  FROM ABC"           + //
    " WHERE BAR > 4";

1
সুতরাং "নেভার লাইনস যোগদান করুন" বিকল্পটি সেটিংয়ের ছাড়াও আমি আরো এই "ভৌতিক" মন্তব্য লিখতে হয়? "নেভার জয়েন লাইনেস" অংশটি নিজেই কাজ করা উচিত নয়?
গ্রেগ ম্যাটিস

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

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

"কখনই লাইনগুলিতে যোগ দিন" পরীক্ষা না করে অন / অফ ম্যাক্রোগুলি আমার পক্ষে কাজ করে না - ধন্যবাদ!
ক্রিস্টোফার সোপ

28

এই উত্তরটি এসও তে দেখুন ।

আরও একটি সমাধান রয়েছে যা আপনি নির্দিষ্ট ব্লক মন্তব্যের বিন্যাসটি দমন করতে ব্যবহার করতে পারেন। /*-ব্লক মন্তব্যের শুরুতে ব্যবহার করুন (হাইফেন নোট করুন) এবং যদি আপনি বাকী ফাইলটি ফর্ম্যাট করেন তবে বিন্যাসটি প্রভাবিত হবে না।

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

উত্স: ওরাকল এ ডকুমেন্টেশন


2
এটি সর্বোত্তম উত্তর কারণ এটি ব্যবহারকারীর আইডিইর কনফিগারেশনের উপর নির্ভর করে না। ধন্যবাদ।
আজিম

26

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

বৈশিষ্ট্যসমূহ → জাভা কোড স্টাইল → ফর্ম্যাটার project প্রকল্প নির্দিষ্ট সেটিংস সক্ষম করুন বা ওয়ার্কস্পেস সেটিংস কনফিগার করুন সম্পাদনা করুন → লাইন র্যাপিং (ট্যাব) → "ইতিমধ্যে মোড়ানো রেখাগুলিতে কখনই যোগদান করবেন না" পরীক্ষা করুন

সংরক্ষণ করুন, প্রয়োগ করুন।

এখানে চিত্র বর্ণনা লিখুন


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

2
যখন রচয়িতা প্যাটার্ন ব্যবহার এই সমাধান চমৎকার এবং তার প্রাসঙ্গিকতা অবশ্যই জাভা 8. মধ্যে lambdas প্রবর্তনের সঙ্গে বেড়ে যায়
জোনাস Kongslund

16

ফর্ম্যাটর ট্যাগ যুক্ত করার ক্ষমতা আপনার চালু করতে হবে। মেনুবারে যান:

Windows Preferences Java Code Style Formatter

টিপুন Editবোতাম। শেষ ট্যাবটি চয়ন করুন। চালু / বন্ধ বাক্সটি লক্ষ্য করুন এবং তাদের একটি চেকবক্স দিয়ে সক্ষম করুন।


14

আপনি যদি লাইনের শুরুতে প্লাস চিহ্নটি রেখে দেন তবে এটি আলাদাভাবে ফর্ম্যাট করে:

String query = 
    "SELECT FOO, BAR, BAZ" 
    +    "  FROM ABC"           
    +    " WHERE BAR > 4";

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

8
আপনাকে স্বাগতম. আসলে, আমি কয়েক দশক ধরে আমার + চিহ্নগুলি লাইনগুলির সামনে রেখে দিয়েছি, এবং বিন্যাসটিকে বোকা বানানোর জন্য নয়। আমি তাদের সামনে রাখি, কারণ এটি আমার কাছে যা ঘটছে তা স্পষ্ট করে তোলে: একটি লাইনের শেষে কী কখনও কখনও হারিয়ে যায়। আমরা কাঠের পোড়া সংকলকগুলি ব্যবহার করার সময় এটি কোনও প্রান্তে প্রকল্পের মান ছিল এবং এটি আমার সাথে আটকে যায়।
সিপারকিনস

5

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

    final String sql = "SELECT v.value FROM properties p               "
            + "JOIN property_values v ON p.property_id = v.property_id "
            + "WHERE p.product_id = ?                                  "
            + "AND v.value        IS NOT NULL                          ";

5

প্রতিটি লাইনকে ডাবল স্ল্যাশ "//" দিয়ে শেষ করুন। এটি তাদের সমস্তকে একই লাইনে স্থানান্তরিত করা থেকে গ্রহনকে রক্ষা করবে।


4

বিকল্প পদ্ধতি: cl.cl গ্রহে, "লাইনের মোড়ক" এর পরে "জেনারেল সেটিংস" এর অধীনে "ইতিমধ্যে মোড়ানো রেখাগুলিতে কখনই যোগদান করবেন না" বিকল্প রয়েছে। এর অর্থ এই ফর্ম্যাটরটি দীর্ঘ লাইনগুলি মোড়বে তবে আপনার ইতিমধ্যে থাকা কোনও মোড়ক পূর্বাবস্থায় ফিরে আসবে না।


4

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

Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Lines

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

যদি অন / অফ ট্যাগ অপশন বন্ধ করা থাকে তবে এটি পুনরায় ফর্ম্যাটিং প্রতিরোধ করতে পারে।


2

//আপনি নতুন লাইনগুলি যেখানে চান তা যুক্ত করে ভুতুড়ে মন্তব্যগুলি দুর্দান্ত!

  1. @ ফর্ম্যাটটার: অফটি কোড থেকে সম্পাদককে একটি রেফারেন্স যুক্ত করে। কোডটি, আমার মতে, কখনও এই জাতীয় উল্লেখ থাকতে হবে না।

  2. ফ্যান্টম মন্তব্য (//) ব্যবহৃত বিন্যাসকরণ সরঞ্জাম নির্বিশেষে কাজ করবে। Eclipse বা InteliJ বা আপনি যে কোনও সম্পাদকই ব্যবহার করুন না কেন। এটি এমনকি খুব দুর্দান্ত গুগল জাভা ফর্ম্যাটের সাথেও কাজ করে

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

  4. আসলে, আপনি সম্ভবত ফর্ম্যাটিং সঠিক চান ? আপনি মিশ্র ট্যাব / স্পেস এবং পিছনের স্থানগুলি সরাতে চান। আপনি কোডের মান অনুযায়ী লাইনগুলি ইনডেন্ট করতে চান। আপনি যা চান না তা লম্বা লাইন। সেই, এবং কেবল সেটাই, সেই ভুতুড়ে মন্তব্য আপনাকে দেয়!


-3

এই হ্যাক কাজ করে:

String x = "s" + //Formatter Hack
    "a" + //
    "c" + //
    "d";

আমি বিন্যাসটি ব্যবহার না করার পরামর্শ দেব। খারাপ কোডটি কৃত্রিমভাবে ভাল না দেখে খারাপ দেখা উচিত। ভাল কোড সময় লাগে। আপনি মানের উপর প্রতারণা করতে পারবেন না। ফর্ম্যাটিং উত্স কোড মানের অংশ।


8
বিন্যাস ব্যবহার না করা একটি খারাপ ধারণা; ফর্ম্যাটরটি ত্রুটিগুলি ধরতে সহায়তা করে এবং কোডটিকে একটি সুসংগত অবস্থায় রাখে।
ফ্রান্সিস আপটন চতুর্থ

একটি আকর্ষণীয় পরামর্শ, তবে আমি দেখতে পাই না যে কীভাবে ফর্ম্যাটিংটি কোডটি ভাল কিনা তা আমাদের জানায়।
ক্রিস

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

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

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