es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es necesario pasar un parámetro a un método de configuración (set method)? En este caso, establecer el valor depende de otro campo en el mismo objeto.

Sé que es común y quizás la mejor práctica pasar un parámetro a un método setter, pero en este caso, el nuevo campo que estoy agregando depende del valor de otro campo en el mismo objeto, aquí tienes un ejemplo de código:

    public abstract class BaseContent {

        protected String sentiment;
        protected Double sentimentScore;

        public String getSentiment() {
            return sentiment;
        }

        /**
         * Establecer el valor de sentimiento en función del valor de sentimentScore:
         * Si es menor que 0, establecer el sentimiento como negativo.
         * Si es mayor que 0, establecer el sentimiento como positivo.
         * Si es igual a 0, establecer el sentimiento como neutral.
         */
        public void setSentiment() {
            if (sentimentScore != null) {
                if (sentimentScore < 0) {
                    sentiment = "negativo";
                } else if (sentimentScore > 0) {
                    sentiment = "positivo";
                } else {
                    sentiment = "neutral";
                }
            }
        } 
    }

Consideré crear solo un método getter y tener esa funcionalidad allí, pero eso me obligaría a actualizar el valor del nuevo campo en el mismo método getter, además no me importa guardar el nuevo valor en la base de datos si eso ayuda.

Puede que esté teniendo pensamientos equivocados, así que por favor dame tu opinión al respecto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, modelado y getter-setter, mi opinión al respecto es que es aceptable que la lógica en el método setter dependa del valor de otro campo dentro del mismo objeto. Sin embargo, generalmente se considera una práctica mejor pasar el parámetro al método setter para mantener la consistencia en la interfaz y hacer el código más legible y mantenible.

    Si el valor del nuevo campo depende de otro campo, podría ser más apropiado tener un método privado dentro de la clase para establecer el valor del nuevo campo basado en el valor del campo existente. Este enfoque ayuda a mantener la encapsulación y facilita razonar sobre el comportamiento del código.

    Si el valor del nuevo campo solo es necesario para el procesamiento en memoria y no es necesario persistirlo, puede ser mejor omitir por completo el método setter y calcular el valor sobre la marcha dentro del método getter. Sin embargo, si el valor del nuevo campo es necesario para un procesamiento posterior o para persistirlo, todavía puede ser más apropiado tener un método setter.

    En última instancia, la decisión sobre cómo implementar el método setter depende del caso de uso y los requisitos de diseño.

Comments are closed.