?

Log in

No account? Create an account
Igor Sereda
Flow Control Considered Harmful 
19th-Jan-2009 03:53 am
Eye
Известно мнение, что плохой практикой является использование ключевых слов, прерывающих code flow — такие как break, continue или return в середине метода. (По сути, это специализированные goto.) Я лично так не считаю, но на днях я тут нашел багу, которая была внесена три года назад и присутствовала практически во всех версиях Дескзиллы, проявляясь довольно неявно, изредка и с плохими последствиями.

Суть баги: вместо if (...) continue стоит if (...) return. Представить далее как проявляется бага в методе не составляет труда. Скорее всего ошибка была внесена из-за невнимательности программиста. Возможно, этот кусок кода был сначала в отдельном методе, а потом был перенесен в тело цикла.

Будьте внимательны!
Comments 
19th-Jan-2009 06:18 am (UTC)
заешь, если continue с return перепутать, то это уже к практикам не относится, это надо хорошенько набраться и в бессознательном состоянии что то набирать на клаве ориентируясь только по флагам в IDEхе на тему - синтаксических ошибок не выявлено
19th-Jan-2009 09:09 am (UTC)
возможно такое получилось при выполнении inline method
19th-Jan-2009 08:45 am (UTC)
А я вот не понимаю чего плохого return в теле метода. Это всяко проще чем по всяким флажкам понять что вернет функция. Особенно когда речь идет о всякий проверках входных параметров или условий когда ничего не делать.
19th-Jan-2009 09:08 am (UTC)
Ну вот я же привел пример. :) Если код изначально написан без промежуточного return, его можно перенести в любое другое место без изменений.
This page was loaded Jun 25th 2019, 5:49 pm GMT.