Reactivecocoa: Convierta funciones gratuitas en funciones estáticas

Creado en 23 may. 2016  ·  5Comentarios  ·  Fuente: ReactiveCocoa/ReactiveCocoa

¿Los métodos que no son de instancia deberían ser funciones libres o funciones estáticas?

Porque actualmente tenemos:

extension SignalType {

    /// Merges the given signals into a single `Signal` that will emit all values
    /// from each of them, and complete when all of them have completed.
    @warn_unused_result(message="Did you forget to call `observe` on the signal?")
    public static func merge<S : SequenceType where S.Generator.Element == Signal<Value, Error>>(signals: S) -> ReactiveCocoa.Signal<Self.Value, Self.Error>
}

Pero también tenemos:

/// Combines the values of all the given signals, in the manner described by
/// `combineLatestWith`.
@warn_unused_result(message="Did you forget to call `observe` on the signal?")
public func combineLatest<A, B, Error>(a: Signal<A, Error>, _ b: Signal<B, Error>) -> Signal.Signal<(A, B), Error>

Deberíamos estandarizar en uno u otro para RAC 5.0.

Votaría funciones gratuitas, pero tengo curiosidad si alguien piensa que deberíamos usar funciones estáticas. @ ReactiveCocoa / reactivecocoa

Comentario más útil

Las pautas de la API de Swift son bastante claras al respecto .

Prefiere métodos y propiedades a funciones libres. Las funciones gratuitas se utilizan solo en casos especiales:

Cuando no hay un yo obvio:
min(x, y, z)

Cuando la función es un genérico sin restricciones:
print(x)

Cuando la sintaxis de la función es parte de la notación de dominio establecida:
sin(x)

Estas funciones son básicamente constructores sofisticados, por lo que usar el metatipo como self parece bastante defendible.

Todos 5 comentarios

Las funciones estáticas son más fáciles de completar automáticamente, por lo que votaría por eso.
Gracias por mencionar este tema :) definitivamente estoy de acuerdo en que deberíamos unificarnos para mantener la coherencia.

Una ventaja de las funciones gratuitas es que no es necesario pensar en si algo es un Signal o un SignalProducer .

Estoy de acuerdo con @JaviSoto. Para las personas que conocen bien RAC, las funciones gratuitas no son un problema, yo diría que la capacidad de descubrimiento de principiantes a nivel medio puede ser un problema.

Las pautas de la API de Swift son bastante claras al respecto .

Prefiere métodos y propiedades a funciones libres. Las funciones gratuitas se utilizan solo en casos especiales:

Cuando no hay un yo obvio:
min(x, y, z)

Cuando la función es un genérico sin restricciones:
print(x)

Cuando la sintaxis de la función es parte de la notación de dominio establecida:
sin(x)

Estas funciones son básicamente constructores sofisticados, por lo que usar el metatipo como self parece bastante defendible.

¡Esto se hizo en el # 3001! 🎉

¿Fue útil esta página
0 / 5 - 0 calificaciones