إنّ لك كمبرمج أسلوبك الخاص في التعبير عن منطقك وأفكارك، كما لك أسلوبك الخاص أيضاً في طريقة كتابة شفراتك البرمجية. كما تعلم فإن الدوال التي تُعيد قيمة إلى مُناديها تنتهي بعبارة return واحدة على الأقل. وعدم وجودها يؤدي إلى خطأ في ترجمة البرنامج.
وعندما تكُون الدالة معقدة بنسبة متوسطة، وخاصةً الدوال التي تتكون من عدة شروط if/else أو بغيرها من الجمل الشرطية فإنك ستحاول أن تضع عبارة return لكل حالة من الحالات المنطقية، أو فلنقل لكل سيناريو أو مسار محتمل لتنفيذ الدالة.
مثلاً في الشفرة البرمجية التالية سببُ الخطأ هو عدم وجودها في حالة else
static int returnValue(){ int x = 1; if(x>0){ return x; }else{ x++; } }
هذه أسطرٌ قليلة، ولكن في البرامج التي يكون منطقها أكثر تعقيداً، ويجب على المبرمج أن يضمن إعادة القيمة المناسبة لكل حالة تنقسم أساليب المُبرمجين إلى قسمين.
أسلوبان للمبرمجين مع عبارة return
يندرجُ أسلوبك في التعامل معها تحت أحد أسلوبين، اكتشف نفسك !
- أسلوب الكرم: عبارات return متعددة.
- أسلوب الدقة: عبارة return واحدة.
(1) أسلوب الكرم في عبارات return:
في هذا الأسلوب يلجأ المبرمج إلى كتابة عبارة return لكل سيناريو منطقي قد يمر به البرنامج.
هذه الشفرة البرمجية مثالٌ على ذلك:
static int returnValue(){ int x = 1; if(x>0){ x++; return x; }else{ x--; return x; } }
(2) أسلوب الدقة في عبارات return:
أما هذا الأسلوب فيتميز به الدقيقون عادةً، حيث يكتبونها مرة واحدة تكون في نهاية الدالة. وبدلاً عن كتابتها لكل سيناريو فإنه يحتفظ بالقيمة التي يجب إرجاعها في متغيّر، وبنهاية الدالة يعيد المتغير عبر return.
وبالمثال يتضح المقال:
static int returnValue(){ int x = 1,returnValue; if(x>0){ x++; returnValue = x; }else{ x--; returnValue = x; } return returnValue; }
ما هو الأسلوب الصحيح للتعامل مع عبارة return؟
غالباً ما تكونُ قد جرّبت كلا الطريقتين، أليس كذلك؟ هل فكّرت في معيارٍ أو سببٍ محدد لاستخدام إحدى الطريقتين؟
بالنسبة لي فبعد الملاحظة وجدتُ أنني عندما يكون وقتُ التسليم ضاغطاً وكتابة المنطق سريعة فإنني غالباً ما ألجأ إلى أسلوب الكرم، والسببُ في ذلك أن كتابة المنطق في هذه الحالة غالباً ما تكونُ تسلسلية لأنها تختصرُ الوقت رغم أنها أكثرُ قابليّة للخطأ.
أما أسلوبُ الدقّة فيكون عند العمل على شفرة برمجيّة تحتاجُ إلى دقّة وهي الطريقة التي أفضّل اتباعها. حيثُ أكتبُ الشفرة البرمجية بطريقة هرمية عبر كتابة الهيكل العام ثم ملئ الفراغات.
أضف إلى ذلك:
حاولتُ أن أجد معياراً عالمياً موصى به لاستخدامها لكن لم أجد، ولكن وفق التجربة فإنني أجدُ في طريقة الدقة مزايا مهمة جداً للمبرمج ولجودة برامجه:
[tie_list type=”checklist”]
- استخدام طريقة الدقة يوفر قابلية التحكم في المتغير قبل إرجاعه، أي أنك في نهاية الدالة تستطيع مثلاً تغيير نوع بيانات المتغير عبر سطرٍ واحد ثم إعادته. على عكس الحالة الأخرى التي تحتاج إلى أسطرٍ متعددة.
- أسهل في اختبار الدالة والتأكد من القيمة المرجعة.
- أسهل في عملية التحليل، فإذا احتجتُ إلى قراءة شفرة برمجية كتبها غيري فإنني أتمنى أن يكون اتبع أسلوب الدقة لا الكرم.
[/tie_list]
لا يفوتني أن أذكر لك أن هذا رأيي الشخصي وأسلوبي في العمل البرمجي، أما بالنسبة لك:
ما هو أسلوبك الشخصي في التعامل مع عبارة return ؟
وهل ستُغيّر أسلوبك أم ستستمر على ما كنت عليه؟
مقالات مفيدة لك:
مفاهيم 6 أساسية حتى تبدأ التعامل مع الدوال في جافا
كيف تؤدي double و float إلى خسارة حتمية أو أرباح زائفة
11 مشكلة متكررة في شفرة جافا تواجه المبتدئين وكيف تتغلب عليها
بصراحة شخصيا احب كتابتها بدقة او حتى وضعها في دالة خاريجية واضع بها باميتر اوبجكت واقوم باستدعائها، مارآيك انت بذلك؟
في الحقيقة لا أعلم إن كانت ستعمل كذلك، ولكن لو عملت فلكل شيخ طريقته
جزاك الله خيرا
وجزاكِ الجنة آمنة
انا افضل دئماً في عملي اسلوب الدقة لانه يتيح لي ضبظ القيمة التي يتم ارجاعه بسهولة ومرونة اكثر ايضا يمكن حقيقة ي ما قلت من اختبار الكود بسهولة اكثر فقظ انا افضل استخدام اسلوب الكرم في حالة اذا كانت الدالة يتم استخدام في الاستدعاء الذاتي ……… شكرا اخي على مقالك …….
ذكرتَ نُقطة مهمة جداً أخي حسن، وهي الإستدعاء الذاتي، هنا لا بُد من إستخدام أسلوب الكرم غصباً.
من زاوية أخرى قد نعتبر أن استخدام عبارتي return فقط هو أسلوب الدقة في دوال الإستدعاء الذاتي، وما زاد عن ذلك يُعتبر أسلوب الكرم.
شكراً لك حسن على مشاركتك الرائعة !
كنت استخدم اسلوب الكرم عادةً
اللي عجبني بأسلوب الدقة تعطي نفسك امكانيات اكثر للتحكم بالمتغير
فعلاً مازن، أسلوبُ الدقّة يوفّر مميزات مقابل مجهود وتركيز أكبر. ورُبّما مساحة ذاكرة أكبر كذلك.. وقد يصل الأمر إلى أداء أقل أيضاً…
الأمر يحتاجُ إلى موازنة وفق الدالة المستخدمة،،، رغم بساطة الإستخدام لكنه يحتاج إلى إهتمام المبرمجين.
أنا معجبة بك كثيرًا، وأدعو لك.
جزاك الله خيرًا لما تقدمه وما تفعل بإحسان.
♥️
شكراً على لطف حديثك الشيماء، مدونة علوم منكم وإليكم جُزيتِ الجنّة.