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 फ़ाइल में। इस तरह से "चतुर" भी पूरे प्रोजेक्ट में मेल खाने वाली टिप्पणियों पर विचार करने की कोशिश करता है । यह अक्सर बहुत सारे जोखिम का कारण बनता है, और जावा वातावरण में रिफैक्टिंग करना अब सुरक्षित नहीं है।
Intellij 12 में वही बात हो रही थी। गंभीरता से, मुझे Intellij की ज़रूरत नहीं है कि वह ऐसी किसी भी चीज़ की सिफारिश करे, जिसे असुरक्षित माना जाता है, या जब यह सुनिश्चित नहीं होता कि यह वही बात है!
मैं रिफैक्टरिंग को बाहर कर सकता हूं लेकिन मेरे पास हर बार पांच "सुझावों" का मूल्यांकन करने का समय नहीं है। यह सिर्फ मानवीय त्रुटि का मौका उठाता है: ज्यादातर समय मैं सिर्फ एंटर दबाता हूं, और वूप्स चीजें रिफैक्ट हो जाती हैं।
जावा वातावरण में रिफैक्टरिंग भी एक प्रमुख मुद्दा है जब यह कभी-कभी .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
पहले की तरह रिफ्लेक्टरिंग करते हैं, तो मुझे निम्नलिखित सिफारिशें मिलती हैं, आपदा से एक एनआरई और कुछ का मूल्यांकन करना होगा और एक बार में एक को बाहर करना होगा। यह प्रयास करता है और सिर्फ कष्टप्रद और जोखिम भरा होता है। यह किसी को चिल्ला रहा है, बंद करो! और फिर ऊह, एक मिनट के बाद कुछ भी नहीं, हताशा और 1000 लंबे शब्द निबंध (यह)।
गंभीरता से, वहाँ इस तरह के जोखिम भरे व्यवहार को निष्क्रिय करने का एक तरीका है !? और क्या कोई कारण है कि यह डिफ़ॉल्ट रूप से है ??
EDIT 20200706
2020 में शिट जारी है: https://youtrack.jetbrains.com/issue/IDEA-245370