public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
আমি ক্লাস ভেরিয়েবলটি রিফ্যাক্টর চেষ্টা করছি value, যা ঘটে যায়। এর অর্থ কোনও ডায়ালগ পপ আপ হয় না; আমি এন্টার টিপুন এবং এটি মন্তব্য সহ কী কী নয়, সহ পুরো প্রকল্প জুড়ে রিফ্যাক্টর চেষ্টা করে:
<%--<link href="<c:url value="../core/core.css" />" />--%>
একটি .jsp ফাইলে। এটি পুরোপুরি মেলে এমন মন্তব্যগুলির রিফ্যাক্টর চেষ্টা করার জন্য খুব "চালাক" is এটি প্রায়শই প্রচুর বাগের ঝুঁকির কারণ হয়ে থাকে এবং জাভা পরিবেশে রিফ্যাক্টরিং আর নিরাপদ থাকে না।
একই জিনিসটি ইন্টেলিজ ১২ এ ঘটছিল। গুরুতরভাবে, আমার কাছে অনিরাপদ বলে মনে করা এমন কোনও বিষয় প্রস্তাব করার জন্য ইন্টেলিজের দরকার নেই বা যখন এটি নিশ্চিত না হয় যে এটি একই জিনিস!
আমি রিফ্যাক্টরিংগুলি বাদ দিতে পারি তবে প্রতিবার পাঁচটি "পরামর্শ" মূল্যায়নের জন্য আমার কাছে সময় নেই। এটি কেবলমাত্র মানুষের ত্রুটির সম্ভাবনা বাড়িয়ে তোলে: বেশিরভাগ সময় আমি কেবল এন্টার টিপই এবং উইপস জিনিসগুলি রিফ্যাক্টর হয়।
জাভা পরিবেশে রিফ্যাক্টরিংও একটি বড় সমস্যা যখন এটি কখনও কখনও .js ফাইলগুলিতে জিনিসগুলি প্রতিস্থাপনের চেষ্টা করে। গুরুতরভাবে, এটি বন্ধ করতে হবে।
পপআপ ডায়ালগ ব্যতীত আমি "অনুসন্ধানের স্ট্রিংগুলি" টিটিক করতে পারি না। এমনকি যদি এটি টিক দেওয়া থাকে তবে ইন্টেলিজের পরামর্শগুলি ডিফল্টরূপে কখনই অন্তর্ভুক্ত করা উচিত নয় , বিশেষত যখন এটি বর্তমান ফাইলের বাইরে থাকে। এটি পাশাপাশি তাদের রিফ্যাক্টর করার পরামর্শও দিতে পারে তবে সেগুলি ডিফল্টরূপে বাদ দেওয়া উচিত। এটি হ'ল ডিফল্টরূপে সমস্ত কিছু ধ্বংস করে না দিয়ে এটি একটি অপ্ট-ইন বৈশিষ্ট্য হওয়া উচিত।
এটি অতি সাম্প্রতিক তথাকথিত "স্মার্ট" ইন্টেলিজ রিফ্যাক্টরিংয়ের সাথে ব্যবহারকারীর অভিজ্ঞতার একটি গুরুতর সমস্যা। জেএস ফাইলগুলি রিফ্যাক্ট করার সময়, আমি মন্তব্য বা স্ট্রিংয়ের জন্য জাভা ফাইলগুলি অনুসন্ধান করতে চাই না! পিরিয়ড! এবং বিপরীতভাবে!
নিরাপত্তা প্রথম আসে! বিকাশকারীরা যা তারা জানে যে তারা কী করছে তা যদি প্রয়োজন হয় তবে তারা নিজের জন্য স্ট্রিংগুলি অনুসন্ধান করবে। একটি গতিশীল ভাষার পরিবেশে এটি ইন্টেলিজকে ব্যবহার করা অসম্ভব করে তোলে, কারণ ঘন ঘন এবং কোনও সুস্পষ্ট নিদর্শন ছাড়াই কখনও কখনও রিফ্যাক্টরিংগুলি হয়, কখনও কখনও এটি প্রকল্পের বিভিন্ন জিনিস পরিবর্তন করে এবং কী না।
এখানে একটি বিকল্প থাকতে হবে যা বলে, "কেবলমাত্র এই ফাইলটির সাথে সম্পর্কিত রিফ্যাক্টর বা যখন 100% অনুমান করা হয়!" বিশেষত গতিশীল ভাষার জন্য! স্থির ভাষার জন্য এটি ফাইলের বাইরে মন্তব্য এবং স্ট্রিং সন্ধান করার চেষ্টাও করা উচিত নয়।
আমি এটিকে জনসমক্ষে প্রকাশ করা বলতে চাইনি, তবে আমি এই সমস্যাটি 2 বছর পূর্বে বাগট্র্যাকারে উত্থাপন করেছি, কিন্তু কেউ কোনও মনোযোগ দেয়নি।
সম্পাদনা
আপনারা যারা মনে করেন যে আমি সম্ভবত আরও দূরে যাব, আমি কেবল এটি চেষ্টা করে দেখলাম:
এই শ্রেণীর সাথে:
public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}
এবং যেকোন জাভা ক্লাসে এটি যুক্ত করা, উদাহরণস্বরূপ:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
KV.valআগের মত রিফ্যাকচার করার সময়, আমি নিম্নলিখিত প্রস্তাবগুলি পাই, দুর্যোগ থেকে একটি ENTER এবং আমাকে মূল্যায়ণ করতে এবং একবারে একটিকে বাদ দিতে হবে something এটি প্রচেষ্টা নেয় এবং কেবল বিরক্তিকর এবং ঝুঁকিপূর্ণ। এ যেন কেউ চিৎকার করে বলে, থাম! এবং তারপর ওহ, এক মিনিটের পরে কিছুই নেই, হতাশা এবং 1000 দীর্ঘ শব্দ রচনা (এটি)।

মারাত্মকভাবে, ঝুঁকিপূর্ণ আচরণের এই ধরণের অক্ষম করার কোনও উপায় আছে !? এবং এটি ডিফল্টরূপে চালু হওয়ার কোনও কারণ আছে কি ??
20200706 সম্পাদনা করুন
বিষ্ঠা 2020 এ অব্যাহত রয়েছে: https://youtrack.jetbrains.com/issue/IDEA-245370