Cómo evitar un montón de si las condiciones lo demás

Amrendra Kumar:

He leído un montón de temas sobre el código de refactorización y evitando de si else. En realidad, tengo una clase en la que estoy usando un montón de si - condiciones demás.

private static String getXSIType(String fieldType) {
    if ("_freeFormText".equals(fieldType) || "_eMailAddress".equals(fieldType) || "_help".equals(fieldType)
            || "_hyperlink".equals(fieldType) || "_inlineText".equals(fieldType) || "_longText".equals(fieldType)
            || "_password".equals(fieldType) || "_phoneNumber".equals(fieldType) || "_richText".equals(fieldType)
            || "_textArea".equals(fieldType)) {

        return "platformCore:StringCustomFieldRef";

    } else if ("_integerNumber".equals(fieldType)) {
        return "platformCore:LongCustomFieldRef";

    } else if ("_multipleSelect".equals(fieldType)) {
        return "platformCore:MultiSelectCustomFieldRef";

    } else if ("_document".equals(fieldType) || "_listRecord".equals(fieldType) || "_image".equals(fieldType)) {
        return "platformCore:SelectCustomFieldRef";

    } else if ("_currency".equals(fieldType) || "_decimalNumber".equals(fieldType)
            || "_percent".equals(fieldType)) {
        return "platformCore:DoubleCustomFieldRef";

    } else if ("_checkBox".equals(fieldType)) {
        return "platformCore:BooleanCustomFieldRef";

    } else if ("_date".equals(fieldType) || "_datetime".equals(fieldType) || "_timeOfDay".equals(fieldType)) {
        return "platformCore:DateCustomFieldRef";

    }
    return "platformCore:StringCustomFieldRef";
}

Ahora, me gustaría usar otra cosa, en lugar de los que si las condiciones lo demás, pero no sé qué.

¿Me podría dar una buena página de ayuda o ejemplo?

Gracias

Vlad Maier:

Combinación de enumy switchdeclaración es muy útil por su ejemplo:

private static String getXSIType(String fieldType) {

    FieldType foundFieldType = FieldType.findByValue(fieldType);
    if(foundFieldType == null) {
        return CustomFieldRef.STRING.getValue();
    }
    switch(foundFieldType) {
    case FREE_FORM_TEXT:
    case EMAIL_ADRESS:
    case HELP:
    case HYPERLINK:
    case INLINE_TEXT:
    case LONG_TEXT:
    case PASSWORD:
    case PHONE_NUMBER:
    case RICH_TEXT:
    case TEXT_AREA:
        return CustomFieldRef.STRING.getValue();
    case INTEGER_NUMBER:
        return CustomFieldRef.LONG.getValue();
    case MULTIPLE_SELECT:
        return CustomFieldRef.MULTI_SELECT.getValue();
    case DOCUMENT:
    case LIST_RECORD:
    case IMAGE:
        return CustomFieldRef.SELECT.getValue();
    case CURRENCY:
    case DECIMAL_NUMBER:
    case PERCENT:
        return CustomFieldRef.DOUBLE.getValue();
    case CHECK_BOX:
        return CustomFieldRef.BOOLEAN.getValue();
    case DATE:
    case DATETIME:
    case TIME_OF_DAY:
        return CustomFieldRef.DATE.getValue();
    default:
        return CustomFieldRef.STRING.getValue();
    }
}

enum FieldType {

    FREE_FORM_TEXT("_freeFormText"),
    EMAIL_ADRESS("_eMailAddress"),
    HELP("_help"),
    HYPERLINK("_hyperlink"),
    INLINE_TEXT("_inlineText"),
    LONG_TEXT("_longText"),
    PASSWORD("_password"),
    PHONE_NUMBER("_phoneNumber"),
    RICH_TEXT("_richText"),
    TEXT_AREA("_textArea"),
    INTEGER_NUMBER("_integerNumber"),
    MULTIPLE_SELECT("_multipleSelect"),
    DOCUMENT("_document"),
    LIST_RECORD("_listRecord"),
    IMAGE("_image"),
    CURRENCY("_currency"),
    DECIMAL_NUMBER("_decimalNumber"),
    PERCENT("_percent"),
    CHECK_BOX("_checkBox"),
    DATE("_date"),
    DATETIME("_datetime"),
    TIME_OF_DAY("_timeOfDay");

    private final String value;

    FieldType(String fieldType) {
        this.value = fieldType;
    }

    public static FieldType findByValue(final String value) {
        return Arrays.stream(FieldType.values())
                .filter(o -> StringUtils.equals(o.value, value))
                .findFirst()
                .orElse(null);
    }
}

enum CustomFieldRef {

    STRING("String"),
    LONG("Long"),
    DOUBLE("Double"),
    BOOLEAN("Boolean"),
    DATE("Date"),
    SELECT("Select"),
    MULTI_SELECT("MultiSelect");

    private final String value;

    CustomFieldRef(String customFieldRef) {
        this.value = customFieldRef;
    }

    public String getValue() {
        String prefix = "platformCore";
        String suffix = "CustomFieldRef";
        return String.format("%s:%s%s", prefix, value, suffix);
    }
}

No hay ninguna necesidad de una breaken este caso porque la returndetiene la ejecución de la getXSIType()función.

En una switchdeclaración que usted no puede utilizar el ||operador pero en cambio, se puede definir caída a través declaraciones:

...
case PHONE_NUMBER:
case RICH_TEXT:
case TEXT_AREA:
    return CustomFieldRef.STRING.getValue();

Esto es equivalente a:

if(FieldType.findByValue(fieldType).equals(FieldType.PHONE_NUMBER)
|| FieldType.findByValue(fieldType).equals(FieldType.RICH_TEXT)
|| FieldType.findByValue(fieldType).equals(FieldType.TEXT_AREA)) {
    return CustomFieldRef.STRING.getValue();
}

Una switchdeclaración puede tener un opcional defaultcaso, que debe aparecer al final de la switchdeclaración. Se puede utilizar para realizar una acción cuando ninguno de los casos anteriores es cierto.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=183252&siteId=1
Recomendado
Clasificación