Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Я сейчас разбираюсь с этим горе-кодом. Там оказывается (во второй процедуре) массив байт должен быть преобразован в строку. Так вот, любая строка в итоге получается типа такой: "567827638723658327568347658347658376487 23682346". Потому что Byte.ToString() рулит. Пипец. Автор бедняга наверное долго мучался, но так и не родил.
Если у сущности появились имя и значение, то это как минимум структура. В будущем, возможно, дорастет до объекта.
Практически все вызовы switch в языках программирования высокого уровня от лени или неумения. Заменять их следует вызовом метода объекта или извлечением поля из структуры.
Гость #comment9126 прав, в C# для этого лучше всего подходит enum. Я обычно пишу в C++, поэтому имел ввиду примерно следующее:
struct TNamedConstsnt
{
const long Value;
const char* const Name;
TNamedConstsnt(const long value, const char* const name) :
Value(value), Name(name)
{}
};
Затем создаем константы и запихиваем их в контейнер, например так
new TNamedConstsnt(5, "TRANS2QUIK_DLL_VERSION_NOT_SUPPORTE D");
Функция, описанная автором, вырождается в проход по контейнеру в поисках соответствия.
Это если изобретать велосипед. А вообще есть реализованные контейнеры для пар ключ-значение, которые ко всему прочему еще проверяют уникальность ключа.
"Практически все вызовы switch в языках программирования высокого уровня от лени или неумения"
Да ну?
К твоему сведению switch в .Net, например, при компиляции сразу преобразуется в методы и в очень многих случаях предоставляет возможность писать простой, очевидный и очень быстрый код.
К этому свичу прилагается таблица констант. Всю эту таблицу можно было забить в enum, а потом использовать метод ToString().
Там вообще-то еще операторы break не выполняются. 🙂
а если это сасунуть в dll то можно не испоьзовать switch
там по строке вызываеться функции, можно конечно отправлять функцию в своюже программу, но это медлее будет
external <адрес dll(exe )> name <насвание процедуры>
Практически все вызовы switch в языках программирования высокого уровня от лени или неумения. Заменять их следует вызовом метода объекта или извлечением поля из структуры.
struct TNamedConstsnt
{
const long Value;
const char* const Name;
TNamedConstsnt(const long value, const char* const name) :
Value(value), Name(name)
{}
};
Затем создаем константы и запихиваем их в контейнер, например так
new TNamedConstsnt(5, "TRANS2QUIK_DLL_VERSION_NOT_SUPPORTE D");
Функция, описанная автором, вырождается в проход по контейнеру в поисках соответствия.
Это если изобретать велосипед. А вообще есть реализованные контейнеры для пар ключ-значение, которые ко всему прочему еще проверяют уникальность ключа.
Да ну?
К твоему сведению switch в .Net, например, при компиляции сразу преобразуется в методы и в очень многих случаях предоставляет возможность писать простой, очевидный и очень быстрый код.
Там вообще-то еще операторы break не выполняются. 🙂
там по строке вызываеться функции, можно конечно отправлять функцию в своюже программу, но это медлее будет
external <адрес dll(exe )> name <насвание процедуры>