Bash:
রিফ্যাক্টরিং
কিভাবে:
চলুন একটি সাধারণ ব্যাশ স্ক্রিপ্ট দেখি যেটি কিছু রিফ্যাক্টরিং প্রয়োজন। এটি বেঢপ, পুনরাবৃত্ত কোডের সাথে এবং অনুসরণ করা কঠিন:
#!/bin/bash
echo "একটি ফাইলের নাম দিন:"
read filename
if [ -f "$filename" ]; then
echo "ফাইল বিদ্যমান।"
count=$(grep -c "foo" "$filename")
echo "শব্দ foo $count বার প্রদর্শিত হয়েছে।"
else
echo "ফাইল বিদ্যমান নেই।"
fi
স্পষ্টতা এবং পুনর্ব্যবহারযোগ্যতা বৃদ্ধির জন্য রিফ্যাক্টরিং করা হতে পারে ফাংশন প্রবর্তন এবং ত্রুটিগুলি আরও সুন্দরভাবে সম্ভাল করা:
#!/bin/bash
function file_exists() {
[[ -f "$1" ]]
}
function count_occurrences() {
grep -c "$1" "$2"
}
function main() {
local filename word count
echo "একটি ফাইলের নাম দিন:"
read -r filename
echo "অনুসন্ধান করার জন্য শব্দ দিন:"
read -r word
if file_exists "$filename"; then
count=$(count_occurrences "$word" "$filename")
echo "শব্দ $word $count বার প্রদর্শিত হয়েছে।"
else
echo "ফাইল বিদ্যমান নেই।" >&2
exit 1
fi
}
main "$@"
রিফ্যাক্টর করা সংস্করণ পাঠযোগ্যতা উন্নতি এবং সম্ভাব্য পুনর্ব্যবহার সক্ষম করে তোলে ফাংশন ব্যবহার করে।
গভীর ডাইভ:
রিফ্যাক্টরিং কোনো ধারণা নয় যা ব্যাশ বা এমনকি উচ্চ স্তরের প্রোগ্রামিং ভাষাগুলির সাথে শুরু হয়েছে; এটি প্রোগ্রামিং যতদিনের, ততদিনের। মার্টিন ফাউলারের “রিফ্যাক্টরিং: বিদ্যমান কোডের ডিজাইন উন্নতি” বইতে 1999 সালে এই পরিভাষাটি আনুষ্ঠানিক করা হয়েছিল, মূলত অবজেক্ট-ওরিয়েন্টেড ভাষাগুলিতে মনোনিবেশ করে।
ব্যাশ স্ক্রিপ্টিং প্রসঙ্গে, রিফ্যাক্টরিং প্রায়ই দীর্ঘ স্ক্রিপ্টগুলিকে ফাংশনে ভাগ করা, লুপ বা শর্তাবলীগুলি দিয়ে পুনরাবৃত্তি হ্রাস এবং ফাইলের নামে স্পেস সামলানোর মতো সাধারণ ফাঁদ এড়ানোয় অর্থ বহন করে। ব্যাশের জন্য বিকল্প যেগুলি অত্যন্ত জটিল হয়ে ওঠে তারা হল পাইথন বা পার্ল, যা জটিল কাজের জন্য উন্নত ডেটা কাঠামো এবং ত্রুটি হ্যান্ডলিং অফার করে।
ব্যাশ-নির্দিষ্ট রিফ্যাক্টরিং আরও বেশি সেরা অনুশীলনের প্রতি অনুগামী হওয়া, যেমন চলকগুলি উদ্ধৃত করা, পরীক্ষার জন্য [[ ]]
ব্যবহার করা [ ]
এর উপরে এবং রোবাস্ট আউটপুটের জন্য echo
এর উপরে printf
পছন্দ করা। বাস্তবায়নের বিবরণগুলি প্রায়ই শৈলী নির্দেশিকা মেনে চলা এবং সাধারণ ভুলগুলি ধরার জন্য shellcheck
এর মতো টুলগুলি ব্যবহার করা সম্পর্কে।