Страницы

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

среда, 12 декабря 2018 г.

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

В общем, есть 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. Задача в том, чтобы этот код (логику, если так можно "это" назвать) как-то упростить (уменьшить), если это возможно, но не словарем.


Ответ

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

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

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