Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Убрать switch размером с гору Эверест

#c_sharp #net


В общем, есть switch длиной с Эверест, как бы вы избавились от него, кроме как записывать
это в Dictionary?

        switch (currencyLeft)
        {
            case "BTC":
                return 0.001m;
            case "BCH":
            case "ETH":
            case "FCT":
            case "NEO":
            case "UBTC":
            case "XEM":
            case "ZEC":
                return 0.01m;
            case "MCO":
            case "QTUM":
            case "REP":
            case "STX":
            case "VET":
                return 0.1m;
            case "ETC":
            case "DASH":
            case "LTC":
            case "XLM":
            case "XRP":
            case "XMR":
                return 0.5m;
            case "GAT":
                return 8m;
            case "BMC":
            case "DENT":
            case "DRG":
            case "ETN":
            case "FDX":
            case "FLIXX":
            case "FSN":
            case "GZE":
            case "IND":
            case "IXT":
            case "MTN":
            case "OAX":
            case "ONG":
            case "QASH":
            case "RKT":
            case "SAL":
            case "SER":
            case "SNIP":
            case "SPHTX":
            case "STAC":
            case "STORJ":
            case "STU":
            case "TPT":
            case "TRX":
            case "VZT":
                return 1m;
            default:
                throw new Exception("Unsupported symbol");
        }


UPD: сам switch и так находится в приватном методе, который возвращает decimal и
принимает string. Задача в том, чтобы этот код (логику, если так можно "это" назвать)
как-то упростить (уменьшить), если это возможно, но не словарем.
    


Ответы

Ответ 1



Хардкод значений и курсов в коде - это нехорошо. Положите все это в CSV / JSON / базу данных. Т.е. в любое хранилище, кроме кода. Поднимайте из хранилища по первому обращению и десериализуйте в Dictionary.

Ответ 2



В switch – данные. Данные, по возможности, отделяют от логики программы. Раз уж данных много, можно хранить их в файлах, в настройках программы или в базе. Вот подходящий ответКак хранить данные в программе?

Комментариев нет:

Отправить комментарий