public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
ฉันกำลังพยายาม refactor ตัวแปรคลาสvalue
ซึ่งเกิดขึ้นในสถานที่ นั่นหมายความว่าไม่มีกล่องโต้ตอบปรากฏขึ้น ฉันกด Enter และมันพยายามที่จะ refactor ในโครงการทั้งหมดรวมถึงความคิดเห็นและสิ่งที่ไม่รวมถึง:
<%--<link href="<c:url value="../core/core.css" />" />--%>
ในไฟล์. jsp นั่นเป็นวิธีที่ "ฉลาด" เกินไปที่จะพยายามปรับเปลี่ยนความคิดเห็นที่ตรงกันทั่วทั้งโครงการ ซึ่งมักก่อให้เกิดความเสี่ยงต่อข้อผิดพลาดมากมายและการปรับโครงสร้างใหม่ในสภาพแวดล้อม Java จะไม่ปลอดภัยอีกต่อไป
สิ่งเดียวกันนี้เกิดขึ้นใน Intellij 12 อย่างจริงจังฉันไม่ต้องการให้ Intellij แนะนำสิ่งที่คิดว่าไม่ปลอดภัยหรือเมื่อไม่แน่ใจว่าเป็นสิ่งเดียวกัน!
ฉันสามารถยกเว้นการปรับโครงสร้างใหม่ได้ แต่ฉันไม่มีเวลาประเมิน "คำแนะนำ" ห้าข้อทุกครั้ง มันเพิ่มโอกาสที่จะเกิดความผิดพลาดของมนุษย์โดยส่วนใหญ่แล้วฉันแค่กด Enter และสิ่งต่างๆจะถูกปรับโครงสร้างใหม่
การปรับโครงสร้างใหม่ยังเป็นปัญหาหลักในสภาพแวดล้อม Java เมื่อบางครั้งพยายามแทนที่สิ่งต่างๆในไฟล์. js อย่างจริงจังนี้ต้องหยุด
หากไม่มีกล่องโต้ตอบป๊อปอัปฉันจะไม่สามารถยกเลิกการเลือก "สตริงการค้นหา" ได้ แม้ว่าจะมีการทำเครื่องหมายไว้แล้วก็ตาม Intellij ไม่ควรรวมคำแนะนำไว้โดยค่าเริ่มต้นโดยเฉพาะอย่างยิ่งเมื่ออยู่นอกไฟล์ปัจจุบัน สามารถแนะนำให้ refactor พวกเขาได้เช่นกัน แต่ควรถูกยกเว้นโดยค่าเริ่มต้น นั่นคือควรเป็นคุณลักษณะที่เลือกใช้แทนที่จะทำลายทุกอย่างโดยค่าเริ่มต้น
นี่เป็นปัญหาร้ายแรงของประสบการณ์การใช้งานของผู้ใช้ที่เรียกว่าการปรับโครงสร้าง Intellij "อัจฉริยะ" ล่าสุด เมื่อปรับโครงสร้างไฟล์ JS ใหม่ฉันไม่ต้องการค้นหาไฟล์ Java สำหรับความคิดเห็นหรือสตริง! งวด! และในทางกลับกัน!
ความปลอดภัยมาก่อน! นักพัฒนาที่รู้ว่ากำลังทำอะไรอยู่จะค้นหาสตริงด้วยตนเองหากจำเป็น ในสภาพแวดล้อมของภาษาแบบไดนามิกทำให้ Intellij ไม่สามารถใช้งานได้เนื่องจากบ่อยครั้งและไม่มีรูปแบบที่ชัดเจนบางครั้งการปรับโครงสร้างใหม่ก็ผ่านไปบางครั้งการเปลี่ยนแปลงในโครงการและสิ่งที่ไม่เป็นเช่นนั้น
ควรมีตัวเลือกที่ระบุว่า "refactor only ที่สัมพันธ์กับไฟล์นี้หรือเมื่ออนุมาน 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;
}
}
และเพิ่มสิ่งนี้ให้กับคลาส Java เช่น:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
เมื่อปรับโครงสร้างใหม่KV.val
เหมือนเดิมฉันได้รับคำแนะนำต่อไปนี้การเข้าสู่จากภัยพิบัติและสิ่งที่ฉันต้องประเมินและแยกออกทีละรายการ ต้องใช้ความพยายามและน่ารำคาญและมีความเสี่ยง เหมือนมีคนตะโกนว่า STOP! หลังจากนั้นไม่กี่นาทีความหงุดหงิดและเรียงความยาว 1,000 คำ (นี้)
อย่างจริงจังมีวิธีปิดพฤติกรรมเสี่ยงแบบนี้ไหม!? และมีเหตุผลใดบ้างที่ทำไมถึงเปิดใช้งานโดยปริยาย ??
แก้ไข 20200706
อึยังคงดำเนินต่อไปในปี 2020: https://youtrack.jetbrains.com/issue/IDEA-245370