[pyar] Refactoring de una función

Mati Barriento elmatibarriento en gmail.com
Lun Jul 9 13:47:24 -03 2018


Me puse el sombrero del refactor y tire esto.
http://linkode.org/#6oT4YaSVl9qqJhmTrejMt2

Basicamente le saque la responsabilidad el metodo de guardar y se lo pase a
una clase que recibe como dependencia. No lo pude probar asi que no sabria
decirte si funciona.
Tal vez no sea la solución más elegante pero te oriente por donde ir (o por
donde no ir).

Saludos

El 9 de julio de 2018, 12:50, Luis Andraschnik <luis.andraschnik en gmail.com>
escribió:

> Hola gente!
>
> Tengo esta función que toma como argumentos una lista de archivos de
> espectros y grafica según los valores de los parámetros en un archivo único
> (superpuestos) o separados en archivos individuales. A fin de no repetir
> código lo hago en una única función y sólo cambia el final. El cambio es
> muy sutil, la posición del if define si se cierra el plot y se guarda el
> arhchivo. y sólo cambia qué nombre le asigno a/los archivo/s. Me parece que
> falta claridad, un error de indentado me cambia el resultado.
>
> Cómo de puede refactorizar para que quede más claro?
> Se puede utilizar el patrón de diseño Template? Cómo?
>
> Saludos
>
> import os
> import matplotlib.pyplot as plt
> INIT_DIR=os.getcwd()
>
>
> def ftir_plot(used_oil_name_list, formato='png', absorbancia=True,
> superpuestos=True, dpi=300):
>     '''Grafica espectros infrarrojos
>     formato : 'png','jpg', 'pdf', etc
>     absorbancia : True, eje Y absorbancia, False, eje Y transmitancia,
>     superpuestos: True, se grafica todo en un mismo archivo,
>         False, cada espectro en un archivo separado,
>     dpi: resolución en pixels por pulgada.
>     '''
>     mpl_fig = plt.figure()
>     ax = mpl_fig.add_subplot(111)
>     for used_oil in used_oil_name_list:
>         espectro = cargar_espectro(used_oil)
>         x_range = espectro.index # Wavenumbers
>         if absorbancia:
>             y_range = espectro['abs'] # Absorbancia/Transmitancia
>         else:
>             y_range = absorbancia_to_transmitancia(espectro['abs'])
>
>         # grafico el espectro
>         estilo(absorbancia)
>         label = name_for_legend(used_oil)
>         plt.plot(x_range, y_range, '-', label = label)
>         plt.legend(loc=0)
>         if not superpuestos:
>             plt.savefig(os.path.join(INIT_DIR, 'ftir_{}.{}'.format(label,
> formato)), dpi=dpi)
>             plt.close()
>
>     if superpuestos:
>         plt.savefig(os.path.join(INIT_DIR,'ftir_.{}'.format(formato)),
> dpi=dpi)
>         plt.close()
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180709/6f08ea1d/attachment.html>


Más información sobre la lista de distribución pyar