জাভাতে অব্যবহৃত আমদানি পরিষ্কার করার কোনও কারণ নেই, বিশৃঙ্খলা হ্রাস ছাড়া?


99

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

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

উত্তর:


86

আপনি আমদানি সরিয়ে না নিলে পারফরম্যান্স সমস্যা বা এর মতো কিছু সম্ভবত হয় বলে আমি মনে করি না।

তবে নামকরণের দ্বন্দ্ব থাকতে পারে, বিরল ক্ষেত্রে তালিকার ইন্টারফেস আমদানির মতো।

Eclipse এ আপনি আমদানিগুলি সাজানোর জন্য সর্বদা একটি শর্টকাট (ওএস - উইন: Ctrl + SHIFT + Oএবং ম্যাকের উপর নির্ভর করে) ব্যবহার করতে পারেন COMMAND + SHIFT + O। অন্ধকার তারপর আপ সাফ করে আমদানি অধ্যায় সব মামুলি আমদানির সরিয়ে ফেলা হবে ইত্যাদি আপনি যদি একটি আমদানিকৃত জিনিস প্রয়োজন হয় আবার অন্ধকার সেগুলি স্বয়ংক্রিয়ভাবে যখন আপনার সাথে বিবৃতি সম্পূর্ণ করছি যোগ হবে Ctrl + SPACE। সুতরাং আপনার ক্লাসে অব্যবহৃত কোড রাখার দরকার নেই।

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


22
এটি উইন্ডোতে আসলে Ctrl + Shift + O।
ম্যাট বল

4
লিনাক্সে ভালভাবে Ctrl + Shift + O। সম্ভবত বিএসডিতেও একই রকম।
নটহাগো

4
অর্গানাইজড আমদানি ক্রিয়াকলাপে ctrl+3এটি পৌঁছানোর আরেকটি উপায় হ'ল ক্লিক করে (কমপক্ষে উইন্ডোতে) এবং তারপরে আমদানি টাইপ করে। এটি স্পষ্টতই ধীরে ধীরে তবে সিটিআরএল + শিফট + হে তবে এটির দ্রুত সন্ধান করার একটি উপায় (এবং অন্যান্য ক্রিয়াগুলি যা আপনি মনে রাখেন বা সন্ধান করার চেষ্টা করছেন) এমনকি যদি আপনি এর জন্য নির্দিষ্ট শর্টকাটটি মনে না রাখেন।
elegleg

53

একটি হ'ল আপনি যদি ক্লাসপথ থেকে আমদানি দ্বারা রেফারেন্সীকৃত ক্লাসটি সরিয়ে ফেলেন তবে আপনি কোনও নির্বিকার সংকলক ত্রুটি পাবেন না যা কোনও উদ্দেশ্য নয়। আপনি "যেখানে ব্যবহৃত" অনুসন্ধান সম্পাদন করলে আপনি মিথ্যা ধনাত্মকতা পাবেন না।

অপরটি (তবে এটি প্রকৃতির ক্ষেত্রে খুব সুনির্দিষ্ট হবে) হ'ল যদি অব্যবহৃত আমদানিতে অন্য আমদানির সাথে নামকরণের বিরোধ রয়েছে, যার ফলে আপনাকে অকারণে পুরোপুরি যোগ্যতাসম্পন্ন নাম ব্যবহার করতে হবে।

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

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


4
@ যিশাই, আপনি যদি ক্রিয়াকলাপগুলি সেভ অ্যাকশনগুলিতে সন্ধান করেন তবে এটি প্রতিবার সংরক্ষণ করার পরে উত্স কোডকে স্বাভাবিক করতে পারে।
থরবজর্ন রাভন অ্যান্ডারসন

4
@ জেজেপি, যদিও তারা ফলাফলের বাইটকোডকে প্রভাবিত করে না, সংকলকটিকে এটি তৈরি করতে প্রয়োজনীয় বাইটকোডটি বোঝার জন্য তাদের সমাধান করতে হবে needs
যিশাই

4
@ এজেপি, পুরো সংযোজনটি সংকলনের সময় সম্পর্কে কথা বলছে ("বিল্ড সার্ভারটি সংকলন ব্যর্থ হয়েছে")।
যিশাই

4
আমি এখনও বুঝতে পারি না যে কীভাবে একা আমদানি এই সমস্ত কারণ ঘটাতে পারে?
থরবজর্ন রাভন অ্যান্ডারসন

4
@ ইশাই দুঃখিত তবে আমি এটি বিশ্বাস করি না। আপনি এটি ভুলভাবে নির্ণয় করেছেন। ক্লাসটি প্রকৃতপক্ষে ব্যবহার না করা হলে আমদানির তেমন কোনও প্রভাব থাকতে হবে না। সমস্ত আমদানির বিবৃতিটি কোন শ্রেণীর প্যাকেজটি রয়েছে তা সংকলককে জানায় The সংকলকটি কেবল যখন ক্লাস সম্পর্কে টাইপ তথ্য প্রয়োজন তখন সংক্ষিপ্তভাবে সংকলন করার চেষ্টা করে।
লার্নের মারকুইস

9

শুদ্ধবাদী দৃষ্টিকোণ থেকে, যে কোনও নির্ভরতা পণ্যটির উপর "বাধা" এবং এইভাবে পরে রক্ষণাবেক্ষণের সমস্যা তৈরি করতে পারে।

উদাহরণস্বরূপ, ধরে নেওয়া যাক আপনার প্রোগ্রামটি com.XYZObjectPool ক্লাসটি ব্যবহার করে এবং এরপরে আপনি এটি ব্যবহার না করার সিদ্ধান্ত নেন তবে কখনও আমদানি সরান না। যদি এখন অন্য কেউ org.WVYObjectPool ইনস্ট্যান্ট করতে চান এবং কেবল অবজেক্টপুলের উল্লেখ করেন তবে castালাইয়ের সমস্যা বা অনুরোধের সমস্যা না হওয়া অবধি এই আইনের বিষয়ে তারা কোনও সতর্কতা পান না।

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

যে কোনও উপায়ে, আপনি গ্রহটিকে আপনার জন্য এটি পরিষ্কার করতে বলতে পারেন


3

সতর্কতা? আপনার জন্য স্বয়ংক্রিয়ভাবে এটিকে পরিষ্কার করার জন্য Eclipse কে বলুন। ইন্টেলিজ এটাই করে। যদি এটি আপনাকে সতর্ক করতে যথেষ্ট স্মার্ট হয় তবে এগুলি পরিষ্কার করার জন্য যথেষ্ট স্মার্ট হওয়া উচিত। আমি এমন একটি নগদ হওয়া বন্ধ করতে এবং কিছু করার জন্য এটি বলার জন্য একটি Elpipse সেটিংস সন্ধানের পরামর্শ দেব।


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

4
@ থরবজর্ন: সম্মত, বিশেষত যদি এটি একটি শ্রেণি হয় তবে আমি সামান্য কিছুটা ব্যবহার বন্ধ করে দিয়েছি তবে যা আশা করি খুব শীঘ্রই আবার ফিরে আসব।
ডোনাল ফেলো

4
@ ডোনাল, ভাল, এটি সিটিআরএল-স্পেসের জন্য।
থরবজর্ন রাভন অ্যান্ডারসন

3

এটি রক্ষণাবেক্ষণের জন্য কার্যকর প্রোগ্রামটির স্বচ্ছতার সাথে করতে হবে।

যদি আপনাকে কোনও প্রোগ্রাম বজায় রাখতে হয় তবে আপনি খুঁজে পাবেন যে প্রতি লাইনে একক শ্রেণি আমদানি করা কতটা কার্যকর।

নিম্নলিখিত পরিস্থিতিতে সম্পর্কে চিন্তা করুন:

import company.billing.*;
import company.humanrerources.*;

// other imports 


class SomeClass {
      // hundreds or thousands of lines here... 
    public void veryImportantMethod() {
      Customer customer;
      Employee comployee;
      Department dept. 
      // do something with them
     }
 }

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

এমনকি কোনও আইডিই সহ, আপনি ঘোরাফেরা করতে বা ঘোষণায় ফিরে যেতে চান না এবং ফিরে যেতে চান না, যদি আপনি কার্যক্ষমতার দিক থেকে বুঝতে পারেন যে অন্যান্য প্যাকেজগুলি এবং ক্লাসগুলি বর্তমান কোডের উপর নির্ভর করে।

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

কারও সাথে পারফরম্যান্সের পার্থক্য নেই।


3

এফওয়াইআই, এটি আমাকে ধরা দিয়েছে, কারণ আমি মনে করি না যে সংগঠিত আমদানি আসলে অব্যবহৃত আমদানি সরিয়ে দেয়, আমি ভেবেছিলাম এটি কেবল তাদের সাজানো হয়েছে them

সংরক্ষণ অপারেশনের সময় আমদানি স্বয়ংক্রিয়ভাবে সরানো আমাকে কিছুটা দুঃখের কারণ করেছিল যখন উদাহরণস্বরূপ, বিকাশ বা পরীক্ষার সময় আপনার কোনও সমস্যা হয় এবং কিছু কোড মন্তব্য করেন, যখন আপনি এটি সংরক্ষণ করেন, কোডের মন্তব্যযুক্ত অংশের দ্বারা ব্যবহৃত আমদানি সরানো হয়। কখনও কখনও এটি কোনও সমস্যা হয় না কারণ আপনি পরিবর্তনগুলি পূর্বাবস্থায় ফেরাতে ( Ctrl+ Z) করতে পারেন , তবে অন্যান্য সময়গুলি এতটা সহজ নয় যেহেতু আপনি অন্যান্য পরিবর্তনগুলি করেছেন। আমারও সমস্যা ছিল যেখানে আমি কোডটি uncommented করার সময় (আমি আগে মন্তব্য করেছিলাম তখন সেভ করে, সেভাবে এই কোডটির জন্য আমদানিগুলি সরিয়ে নিয়েছি), এটি স্বয়ংক্রিয়ভাবে প্রয়োজনীয় আমদানি অনুমান করার চেষ্টা করেছিল এবং ভুলগুলি বাছাই করে (যেমন আমি মনে করি আমি একটি StringUtilsক্লাস ব্যবহার করা হয়েছিল এবং এটি ভুল লাইব্রেরি থেকে একই নামের সাথে অন্য একটি বেছে নিয়েছে)।

আমি আমদানিটিকে সেভ অ্যাকশন হিসাবে না করে নিজে আমদানি করতে পছন্দ করি।


2

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


2

আপনি অব্যবহৃত আমদানির বিবৃতিগুলি মন্তব্য করতে পারেন এবং সতর্কতা আপনাকে বিরক্ত করবে না তবে আপনি যা দেখতে পেয়েছিলেন তা দেখতে পাবেন।


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

1

কোনও পারফরম্যান্স প্রভাব নেই, যদিও পাঠযোগ্যতার জন্য আপনি এটিকে পরিষ্কার করতে পারেন। অব্যবহৃত আমদানি অপসারণ Eclipse এবং IntelliJ IDEA উভয় ক্ষেত্রেই সহজ।

গ্রহন

উইন্ডোজ / লিনাক্স -    Ctrl+ Shift+O

ম্যাক -                        Cmd+ Shift+O

ইন্টেলিজ আইডিইএ বা অ্যান্ড্রয়েড স্টুডিও

উইন্ডোজ / লিনাক্স -    Ctrl+ Alt+O

ম্যাক -                        Cmd+ Alt+O


0

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

এবং এইভাবে, অন্ধকার দিয়ে আপনি ব্যবহার করতে পারেন Ctrl+ + Shift+ + Oআমদানির সংগঠিত করার, কিন্তু আপনি একটি "ক্লিনার" যে এই ধরনের জিনিস (এবং আরও অনেক কিছু) প্রতিটি সময় সঙ্গে চুক্তি আপনি একটি জাভা ফাইলটি সংরক্ষণ কনফিগার করতে পারেন।


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

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

4
পৃথিবীতে আপনি কোথায় পড়েছেন? এটি সম্পূর্ণ এবং সম্পূর্ণ ভুল, এবং সর্বদা ছিল। কোড দ্বারা রেফারেন্সযুক্ত প্রতিটি শ্রেণি আমদানি সহ নয় , লোড করা হবে ।
লার্নের মারকুইস

0

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

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