وقتی کد شما راه خود را از دست می دهد
TL ؛ DR: اظهارات بازگشت از دست رفته باعث رفتار غیر منتظره می شود.
مشکلات
- شکست های خاموش
- نتایج غیرقابل اعتماد
- اشکال زدایی سخت
- رفتار متناقض و گمراه کننده
- منطق شکسته
راه حل ها
- همیشه مقادیر را برگردانید
- از جریان روشن استفاده کنید
- شرایط معتبر
- تمام مسیرهای بازگشت را آزمایش کنید
- از بازده های اولیه استفاده کنید
- IFS را حذف کنید
refactorings ⚙
متن
وقتی فراموش می کنید یک مقدار را برگردانید ، عملکرد شما همچنان اجرا می شود و برنامه شما ممکن است اطلاعات ناقص یا نادرست را نشان دهد.
کد نمونه
اشتباه
fun totalDistance(activity: Activity): Double {
if (activity.type == "Running") {
activity.calculateDistance()
// Missing return here
} else {
return 0.0
}
// Other options are omitted for simplicity
// Some languages raise a runtime error
// If the function does not return a value
// of the correct type (in this case a Double)
}
درست
fun totalDistance(activity: Activity): Double {
if (activity.type == "Running") {
return activity.calculateDistance()
// Now it returns the value
} else {
return 0.0
}
}
تشخیص
- [x]خودکار
وقتی عملکرد شما فاقد بیانیه بازگشت در شاخه های خاص است ، می توانید این بو را تشخیص دهید.
بیشتر آنالیزورها و خطوط استاتیک اغلب این موضوع را می گیرند.