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.

¿Cómo puedo simplificar esta declaración if else para reducir la repetición de código?

¿Cómo puedo simplificar esta declaración if else para reducir la repetición de código?
Como puede ver, la variable uri se asigna con solo 1 parámetro que cambia.

    var uri: String?

    if (otfText.isNullOrEmpty()) {
        uri = StickerFileManager.checkIfStickerCreated(
            sticker,
            head,
            sticker.translatedOTFText
        )
        if (uri.isNullOrEmpty()) {
            ResourceDownloadManager.downloadResource(sticker)
            uri = StickerCreator().createStickerWith(
                sticker,
                head,
                sticker.translatedOTFText
            )
        }
    } else {
        uri = StickerFileManager.checkIfStickerCreated(
            sticker,
            head,
            otfText
        )
        if (uri.isNullOrEmpty()) {
            ResourceDownloadManager.downloadResource(sticker)
            uri = StickerCreator().createStickerWith(
                sticker,
                head,
                otfText
            )
        }
    }
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes simplificar esta declaración if-else creando una función que tome otfText como parámetro y devuelva el valor uri.

    Primero, declara la función:

    fun getUri(otfText: String?): String? {
      var uri: String?
    
      uri = StickerFileManager.checkIfStickerCreated(
          sticker,
          head,
          otfText ?: sticker.translatedOTFText
      )
    
      if (uri.isNullOrEmpty()) {
          ResourceDownloadManager.downloadResource(sticker)
          uri = StickerCreator().createStickerWith(
              sticker,
              head,
              otfText ?: sticker.translatedOTFText
          )
      }
    
      return uri
    }
    

    Luego, usa la función de la siguiente manera:

    val uri = getUri(otfText)
    

    De esta manera, solo necesitas escribir el código para obtener la uri una vez, y manejará ambos casos donde otfText es nulo o no nulo.

Comments are closed.