Меньше строк кода не всегда лучше

Я отлаживал этот метод на днях:

Вот некоторые проблемы, которые я обнаружил с этим одним вкладышем:

Просмотр возвращаемого значения неудобен

Вместо того, чтобы просто навести указатель мыши на переменную, мне пришлось выделить все после return и добавить в окно просмотра.

Обновление возвращаемого значения во время тестирования невозможно

Поскольку IdMap.Contains<Deposit>(dto.DepositID) не является переменной, я не мог обновить возвращаемое значение в окне Immediate Visual Studio, как мне иногда приходится делать.

Облегчите жизнь другим разработчикам и свою жизнь, используя две строчки!

Если бы код был написан так, его было бы НАМНОГО проще отлаживать:

Сводка комментариев с Reddit

Я обсуждал эту тему на Reddit, и большинство людей были против.

Вот краткое изложение их пунктов и моих ответов:

Вы можете использовать окно Autos для просмотра значений, возвращаемых функцией.

Вы также можете сделать это с помощью переменной. Имея переменную, вы предоставляете разработчикам возможность навести курсор на переменную, чтобы просмотреть значение, если они этого хотят.

Окно autos может быть заполнено другими переменными, которые вам не нужны. Необходимость просеивать или прокручивать, чтобы найти вашу переменную, не идеальна.

Вы можете подождать, пока метод вернется

Метод возвращается, и вы можете затем навести указатель мыши на переменную, в которую было захвачено возвращаемое значение. Но что, если вы хотите найти значение сразу после его вычисления? Что, если возвращаемое значение не фиксируется в переменной, а используется в операторе if? Что делать, если возвращаемое значение одного метода возвращается вызывающим методом, вплоть до метода действия, и в этом случае у вас никогда не будет возможности просмотреть/обновить результат.

Вы можете выделить один лайнер и добавить часы

Это больше работы, чем просто наведение курсора на переменную. Кроме того, это может иметь нежелательные побочные эффекты, поскольку это включает в себя выполнение одного вкладыша каждый раз, когда вы добавляете часы.

Вы можете использовать модульное тестирование или жестко закодировать значение для проверки различных возвращаемых значений.

Это требует больших усилий, особенно когда нет смысла тестировать метод (а что, если это приватный метод?). Что, если вы находитесь в середине отладки работающего приложения, вам потребовалось пять минут, чтобы добраться до строки, в которой вы сейчас находитесь, и вы хотите протестировать другое возвращаемое значение только для того, чтобы обнаружить, что вам нужно остановить программу, отредактировать код, чтобы жестко закодировать новое значение, или написать модульный тест? Это не идеально. Модульное тестирование также не позволяет вам просматривать результат различных значений переменных в результирующем пользовательском интерфейсе.

Резюме

Захват возвращаемого значения в переменную не способствует удобочитаемости, потому что имя метода уже должно сказать вам, что будет возвращено. Однако читабельности это не снижает.

На мой взгляд, преимущество наличия двух строк (их легче отлаживать) намного перевешивает незначительный минус (наличие одной небольшой дополнительной строки).