Il codice elencato di seguito ha lo scopo di calcolare alcuni dati di rotazione che verranno successivamente utilizzati nel mio codice di rendering.
renderer.cpp:
rendered_image renderer::common_tasks(render_info const& info) {
//info.radius is a float, info.min_image_size is an int calculated by taking the minimum
//of info.image_width and info.image_height
cl_float raw_delta = 2.f * info.radius / info.min_image_size;
//cl_float4 is functionally a wrapper around float[4].
//info.rotation is a float value representing the rotation in degrees
cl_float4 final_deltas{
cos(to_radians(info.rotation)) * raw_delta,
sin(to_radians(info.rotation)) * raw_delta,
-sin(to_radians(info.rotation)) * raw_delta,
cos(to_radians(info.rotation)) * raw_delta
};
//Other, irrelevant code
/*...*/
}
Ma ovviamente volevo ripulire un po 'il codice, quindi l'ho riscritto in questo modo:
renderer.cpp:
cl_float4 get_deltas(render_info const& info) {
//info.radius is a float, info.min_image_size is an int calculated by taking the minimum
//of info.image_width and info.image_height
cl_float raw_delta = 2.f * info.radius / info.min_image_size;
//cl_float4 is functionally a wrapper around float[4].
//info.rotation is a float value representing the rotation in degrees
cl_float4 final_deltas{
cos(to_radians(info.rotation)) * raw_delta,
sin(to_radians(info.rotation)) * raw_delta,
-sin(to_radians(info.rotation)) * raw_delta,
cos(to_radians(info.rotation)) * raw_delta
};
return final_deltas;
}
rendered_image renderer::common_tasks(render_info const& info) {
cl_float4 final_deltas = get_deltas(info);
//Other, irrelevant code
/*...*/
}
Ora, tuttavia, ho una funzione dichiarata globalmente get_deltas
che esiste solo in questo file .cpp. Così com'è, questo codice viene compilato e eseguito normalmente, ma ci sono dei rischi significativi per scrivere codice come questo? Dovrei annidare la funzione in un namespace o dichiararla privata nella classe renderer
? So per certo che non avrò mai bisogno di usare get_deltas
in nessun altro posto nel mio codice: questo cambia se questo è un uso buono o cattivo di questo stile di codice?