[pyar] i+=1 vs i=i+1

Eugenia Bahit eugeniabahit en gmail.com
Lun Mayo 7 19:25:24 ART 2012


El 7 de mayo de 2012 17:10, Sebastian Bassi
<sebastian.bassi en globant.com>escribió:

> 2012/5/4 Claudio Freire <klaussfreire en gmail.com>
>
>> Como PyString_Length() es O(1) y PyString_Resize es O(1) amortizado, y
>> ese memcpy es O(otro_len), la aplicación repetida de ese patrón para
>>
> ...
>
> La pregunta inicial del hilo habrá sido pava, pero si disparó esta
> explicación y el link de Facundo, muestra que valió la pena :)
> Gracias por la explicación.
>

Bueno, llego recontra tarde pero después de haber leído todos los mensajes,
me gustaría hacer un pequeño aporte:

Todo depende del ámbito en el cual se llame a i. Creo que Claudio F. fue
quien mencionó que es una cuestión de diseño.
Si i es el parámetro de un método (o función), por un principio de no
reasignación de parámetros como variables de uso temporal, en ese caso (en
el que i es un parámetro y luego se incrementa como variable temporal), i
sería el parámetro y "x" la variable temporal:

def mi_funcion(i):
    x = i + 1

Esto, como dije, es por una cuestión de diseño y por el principio de no
reasignar y/o redefinir parámetros.

Martin Fowler diría que esto:

def mi_funcion(i):
    i = i + 1

o también esto:

def mi_funcion(i):
    i += 1

"huele mal" y necesita ser refactorizado xD

En cambio, si i no es un parámetro (es la propiedad de un objeto o una
variable más), a nivel diseño, la expresión correcta debería ser:
Si es propiedad -> self.i += 1

o si es variable -> i += 1

Esto, por el solo hecho de que lo que se pretende es "incrementar i" y no,
redefinirla.

Abrazo!!
Eugenia
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120507/b1146615/attachment.html>


More information about the pyar mailing list