Una función identidad es una función que devuelve el mismo valor que recibe por parámetro.

int f(int x)
{
    return x
}

En algunas circunstancias puede ser útil para mejorar la legibilidad del código, sobre todo si estamos haciendo refactoring y no pretendemos hacer grandes cambios.

Consideremos el siguiente caso. Imagina que tenemos una aplicación que realiza peticiones HTTP y mantiene estádisticas de número de peticiones satisfactorias, número de peticiones fallidas. En el código de test existe una función que se encarga de hacer esos chequeos:


inline void assert_http_statistics(HttpRequest& http_req, int num_success, int num_failures) {
    EXPECT_EQ(http_req.get_num_success_requests(), num_success);
    EXPECT_EQ(http_req.get_num_failures_request(), num_failures);
}

TEST(HttpRequestTest, check_http_requests_statistics) {
    HttpRequest http_req;
    //Success http request
    http_req.get("https://hardfloat.es");
    //Failed http request
    http_req.get("https://dsugerreasadasc.io");

    assert_http_statistics(http_req, 1, 1);
}

Al pasarle dos enteros a la función http_requests_statistics se pierde legibilidad porque es necesario consultar qué significan esos dos parámetros, si usamos funciones identidad veamos como queda.


int num_http_success_requests(int x) {
    return x;
}

int num_http_failed_requests(int x) {
    return x;
}

inline void assert_http_statistics(HttpRequest& http_req, int num_success, int num_failures) {
    EXPECT_EQ(http_req.get_num_success_requests(), num_success);
    EXPECT_EQ(http_req.get_num_failures_request(), num_failures);
}

TEST(HttpRequestTest, check_http_requests_statistics) {
    HttpRequest http_req;
    //Success http request
    http_req.get("https://hardfloat.es");
    //Failed http request
    http_req.get("https://dsugerreasadasc.io");

    assert_http_statistics(http_req, 
                           num_http_success_requests(1),
                           num_http_failed_requests(1));
}

Esta es una forma rápida de mejorar la legibilidad del código que no nos cuesta nada y a la larga lo agradeceremos.