Достаточно короткий, чтобы быть правильно оптимизированным
Методы должны быть настолько короткими, чтобы делать ровно одну вещь. Причина этого проста: ваш код может быть должным образом оптимизирован.
В языке JIT-ted, таком как Java или C #, важно, чтобы ваши методы были простыми, чтобы JIT-компилятор мог быстро создавать код. Более длинные, более сложные методы, естественно, требуют больше времени JIT. Кроме того, JIT-компиляторы предлагают только несколько оптимизаций, и от этого выигрывают только самые простые методы. Этот факт был даже назван в Эффективном C # Билла Вагнера .
В языке более низкого уровня, таком как C или C ++, наличие коротких методов (может быть, дюжина или около того строк) также важно, потому что таким образом вы минимизируете необходимость хранения локальных переменных в оперативной памяти, а не в регистре. (Также известный как «Регистрация разливов».) Обратите внимание, что в этом неуправляемом случае относительная стоимость каждого вызова функции может быть довольно высокой.
И даже в динамическом языке, таком как Ruby или Python, наличие коротких методов также помогает в оптимизации компилятора. В динамическом языке, чем более «динамична» функция, тем сложнее ее оптимизировать. Например, длинный метод, который принимает X и может вернуть Int, Float или String, вероятно, будет работать намного медленнее, чем три отдельных метода, каждый из которых возвращает только один тип. Это связано с тем, что, если компилятор точно знает, какой тип будет возвращать функция, он также может оптимизировать сайт вызова функции. (Например, не проверка на преобразование типов.)