Cuando me encuentro llamando al mismo método getter varias veces, ¿debería considerarse un problema? ¿Es mejor [siempre] asignar a una variable local y llamar solo una vez?Optimización prematura en Java: cuándo usar "x = foo.getX()" vs simplemente "foo.getX()"
Estoy seguro de que la respuesta por supuesto es "depende".
Estoy más preocupado por el caso más simple en el que el getter es simplemente un método de tipo "transmite el valor de una variable privada". es decir, no hay cálculos costosos involucrados, no se consumen las conexiones de bases de datos, etc.
Mi pregunta de "es mejor" se refiere a la legibilidad del código (estilo) y también al rendimiento. es decir, es que mucho de un impacto en el rendimiento que tienen:
SomeMethod1(a, b, foo.getX(), c);
SomeMethod2(b, foo.getX(), c);
SomeMethod3(foo.getX());
vs:
X x = foo.getX();
SomeMethod1(a, b, x, c);
SomeMethod2(b, x, c);
SomeMethod3(x);
que dan cuenta de esta pregunta es un poco puntillosos y gris. Pero me acabo de dar cuenta, no tengo una manera consistente de evaluar estos intercambios, en absoluto. Estoy buscando algunos criterios que son más que completamente caprichosos.
Gracias.
Este es un escenario en el que solo hay un hilo que se actualiza, supongo. – extraneon
+1 para el uso de caprichoso en una pregunta –
¿Es foo inmutable (al menos durante la vida útil de x)? Si no, entonces no son lo mismo. No es suficiente que getX no tenga efectos secundarios. Si SomeMethod1 invoca foo.setX, entonces no son lo mismo. Si no son lo mismo, en lugar de preocuparse por la legibilidad o el rendimiento, elija el correcto. – emory