Я смею сказать, что есть некоторые крайние случаи, когда это может быть значительным, но они будут исчезающе редкими. Я согласен с вами: сначала пишите для удобства чтения.
Обратите внимание, что если метод очень короткий, JIT-компилятор может встроить его - но если это большой метод, из которого вам просто случается для быстрого выхода, он, вероятно, победит ' т. В крайних случаях вы можете разделить метод на два: один короткий метод (который может быть встроен), чтобы проверить, является ли остальной метод правильным, и один, чтобы фактически выполнить работу. Затем вы можете сначала выполнить тест, а затем вызвать второй метод. Честно говоря, мне это не очень нравится, и я бы только предложил сделать это после того, как обнаружил, что это действительно проблема ... но, по крайней мере, у вас есть предложение для ваших коллег на случай, когда это действительно было показано, что это проблема:)
Одна вещь, о которой вы можете захотите подумать как причина, чтобы избежать вызовов методов, - это если оценка аргументов занимает много времени. Например, рассмотрим ведение журнала:
Log.Info("I did something: {0}", action.GenerateDescription());
Теперь, если GenerateDescription
занимает много времени, вы не захотите его выполнять, если ведение журнала в любом случае не произойдет ... поэтому вы можете написать:
if (Log.IsEnabled(LogLevel.Info))
{
Log.Info("I did something: {0}", action.GenerateDescription());
}
Другой альтернативой является использование делегата для отсрочки оценки - хотя это может иметь свои (небольшие) затраты:
Log.Info("I did something: {0}", () => action.GenerateDescription());
или используя метод преобразования gruop:
Log.Info("I did something: {0}", action.GenerateDescription);
Возможно, это не та проблема, о которой беспокоятся ваши коллеги, но о ней стоит подумать:)