Capítulo 20. Realizar E/S para pasar datos
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
La entrada y la salida son problemáticas en el código. Nuestro programa está sujeto a errores al hablar con el mundo exterior cuando desaparecen archivos o fallan los conectores de red. La E/S también es una acción, por lo que limita nuestra capacidad de razonar y refactorizar nuestro código. ¿Cómo podemos limitar el alcance de los problemas que causa la E/S?
Ahora que los capítulos anteriores han sentado algunas bases, vamos a acelerar el ritmo, pasando directamente a la refactorización y aprendiendo lecciones sobre la marcha.
Escuchar los exámenes
En, Capítulo 10, vimos un código Java que producía un informe para marketing. Cuando dejamos el código, habíamos introducido funciones de extensión en HighValueCustomersReport, lo que nos daba:
@Throws(IOException::class)fungenerate(reader:Reader,writer:Writer){valvaluableCustomers=reader.readLines().toValuableCustomers().sortedBy(CustomerData::score)writer.appendLine("ID\tName\tSpend")for(customerDatainvaluableCustomers){writer.appendLine(customerData.outputLine)}writer.append(valuableCustomers.summarised())}privatefunList<String>.toValuableCustomers()=withoutHeader().map(String::toCustomerData).filter{it.score>=10}privatefunList<String>.withoutHeader()=drop(1)privatefunList<CustomerData>.summarised():String=sumByDouble{