أساليب التعامل مع عبارة return في الدوال [تختلف بإختلاف المبرمجين]

إنّ لك كمبرمج أسلوبك الخاص في التعبير عن منطقك وأفكارك، كما لك أسلوبك الخاص أيضاً في طريقة كتابة شفراتك البرمجية.

كما تعلم فإن الدوال التي تُعيد قيمة إلى مُناديها تنتهي بعبارة return واحدة على الأقل. وعدم وجود عبارة return يؤدي إلى خطأ في ترجمة البرنامج.

وعندما تكُون الدالة معقدة بنسبة متوسطة، وخاصةً الدوال التي تتكون من عدة شروط if/else أو بغيرها من العبارات الشرطية فإنك ستحاول أن تضع عبارة return لكل حالة من الحالات المنطقية، أو فلنقل لكل سيناريو أو مسار محتمل لتنفيذ الدالة.

مثلاً في الشفرة البرمجية التالية سببُ الخطأ هو عدم وجود عبارة return في حالة else

    static int returnValue(){
        int x = 1;
        if(x>0){
            return x;
        }else{
            x++;
        }
    }

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

أسلوبان للمبرمجين مع عبارة return

يندرجُ أسلوبك في التعامل مع عبارة return تحت أحد أسلوبين، اكتشف نفسك ?

  1. أسلوب الكرم: عبارات return متعددة.
  2. أسلوب الدقة: عبارة return واحدة.

(1) أسلوب الكرم في عبارات return:

في هذا الأسلوب يلجأ المبرمج إلى كتابة عبارة return لكل سيناريو منطقي قد يمر به البرنامج.

هذه الشفرة البرمجية مثالٌ على ذلك:

    static int returnValue(){
        int x = 1;
        if(x>0){
            x++;
            return x;
        }else{
            x--;
            return x;
        }
    }

(2) أسلوب الدقة في عبارات return:

أما هذا الأسلوب فيتميز به الدقيقون عادةً، حيث يكتبون عبارة return واحدة تكون في نهاية الدالة. وبدلاً عن كتابة عبارة return لكل سيناريو فإنه يحتفظ بالقيمة التي يجب إرجاعها في متغيّر، وبنهاية الدالة يعيد المتغير عبر return.

وبالمثال يتضح المقال:

    static int returnValue(){
        int x = 1,returnValue;
        if(x>0){
            x++;
            returnValue = x;
        }else{
            x--;
            returnValue = x;
        }
        return returnValue;
    }

ما هو الأسلوب الصحيح للتعامل مع عبارة return؟

غالباً ما تكونُ قد جرّبت كلا الطريقتين، أليس كذلك؟ هل فكّرت في معيارٍ أو سببٍ محدد لاستخدام إحدى الطريقتين؟

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

أما أسلوبُ الدقّة فيكون عند العمل على شفرة برمجيّة تحتاجُ إلى دقّة وهي الطريقة التي أفضّل اتباعها. حيثُ أكتبُ الشفرة البرمجية بطريقة هرمية عبر كتابة الهيكل العام ثم ملئ الفراغات.

أضف إلى ذلك:

حاولتُ أن أجد معياراً عالمياً موصى به لاستخدام عبارات return لكن لم أجد، ولكن وفق التجربة فإنني أجدُ في طريقة الدقة مزايا مهمة جداً للمبرمج ولجودة برامجه:

  • استخدام طريقة الدقة يوفر قابلية التحكم في المتغير قبل إرجاعه، أي أنك في نهاية الدالة تستطيع مثلاً تغيير نوع بيانات المتغير عبر سطرٍ واحد ثم إعادته. على عكس الحالة الأخرى التي تحتاج إلى أسطرٍ متعددة.
  • أسهل في اختبار الدالة والتأكد من القيمة المرجعة.
  • أسهل في عملية التحليل، فإذا احتجتُ إلى قراءة شفرة برمجية كتبها غيري فإنني أتمنى أن يكون اتبع أسلوب الدقة لا الكرم.

لا يفوتني أن أذكر لك أن هذا رأيي الشخصي وأسلوبي في العمل البرمجي، أما بالنسبة لك:

ما هو أسلوبك الشخصي في التعامل مع عبارة return ؟

وهل ستُغيّر أسلوبك أم ستستمر على ما كنت عليه؟

مصطفى الطيب

صديقٌ لنُظمِ المعلُومات و عُلومِ الحَاسِب و مُختصٌ بهما، مُحبٌ للعِلمِ و نَشرِه. أُشاركُ معارفي و تَجاربي و خِبراتي في تَدويناتٍ و دوراتٍ من خلال مُدونةِ عُلوم.

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

‫8 تعليقات

    1. فعلاً مازن، أسلوبُ الدقّة يوفّر مميزات مقابل مجهود وتركيز أكبر. ورُبّما مساحة ذاكرة أكبر كذلك.. وقد يصل الأمر إلى أداء أقل أيضاً…

      الأمر يحتاجُ إلى موازنة وفق الدالة المستخدمة،،، رغم بساطة الإستخدام لكنه يحتاج إلى إهتمام المبرمجين.

  1. انا افضل دئماً في عملي اسلوب الدقة لانه يتيح لي ضبظ القيمة التي يتم ارجاعه بسهولة ومرونة اكثر ايضا يمكن حقيقة ي ما قلت من اختبار الكود بسهولة اكثر فقظ انا افضل استخدام اسلوب الكرم في حالة اذا كانت الدالة يتم استخدام في الاستدعاء الذاتي ……… شكرا اخي على مقالك …….

    1. ذكرتَ نُقطة مهمة جداً أخي حسن، وهي الإستدعاء الذاتي، هنا لا بُد من إستخدام أسلوب الكرم غصباً.

      من زاوية أخرى قد نعتبر أن استخدام عبارتي return فقط هو أسلوب الدقة في دوال الإستدعاء الذاتي، وما زاد عن ذلك يُعتبر أسلوب الكرم.

      شكراً لك حسن على مشاركتك الرائعة ?

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *