بوی کد 292 – بازگشت گمشده

وقتی کد شما راه خود را از دست می دهد

TL ؛ DR: اظهارات بازگشت از دست رفته باعث رفتار غیر منتظره می شود.

مشکلات

  • شکست های خاموش
  • نتایج غیرقابل اعتماد
  • اشکال زدایی سخت
  • رفتار متناقض و گمراه کننده
  • منطق شکسته

راه حل ها

  1. همیشه مقادیر را برگردانید
  2. از جریان روشن استفاده کنید
  3. شرایط معتبر
  4. تمام مسیرهای بازگشت را آزمایش کنید
  5. از بازده های اولیه استفاده کنید
  6. 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]خودکار

وقتی عملکرد شما فاقد بیانیه بازگشت در شاخه های خاص است ، می توانید این بو را تشخیص دهید.

بیشتر آنالیزورها و خطوط استاتیک اغلب این موضوع را می گیرند.

برچسب ها …

Source link