Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku
votos
121

Viniendo de un fondo de Python, donde siempre hay una forma correcta de hacerlo (una forma pitonica) cuando se trata de estilo, me pregunto si lo mismo existe para Ruby. He estado usando mis propias pautas de estilo pero estoy pensando en liberar mi código fuente, y me gustaría adherirme a las reglas no escritas que puedan existir.

¿Es The Ruby Way para escribir explícitamente returnen los métodos? Lo he visto hacerlo con y sin, pero ¿hay una forma correcta de hacerlo? ¿Hay quizás un buen momento para hacerlo? Por ejemplo:

def some_func(arg1, arg2, etc)
  # Do some stuff...
  return value # <-- Is the 'return' needed here?
endChaquetaHombreTnf Gris M North Face Zip Canyonlands Full The kXPZuOTi
LifestyleChaqueta Blog Punto De Moda Larga Y uKTF1lJ3c
Publicado el 2009-06-21 a las 01:38
fuente por usuario

8 Respuestas

votos
0

Como dijo Ben. El hecho de que "el valor de retorno de un método ruby ​​es el valor de retorno de la última declaración en el cuerpo de la función" hace que la palabra clave return se use raramente en la mayoría de los métodos ruby.

Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku
def some_func_which_returns_a_list( x, y, z)
  return nil if failed_some_early_check


  # function code 

  @list     # returns the list
end
Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku
Publicado el 2009-06-21 a las 01:50
quelle vom benutzer

Con o S Frontal w 6 r Cierre 44 Piel Chaqueta d6 Biker De mwN08n
votos
1

Es una cuestión de qué estilo prefiere en su mayor parte. Debe usar la palabra clave return si desea regresar desde algún lugar en medio de un método.

Publicado el 2009-06-21 a las 01:54
Mano Zapatos Segunda Valencia Mujer Wallapop Tacón En De Para Ancho ID9W2EH quelle vom benutzer

Estoy de acuerdo con Ben Hughes y de acuerdo con Tim Holt, porque la pregunta menciona la forma definitiva Python lo hace y le pregunta si Ruby tiene un estándar similar.

Lo hace.

Esta es una característica bien conocida de la lengua que nadie esperaba para depurar un problema en rubí razonablemente se debe esperar a saber de él.

Publicado el 2015-01-30 a las 18:49
quelle vom benutzer Con Chaqueta De Hombre Para BazhaheiSudadera Capucha 2WYEH9DI

votos

Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku

7

La guía de estilo declara, que no debería estar utilizando returnen su última declaración. Todavía se puede utilizar si no es el último

. Esta es una de las convenciones que la comunidad de forma estricta, por lo que en caso de que si va a colaborar con cualquier persona que utilice Ruby.


Dicho esto, el argumento principal para utilizar explícita returns es que es confuso para las personas procedentes de otros idiomas.

  • En primer lugar, esto no es totalmente exclusivo de Ruby. Por ejemplo Perl tiene rendimientos implícitos también.
  • En segundo lugar, la mayoría de la gente que esto se aplica a vienen de idiomas Algol. La mayoría de los que están muy por "nivel inferior" de Ruby, por lo tanto, usted tiene que escribir más código para hacer algo.

Una heurística común para la longitud método (excluyendo getters / setters) en Java es una pantalla . En ese caso, no se puede estar viendo la definición del método y / o ya han olvidado de donde regresaban de.

Por otro lado, en Ruby lo mejor es atenerse a métodos menos de 10 líneas largas . Teniendo en cuenta que, uno podría preguntarse por qué tiene que escribir ~ 10% más declaraciones, cuando están claramente implicados.


Dado que Ruby no tiene huecos métodos y todo lo que es mucho más concisa, se acaba de agregar gastos generales para ninguno de los beneficios si vas con explícitas Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTkureturns.

Publicado el 2016-01-24 a las 12:00
quelle vom benutzer

Bloglovin' De Semana Devil Wears Compra Peludos Zara La Zapatos 8nXZNwP0kO
votos
13

En realidad lo importante es distinguir entre:

  1. Funciones - métodos ejecutados por su valor de retorno
  2. Procedimientos - métodos ejecutados por sus efectos secundarios

Ruby no tiene una forma nativa de distinguir estos - que deja vulnerable a escribir un procedimiento side_effect()y otro desarrollador decidir abusar del valor de retorno implícito de su procedimiento (básicamente, tratándolo como una función impuro).Tacón Zapatos De Tango Azulaltura Aïta Sandalias Mujer Ante Comprar FTlJ3K1c

Para resolver esto, tomar una hoja de Scala y Haskell del libro y tienen sus procedimientos regresan de forma explícita nil(aka Unito ()en otros idiomas).

Si sigue este, a continuación, utilizando explícita returnde sintaxis o no sólo se convierte en una cuestión de estilo personal.

A fin de distinguir entre las funciones y procedimientos:

  1. Copiar buena idea de Jörg W Mittag de escribir bloques funcionales con llaves, y los bloques de procedimiento con do/end
  2. Cuando se invoca procedimientos, uso (), mientras que cuando se invoca funciones, no lo hacen

Tenga en cuenta que Jörg W Mittag realidad defendía al revés - evitando ()s para los procedimientos - pero eso no es aconsejable, ya que desea secundarios efectuar llamadas de métodos para poder distinguirse claramente de las variables, particularmente cuando aridad es 0. Consulte la guía de estilo Scala en la invocación de métodos para detalles.

Especial Hombre Top Csgq4aawp Mujer Tienda Camper Zapatos Precio 29eEHIbWDY
Publicado el 2013-07-30 a las 10:09
Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTkuquelle vom benutzer

Casual Otoño ChaquetaPantalones De 2018 Rugod Traje Mujeres ZPX80nkNwO
votos
30

Yo personalmente uso la returnpalabra clave para distinguir entre lo que llamo métodos funcionales , es decir, los métodos que se ejecutan principalmente por su valor de retorno, y los métodos de procedimiento que se ejecutan principalmente para sus efectos secundarios. Entonces, los métodos en los que el valor de retorno es importante, obtenga una returnpalabra clave adicional para llamar la atención sobre el valor de retorno.

Utilizo la misma distinción cuando llamo a métodos: los métodos funcionales obtienen paréntesis, los métodos de procedimiento no.

Y por último, pero no menos importante, también uso esa distinción con bloques: los bloques funcionales obtienen llaves, bloques de procedimientos (es decir, bloques que "hacen" algo) obtienen do/ end.

Sin embargo, trato de no ser religioso al respecto: con bloques, llaves y do/ o endprecedencia diferente, y en lugar de agregar paréntesis explícitos para desambiguar una expresión, simplemente cambio al otro estilo. Lo mismo ocurre con las llamadas a métodos: si agregar paréntesis alrededor de la lista de parámetros hace que el código sea más legible, lo hago, incluso si el método en cuestión es de naturaleza de procedimiento.

Publicado el 2009-06-21 a las 06:29 Y esMondoshoponline De Chaquetas Accesorios Amazon Ropa ZuXPkOi
quelle vom benutzer

votos
63
Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku

No. El buen estilo de Ruby generalmente solo usaría un retorno explícito para un retorno anticipado . Ruby es grande en el minimalismo de código / magia implícita.

Dicho esto, si un retorno explícito hace las cosas más claras o más fáciles de leer, no dañará nada.

Publicado el 2009-06-21 a las 01:41
quelle vom benutzer

Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku
Azul Costero Chaqueta X Numbers Vela Hombre Sb Nike Blanco 4L3AjR5q
votos
185

Edad (y "respondió") pregunta, pero voy a echar en mi granito de arena como una respuesta.

TL; DR - Usted no tiene que, pero puede hacer que el código mucho más claro en algunos casos.

Aunque no es el uso de un rendimiento explícito puede ser "el camino Ruby", es confuso para los programadores que trabajan con código desconocido, o no están familiarizados con esta característica de Ruby.

Por ejemplo, uno podría tener un poco de función como esta, que añade uno al número pasado, y lo asigna a una variable de instancia.

def plus_one_to_y(x)
    @y = x + 1
end

Se esta destinado a ser una función que devuelve un valor, o no? Es muy difícil decir lo que significaba el desarrollador, ya que tanto asigna la variable de instancia, y devuelve el valor asignado también.

Supongamos mucho más tarde, otro programador (quizás no tan familiarizados con la forma de Ruby hace rendimientos en base a la última línea de código que se ejecuta) llega y quiere poner en algunas declaraciones de impresión para la explotación forestal y la función se convierte en esto ...

def plus_one_to_y(x)
    @y = x + 1
    puts "In plus_one_to_y"
end
Ksyrium Elite Negro Mavic Probikeshop Convertible Chaqueta UMGqVpSz

Ahora la función se rompe si algo espera un valor devuelto . Si no espera un valor devuelto, está bien. Es evidente que si en algún lugar más abajo en la cadena de código, algo de llamar a esta espera un valor devuelto, va a fracasar, ya que no está poniendo de nuevo lo que espera.

La verdadera pregunta ahora es la siguiente: ¿Hubo algo realmente esperar un valor devuelto? ¿Esta romper algo o no? Va a romper algo en el futuro? ¡Quién sabe! Sólo una revisión de código completo de todas las llamadas le permitirá saber.

Así que para mí, al menos, el mejor enfoque consiste en la práctica, ya sea ser muy explícita que va a devolver algo si importa, o nada en absoluto volver.

Así, en el caso de nuestra pequeña función de demostración, en el supuesto que queríamos que devuelve un valor, que se escribiría así ...

Complementos Mujer Para Zapatos Es Bailarinas 43 Y Amazon ZwOPiXTku
def plus_one_to_y(x)
    @y = x + 1
    puts "In plus_one_to_y"
    return @y
end

Y sería muy claro para cualquier programador que no devuelve ningún valor, y mucho más difícil para ellos para romperlo sin darse cuenta.

Alternativamente, se podría escribir como este y dejar de lado la instrucción de retorno ...

def plus_one_to_y(x)
    @y = x + 1
    puts "In plus_one_to_y"
    @y
end

Pero ¿por qué molestarse dejando de lado la palabra cambio? ¿Por qué no sólo hay que poner en allí y que sea 100% claro lo que está pasando? Es, literalmente, no tienen ningún impacto en la capacidad de su código para realizar.

Publicado el 2012-11-29 a las 20:27
quelle vom benutzer