Tengo un código que analiza algunos archivos de plantilla y cuando encuentra un marcador de posición, lo reemplaza con un valor. Algo así como:Reemplace la declaración de cambio gigante con qué?
<html>
<head>
<title>%title%</title>
</head>
<body bgcolor="%color%">
...etc.
En el código, el analizador encuentra aquellos, llama a esta función:
string getContent(const string& name)
{
if (name == "title")
return page->getTitle();
else if (name == "color")
return getBodyColor();
...etc.
}
y luego reemplaza el marcador de posición original con valor devuelto.
En el caso real, no es una página web ficticia, y hay muchos (50+) marcadores de posición diferentes que pueden ocurrir.
Mi código es C++, pero supongo que este problema existe en cualquier idioma. Se trata más de algoritmos y diseño OO, supongo. Lo único importante es que debe compilarse, incluso si quisiera no podría tener ningún código dinámico/evaluado.
Pensé en implementar el patrón de Cadena de responsabilidad, pero no parece que mejore la situación mucho.
ACTUALIZACIÓN: y también me preocupa this comment en otro hilo. ¿Debería importarme?
+1 Para aclarar, en C++ se llaman std :: map. – Eclipse
Especialmente bueno si su diccionario puede usar una búsqueda O (1) como hash. –
Gran respuesta. Un poco en el lado pobre, pero definitivamente es un buen camino por recorrer. :) –