Я подумал об этом: есть ли разница в производительности в этих двух практиках:
- Сохранять возвращаемое значение функции во временной переменной, чем укажите эту переменную как параметр для другой функции.
 - Поместите функцию в другую функцию.
 
Спецификация
Предположим, что все классы и функции написаны правильно.
Случай 1.
ClassA a = function1();
ClassB b = function2(a);
function3(b);
Случай 2.
function3(function2(function1()));
Я знаю, что нет большой разницы только с одним прогоном, но предположил, что мы могли бы запускать это много раз в цикле, я создал несколько тестов.
Test
#include <iostream>
#include <ctime>
#include <math.h>
using namespace std;
int main()
{
   clock_t start = clock();
   clock_t ends = clock();
   // Case 1.
   start = clock();
   for (int i=0; i<10000000; i++)
   {
      double a = cos(1);
      double b = pow(a, 2);
      sqrt(b);
   }
   ends = clock();
   cout << (double) (ends - start) / CLOCKS_PER_SEC << endl;
   // Case 2.
   start = clock();
   for (int i=0; i<10000000; i++)
      sqrt(pow(cos(1),2));
   ends = clock();
   cout << (double) (ends - start) / CLOCKS_PER_SEC << endl;
   return 0;
}
Результаты
- Случай 1 = 6.375
 - Случай 2 = 0,031
 
Почему первый из них намного медленнее, а если второй быстрее, почему мы никогда не пишем код таким образом? Во всяком случае, вторая пратица имеет имя? 
Я также задавался вопросом, что произойдет, если я создам переменные за пределами цикла for в первом случае, но результат был таким же. Почему?