Java:
রিফ্যাক্টরিং
কিভাবে:
চলুন আমরা একটি সহজ Java ক্লাস নিই যে তার খারাপ আয়োজন এবং স্পষ্টতার অভাবের জন্য রিফ্যাক্টরিংয়ের জন্য চিৎকার করছে।
public class Calculator {
public int calc(int op1, int op2, String operation) {
if (operation.equals("add")) {
return op1 + op2;
} else if (operation.equals("subtract")) {
return op1 - op2;
} // অন্যান্য অপারেশন...
}
}
রিফ্যাক্টরিং এর পরে, আমরা পেলাম:
public class Calculator {
public int add(int operand1, int operand2) {
return operand1 + operand2;
}
public int subtract(int operand1, int operand2) {
return operand1 - operand2;
}
// অন্যান্য অপারেশন...
}
রিফ্যাক্টরিং এর মাধ্যমে, আমরা পঠনযোগ্যতার জন্য পদ্ধতির নাম এবং প্যারামিটারগুলি উন্নত করেছি এবং একটি একক পদ্ধতিতে একটি শাখা-নির্ভর শর্ত থেকে এড়িয়ে গেছি। প্রতিটি অপারেশন এখন তার উদ্দেশ্য স্পষ্টভাবে উল্লেখ করে।
গভীর ডুব:
রিফ্যাক্টরিং তার উৎস স্মলটক কমিউনিটিতে পেয়েছে, যার মূল মনোযোগ কোড পঠনযোগ্যতা এবং অবজেক্ট-ওরিয়েন্টেড ডিজাইনে ছিল, কিন্তু এটি সত্যিকার অর্থে Java জগতে ৯০-এর দশকের শেষ এবং ০০-এর দশকের শুরুতে, বিশেষ করে Martin Fowler-এর গুরুত্বপূর্ণ বই “Refactoring: Improving the Design of Existing Code” প্রকাশনার পরে উৎকর্ষ সাধিত হয়েছে।
কোড নতুন করে লেখার মতো রিফ্যাক্টরিং এর বিকল্প আছে। তবে, রিফ্যাক্টরিং প্রায়শই পছন্দ করা হয় কারণ এটি ক্রমিক পরিবর্তন জড়িত যা অ্যাপ্লিকেশনের কার্যকারিতাকে বিঘ্নিত করে না।
Java (অথবা যেকোনো প্রোগ্রামিং ভাষা) এ রিফ্যাক্টরিং করার সময় বাস্তবায়নের বিস্তারিত হল কোডের গন্ধ—কোডে গভীর সমস্যার নির্দেশকদের—বোঝা। কিছু গন্ধের মধ্যে রয়েছে দীর্ঘ পদ্ধতি, বড় ক্লাস, ডুপ্লিকেট কোড, এবং প্রিমিটিভের অতিরিক্ত ব্যবহার। Extract Method, Move Method, অথবা Replace Temp with Query এর মতো রিফ্যাক্টরিং প্যাটার্ন প্রয়োগ করে, ডেভেলোপাররা এই গন্ধগুলি সিস্টেমেটিকভাবে ঠিকানা দেয়, সর্বদা কোডকে ফাংশনাল রাখার নিশ্চয়তা দেয়।
IntelliJ IDEA-র রিফ্যাক্টরিং সাপোর্টের মতো অটোমেটেড টুল অথবা Eclipse-র প্লাগিনগুলি প্রক্রিয়াটি সাহায্য করতে পারে, যা ভেরিয়েবল, মেথড এবং ক্লাসের নাম পরিবর্তন, মেথড অথবা ভেরিয়েবল বের করে আনা, এবং মেথড অথবা ক্লাসকে বিভিন্ন প্যাকেজ বা নামস্থানে সরানোর মতো রিফ্যাক্টরিং অটোমেট করে।
দেখুন এছাড়া:
- Martin Fowler এর “Refactoring: Improving the Design of Existing Code”: https://martinfowler.com/books/refacto