El exceso de código es la producción de código que se percibe como innecesariamente largo, lento o que desperdicia recursos. Es un problema en el desarrollo de software que hace que la longitud del código del software sea innecesariamente larga. Entonces, para escribir el código de calidad, siempre evitamos que el código se hinche en nuestro programa.
Las siguientes son algunas de las razones del código hinchado :
- Encabezados: supongamos que hemos declarado algunas funciones en el archivo de encabezado como se muestra a continuación:
#include <vector>
// Function to find the sum of elements
// in a vector
inline
int
findSum(vector<
int
>& arr,
int
N)
{
int
sum = 0;
for
(
int
i = 0; i < N; i++) {
sum += arr[i];
}
return
sum;
}
struct
GfG {
// Declare vector arr
std::vector<
int
> arr;
// Function
int
execute()
const
{
return
findSum(arr, arr.size());
}
};
En el archivo de encabezado anterior, ambas funciones, execute() y findSum(), se compilan cada vez que usamos el archivo de encabezado anterior en cualquier código fuente por separado. Si incluimos cualquier archivo de encabezado y no usamos ninguna de las funciones de ese encabezado, aún compilará la funcionalidad y todas las demás características de los archivos de encabezado cada vez que ralentiza el tiempo de compilación de cada software. Cuando el proyecto es grande, contiene cientos de archivos fuente y cada función definida en el encabezado compilada cientos de veces. Esta práctica de escribir código para el desarrollo de software da como resultado una inflación de código, es decir, una declaración innecesaria de funcionalidad.
- Plantillas: en C++ tenemos plantillas
integradas para funciones y contenedores . Las plantillas son la forma generalizada de funcionalidad con diferentes tipos de datos. Cada instancia de una plantilla es una pieza de código completamente separada generada por el compilador. Considere a continuación un ejemplo de plantillas:template
<
class
T>
T findSum(
const
T* arr,
int
num)
{
return
accumulate(arr, arr + num, T(0));
}
template
<
class
T,
int
N>
struct
GfG {
T arr[N];
T run()
const
{
T res = 0;
for
(
int
i = 0; i < N; i++)
res += arr[i];
return
res;
}
};
En la función de plantilla anterior, findSum() se compila una vez por cada tipo de parámetro de plantilla utilizado T .
La función en GfG::run() se compila tantas veces como pares diferentes haya para llamar al método run() . Esta función puede tomar más tiempo para cambiar los valores de N. Existen diversas técnicas para superar este problema. El problema con los encabezados también se aplica a las plantillas, porque las plantillas casi siempre se definen en los archivos de encabezado.Hay dos formas de superar este problema:
- Defina funciones de plantilla en el archivo fuente y ejecútelas explícitamente.
- Use declaraciones de plantillas externas en el encabezado, combinadas con instancias de plantillas explícitas en los propios archivos de origen.
Programa:
#include <iostream> using namespace std; // Driver Code int main() { // Code Bloating string str("GeeksForGeeks"); // Print string str cout << str << endl; return 0; }
GeeksForGeeks
El programa anterior funcionará perfectamente e imprimirá GeeksForGeeks . Pero hay un problema de código hinchado en el programa anterior en la primera línea de la función principal. La agenda del programa anterior es imprimir la string GeeksForGeeks , entonces, ¿por qué estamos creando un objeto de clase de string como resultado de la creación de un objeto de clase de string?
Simplemente podríamos escribir
cout << "GeeksForGeeks" << endl;
Efectos de la hinchazón del código:
- Crea objetos de algunas clases innecesariamente que pueden hacer que nuestro software sea lento en ejecución.
- Es un problema en el desarrollo de software que hizo que la longitud del código del software fuera innecesariamente larga.
Publicación traducida automáticamente
Artículo escrito por Yogesh Shukla 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA