ইন্টেলিজ আইডিএ 13: আমি কীভাবে চুল্লি সম্পর্কিত মন্তব্য এবং স্ট্রিং অক্ষম করব?


89
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


4
ইন্টেলিজ আমার উপর চাপানো জিনিসগুলিতে পূর্ণ। অ্যান্ড্রয়েড যদি অন্য সম্পাদকদের সমর্থন করে তবে আমি একটি হার্টবিট স্যুইচ করব। কোডিংয়ে সময় ব্যয় করার পরিবর্তে আমি নিজেকে সম্পাদকের সাথে লড়াই করতে দেখছি। আমি জিনিসগুলি বন্ধ করার উপায় খুঁজতে চেষ্টা করে এখানে সময় ব্যয় করি। বেশিরভাগ সময়, তারা সমাধানের প্রস্তাব দেয় না। বেশিরভাগ সময় তারা বলছেন ... "আপনি এই বৈশিষ্ট্যটি ঘৃণা করেন কেন?"
টাটিওভারফ্লো

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

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

4
আজ, এটি একটি স্প্রিং এমভিসি পোস্ট ম্যাপিংয়ের পথে পরিবর্তন করেছে কারণ আমি ক্লাসটিকে অন্য একটি প্যাকেজে স্থানান্তরিত করেছি (!!!!!!!)
ইয়োমন

4
হ্যাঁ, এটি ইন্টিলিজের সবচেয়ে খারাপ বৈশিষ্ট্য। আমি যদি কোনও শ্রেণীর নাম পরিবর্তন করতে চাই তবে আমি পুরো প্রকল্পটি শেষ করতে পারি যেখানে class শ্রেণির নামটি স্ট্রিংয়ের সাথে দেখা দেয়। তাই আপনি যদি বর্গ নামান্তর Userকরতে MyUserএটা কনফিগ ফাইল, লেবেল, URL গুলি, বাকি কল ম্যাপিং পাথ ... সহ সবকিছু নামান্তর হবে
ACV

উত্তর:


100

আপনি যখন Shift + F6 (Refactor Rename)দুবার টিপেন, এটি ডায়ালগটি খুলবে এবং আপনি "মন্তব্য এবং স্ট্রিংগুলিতে অনুসন্ধান" অক্ষম করতে পারবেন


9
পরিষ্কার হওয়ার জন্য যে "রিফ্যাক্টর পুনর্নামকরণ" TWICE এর শর্টকাট সক্রিয় করছে। আপনার কীম্যাপিংয়ের উপর নির্ভর করে এটি আলাদা সংমিশ্রণ হতে পারে।
ক্রিস এরিকসন

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

4
তবে যেহেতু এটি সেটিংস স্মরণ করে, তাই আমি এতে কোনও সমস্যা দেখছি না। আপনার যা প্রয়োজন তার উপর নির্ভর করে আপনি সেই পুরো পাঠ্য রিফ্যাক্টরিংটি ব্যবহার করতে পারেন বা না।
মেও

4
দুর্ভাগ্যক্রমে, চেকবাক্সটি এখন এবং আবার প্রদর্শিত হবে বলে মনে হচ্ছে। কেউ কি এমন কোনও সেটিং সম্পর্কে জানেন যা এটি স্থায়ীভাবে বন্ধ করে দেবে? যেমন আগে বলা হয়েছে যে ইন্টেলিজ এখানে তার নিজের ভালোর জন্য খুব "স্মার্ট" ...
এর্ক

@ মেও এটি সর্বত্রই এটি সম্মান করে না। আজকাল জাভাস্ক্রিপ্টের ইনলাইন, ইনকোড পাঠ্য রিফ্যাক্টরিংটি ফাংশনে না হলেও কোডগুলিতে মান এবং মন্তব্যগুলি সংশোধন করছে।
মিমি

8

এবং এটি ডিফল্টরূপে চালু হওয়ার কোনও কারণ আছে কি ??

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

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

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

আপনি যদি এখনও নিশ্চিত না হন তবে @Meo এর পরামর্শ অনুসরণ করুন এবং স্ট্রিং এবং মন্তব্যে অনুসন্ধানটি অক্ষম করুন।


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

4
এটি ক্র্যামড ফোন নম্বরটি নামানোর চেষ্টা করার মতো। আপনি এই নম্বরটি পুনরাবৃত্তি করতে পারেন: 392314213343234295423442? আমার জন্য এটি একই ধরণের প্রচেষ্টা, এবং অবশ্যই অন্য অনেকের জন্য। আমি আশা করি ইন্টেলিজ ছেলেরা আমাদের এটিকে বন্ধ করার অপশন দেয়।
মিমি

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

4
একটি ভুল ক্লিক করে আমি সিম্ফনির কাঠামোটি মুছে ফেলব। আমাদের 'ডিফল্টরূপে বাদ দিতে' সক্ষম হওয়া উচিত।
নিকোলাস জোজল

4
শুধু এই মধ্যে দৌড়ে। একেবারে বিপজ্জনক ডিফল্ট থাকা এবং আমি বেশ কয়েকবার 'মান' এর মতো জিনিসের নাম পরিবর্তন করতে এবং কোনও প্রকল্পকে করতে পারে এমন মহাকাব্যিক ক্ষয়ক্ষতি এখনই লক্ষ্য না করে ভুল করেছি।
জিলিস ভ্যান গুরুপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.