Өзінің қателерін анықтайтын код?

Келесі код үзіндісін қарастырыңыз:

int index = FindClosestIndex(frame);
if (_data[index].Frame == frame)
    return _data[index];
else
    return interpolateData(frame, _data[index - 1], _data[index]);

Енді, бұл жағдайда FindClosestIndex() ешқашан 0-ге қайтарылмайтынына көз жеткізу үшін осы код блогы алдында бірнеше тексеру жасадым. Бұл мүмкін болмауы керек. Алайда, FindClosestIndex жүйесіндегі логика бірнеше күрделі болып табылады, сондықтан кейбір қате бұрыштарда ешкім күтпеген қателер табылған болуы мүмкін және менің код дұрыс болса да, FindClosestIndex 0 қате қайтарылуы мүмкін.

0 қайтарылса, _data [index - 1] операторында ArgumentOutOfRangeException аламын. Мен бұл ерекшеліктің көпіршігін көтере аламын, бірақ мен мұны орындағым келеді:

if (index == 0)
    throw new ApplicationLogicException("There is a bug that caused FindClosestIndex to return an int <= 0 when it shouldn't have.");

Егер сіздің кодыңызда қате күйін анықтайтын болса, тапсырыс берушінің ерекше жағдайын тастаудың бұл тәжірибесін ұсынасыз ба? Сізде мұндай жағдай болғанда не істейсіз?

1

1 жауаптар

Мен өзімшілдікке ұқсас қоспаларды енгіземін. Бұл презерватив аргументіне ұқсайды: оны қажет ететін және оны қажет етпегеннен гөрі, қажет емес. Егер ол сирек кездесетін жағдайда, соның ішінде, ерекше жағдайды қоспағанда, логикалық қатені бақылауды жеңілдетеді, бірақ орындалатын файлыңыз кішкене ғана үлкенірек. Олай болмаған жағдайда, ArgumentOutOfRangeException кез келген жерде болуы мүмкін. Ерекшені қосу үшін қажетті уақыт қателікті онсыз қадағалап отыратын уақытты асып түседі.

1
қосылды