البرمجة

تحسين برنامج تحويل الحرارة في C++

من المعلوم أن لغة البرمجة ++C توفر للمطورين إمكانيات واسعة لكتابة الأكواد بأساليب متنوعة، وتعتبر البرامج التي تقوم بتحويل الدرجات الحرارية من بين التطبيقات الأساسية التي يمارس عليها البرمجين لتطوير مهاراتهم في استخدام الكلاسات (Classes) والفانكشنز (Functions). عليه، يمكن النظر إلى الكود المقدم على أنه محاولة لتطبيق هذه المفاهيم. ومع ذلك، فإن هناك مجالاً واسعاً للتحسين سواء من ناحية تنظيم الكود، كفاءته، أو حتى قابليته للتوسع في المستقبل. فيما يلي، سأقوم بمراجعة الكود المقدم واقتراح بعض التحسينات التي من شأنها رفع مستواه.

تحسين تعريف الكلاس والفانكشنز

في البداية، نلاحظ أن الكلاس convert يحتوي على فانكشنين تقومان بتحويل درجات الحرارة من سيلزيوس إلى فهرنهايت والعكس. يمكن تحسين هذا التصميم بجعل الفانكشنز static لأنه لا حاجة لإنشاء كائن من الكلاس لاستدعاء هذه الفانكشنات، نظراً لأنها لا تعتمد على أي من متغيرات الكائن نفسه.

cpp
class Convert { public: static float cToF(float celsius) { return celsius * 9 / 5 + 32; } static float fToC(float fahrenheit) { return (fahrenheit - 32) * 5 / 9; } };

تحسين القراءة والطباعة في البرنامج

التعامل مع المدخلات والمخرجات يمكن أن يتم بشكل أفضل خارج الكلاس Convert. هذا يساعد على فصل المنطق (تحويل درجات الحرارة) عن واجهة المستخدم (التعامل مع المدخلات والمخرجات). فصل المسؤوليات يجعل الكود أسهل للفهم والصيانة.

تحسين المعالجة في دالة main

يمكن تحسين المعالجة في دالة main بعدة طرق. أولاً، يفضل استخدام float أو double بدلاً من int للتعامل مع درجات الحرارة، نظراً لأن درجات الحرارة يمكن أن تكون عشرية. ثانياً، يمكن تحسين التفاعل مع المستخدم بجعل الرسائل أكثر وضوحاً واستخدام خيارات للتكرار أو الخروج من البرنامج.

مثال على الكود المحسن

إليكم مثال على كيفية تنظيم الكود بشكل أفضل:

cpp
#include #include class Convert { public: static float cToF(float celsius) { return celsius * 9 / 5 + 32; } static float fToC(float fahrenheit) { return (fahrenheit - 32) * 5 / 9; } }; void printWelcomeMessage() { std::cout << "__________Temp Converter__________\n"; std::cout << "Choose conversion:\n" << "1. Celsius to Fahrenheit (c)\n" << "2. Fahrenheit to Celsius (f)\n" << "3. Exit (e)\n"; } char getConversionChoice() { std::cout << "Enter your choice (c/f/e): "; char choice; std

المزيد من المعلومات

من المعلوم أن لغة البرمجة ++C توفر للمطورين إمكانيات واسعة لكتابة الأكواد بأساليب متنوعة، وتعتبر البرامج التي تقوم بتحويل الدرجات الحرارية من بين التطبيقات الأساسية التي يمارس عليها البرمجين لتطوير مهاراتهم في استخدام الكلاسات (Classes) والفانكشنز (Functions). عليه، يمكن النظر إلى الكود المقدم على أنه محاولة لتطبيق هذه المفاهيم. ومع ذلك، فإن هناك مجالاً واسعاً للتحسين سواء من ناحية تنظيم الكود، كفاءته، أو حتى قابليته للتوسع في المستقبل. فيما يلي، سأقوم بمراجعة الكود المقدم واقتراح بعض التحسينات التي من شأنها رفع مستواه.

تحسين تعريف الكلاس والفانكشنز

في البداية، نلاحظ أن الكلاس convert يحتوي على فانكشنين تقومان بتحويل درجات الحرارة من سيلزيوس إلى فهرنهايت والعكس. يمكن تحسين هذا التصميم بجعل الفانكشنز static لأنه لا حاجة لإنشاء كائن من الكلاس لاستدعاء هذه الفانكشنات، نظراً لأنها لا تعتمد على أي من متغيرات الكائن نفسه.

cpp
class Convert { public: static float cToF(float celsius) { return celsius * 9 / 5 + 32; } static float fToC(float fahrenheit) { return (fahrenheit - 32) * 5 / 9; } };

تحسين القراءة والطباعة في البرنامج

التعامل مع المدخلات والمخرجات يمكن أن يتم بشكل أفضل خارج الكلاس Convert. هذا يساعد على فصل المنطق (تحويل درجات الحرارة) عن واجهة المستخدم (التعامل مع المدخلات والمخرجات). فصل المسؤوليات يجعل الكود أسهل للفهم والصيانة.

تحسين المعالجة في دالة main

يمكن تحسين المعالجة في دالة main بعدة طرق. أولاً، يفضل استخدام float أو double بدلاً من int للتعامل مع درجات الحرارة، نظراً لأن درجات الحرارة يمكن أن تكون عشرية. ثانياً، يمكن تحسين التفاعل مع المستخدم بجعل الرسائل أكثر وضوحاً واستخدام خيارات للتكرار أو الخروج من البرنامج.

مثال على الكود المحسن

إليكم مثال على كيفية تنظيم الكود بشكل أفضل:

cpp
#include #include class Convert { public: static float cToF(float celsius) { return celsius * 9 / 5 + 32; } static float fToC(float fahrenheit) { return (fahrenheit - 32) * 5 / 9; } }; void printWelcomeMessage() { std::cout << "__________Temp Converter__________\n"; std::cout << "Choose conversion:\n" << "1. Celsius to Fahrenheit (c)\n" << "2. Fahrenheit to Celsius (f)\n" << "3. Exit (e)\n"; } char getConversionChoice() { std::cout << "Enter your choice (c/f/e): "; char choice; std::cin >> choice; return choice; } float getCelsiusInput() { std::cout << "Enter temperature in Celsius: "; float temp; std::cin >> temp; return temp; } float getFahrenheitInput() { std::cout << "Enter temperature in Fahrenheit: "; float temp; std::cin >> temp; return temp; } void performConversion(char choice) { switch (choice) { case 'c': { float celsius = getCelsiusInput(); float fahrenheit = Convert::cToF(celsius); std::cout << "Temperature in Fahrenheit: " << fahrenheit << std::endl; break; } case 'f': { float fahrenheit = getFahrenheitInput(); float celsius = Convert::fToC(fahrenheit); std::cout << "Temperature in Celsius: " << celsius << std::endl; break; } case 'e': std::cout << "Exiting program.\n"; exit(0); default: std::cout << "Invalid choice.\n"; } } int main() { printWelcomeMessage(); while (true) { char choice = getConversionChoice(); performConversion(choice); } return 0; }

في هذا الإصدار المحسن من البرنامج، تم تطبيق العديد من الممارسات الجيدة في البرمجة مثل مبدأ فصل المسؤوليات، استخدام الطرق الثابتة حيثما كان ذلك مناسباً، وتوفير تفاعل أفضل مع المستخدم. من خلال التركيز على هذه التحسينات، يمكن للمطورين ليس فقط تحسين الأداء العام للبرنامج ولكن أيضاً تعزيز قابليته للصيانة والتوسع في المستقبل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر