В нормальном мире они будут компилироваться в один и тот же байт-код, поэтому они идентичны с точки зрения производительности. Тогда единственное отличие для людей:
Создание временной переменной немного облегчает отладку: вы можете поставить точку останова в операторе возврата и проверить значение p
. В однострочной версии это сделать сложнее.
Выполнение в одну строку исключает переменную, снижает сложность, делает код немного легче для чтения.
На практике я написал бы это одной строкой, и в худшем случае я создал бы временную переменную, если столкнулся с проблемой отладки. Кроме того, не должны ли модульные тесты устранить необходимость в отладке? : -)