Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 2 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Sab Dic 19, 2009 7:33 pm
Mensajes: 36

Nota Publicado: Mar Feb 01, 2011 12:06 am 
Arriba  
Llevo algún tiempo trabajando en un proyecto propio y aunque aún no es totalmente funcional ha ido creciendo en código con el paso del tiempo. Hace un par de meses he empezado a leer sobre boost, la cual es una libreria muy completa y de alto rendimiento (según ellos); lo de completa lo puedo asegurar ya que tiene clases para mucho de lo que ya he implementado como sockets e hilos.

Básicamente mi pregunta va a los que hayan implementado boost en algún proyecto para que compartan experiencias. Mis dudas van sobre si es mejor utilizar las librerias de boost (en la parte de hilos, sockets, vectores y sincronización) y dejar de lado las que ya había hecho (menos código que mantener y probar, aparte de que veo muchas clases utiles de boost para implementar en un futuro cercano) u olvidarme del tema y no incluir una dependencia extra en mi aplicación (por los momentos solo dependo de libusb y libpcap), aparte de que el código fuente basado en boost no gana un premio en legibilidad precisamente ya la sintaxis de los templates de boost es bastante recargada.

Boost es tan bueno como dicen como para dedicar mi tiempo a aprender a utilizar su API y las templates de C++ para usarlas en mi proyecto?

_________________
Just feel the code...

 Perfil Email  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mar Feb 01, 2011 6:44 am 
Arriba  
Lo que podrías hacer es "definir" un servicio y proveer de varias implementaciones, como la que ya tienes hecha o bien utilizando boost. Si lo haces bien, es posible que puedas utilizar la implementación con boost si el usuario tiene instalado boost o la que tienes implementada ahora en caso de que no la tenga. En cualquier caso mantienes tu implementación tal cual está.

Para ello lo que tienes que hacer es definir una interfaz. Si mal no recuerdo C++ no define interfaces, pero con una clase abstracta es suficiente. En la clase abstracta defines los métodos que van a estar accesibles en todas la implementaciones. Los métodos deben ser abstractos para obligar a que se implementen.
La implementación que ya tienes hecha puede que necesites adaptarla para que herede de dicha clase abstracta.

Luego, lo que tienes que hacer es implementar esa clase abstracta utilizando boost.

Para que te hagas una idea te lo hago en java y luego lo puedes adaptar a c++
Código:
public abstract class Servicio{
  //debería ser una interfaz, pero una clase abstracta también sirve
  public abstract void doSth();
  public abstract String getSth();
  public abstract String toUpperCase(String s);
}

public class ServicioDefecto extends Servicio{
  //es posible que necesitaran la anotación @Override, pero C++ no utiliza anotaciones (creo)
  public void doSth(){} //implementar método
  public String getSth(){}
  public String toUpperCase(String s){}
}

public class ServicioBoost extends Servicio{
  public void doSth(){} //distinta implementación
  public String getSth(){}
  public String toUpperCase(String s){}
}


Para utilizarlo correctamente, lo único que tienes que hacer es usar la interfaz/"clase abstracta"
Código:
public void main(String[] args){
  Servicio servicio;
  if (tiene_boost y quiere_boost){
    servicio = new ServicioBoost();
  } else {
    servicio = new ServicioDefecto();
  }
  ...
  String message = servicio.getSth();
  servicio.doSth();
}


De esta forma, apenas tienes que tocar el código que tienes actualmente y puedes cambiar de implementación incluso en tiempo de ejecución. Si resulta que la implementación con boost sale muy rentable, la pones para que sea la implementación por defecto. En caso de error, porque no detectas la librería, porque el usuario no quiere utilizar esa implementación, o cualquier otra cosa, puedes cambiar a la que tienes por defecto.

Citar:
Boost es tan bueno como dicen como para dedicar mi tiempo a aprender a utilizar su API y las templates de C++ para usarlas en mi proyecto?

Hombre, pues teniendo el tiempo que llevan escritas y habiéndose utilizado en no pocos proyectos, malo no creo que sea. Yo apostaría por la aproximación que te he puesto, al menos así siempre puedes tener algo funcionando.

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 2 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO