Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

06.07.22 22:07
Re: Резюме для программиста
 
alex445 коренной житель
в ответ alex445 21.06.22 23:08, Последний раз изменено 06.07.22 22:14 (alex445)

Как относитесь к такой организации хранения локализованных строк?


1. Все строки хранятся в одном файле .resx для каждой локали. В файле несколько тысяч записей.

2. Чтобы во всей этой мути разбираться, ключ для каждой записи представляет собой строку, составляемую из параметров с разделителем - типа такого

{area}_{context}_{name}.

3. Для параметров area и context заведены специальные классы с возможными значениями - типа context бывает "menu", "exception", "dialog" и т.д. - до двух десятков. То же и для area.

4. Чтобы вытащить нужную переведённую строку, программист конструирует строку-монстрика из 3-5 параметров и использует её как ключ.

5. Формат ключа {area}_{context}_{name} не постоянный и не обязательный. Некоторые строки имеют ключ просто из одного параметра, некоторые из 2 или 4. Сами параметры могут быть тоже замудрённые - типа area может быть составной "name1.name2-name3".

6. Чтобы парсить всё это безумие, заведён специальный класс с кучей перегруженных функций, отрабатывающих все эти форматы и варианты составных ключей. На всё про всё около 1000 строк кода. Плюс несколько сотен строк для хранения возможных вариантов параметров в виде текстовых констант. Плюс в разных проектах и классах ещё несколько перегруженных функций для вытаскивания локализованной строки из главного класса по вытаскиванию - до 4-5 вложенных вызовов. Типа такого:


GetTranslationExtension1(string area, ...)
{
    GetTranslationExtension2(string area, ...)
    {
        GetTranslationExtension3(string area, ...)
        {
            GetTranslation(string area, ...)
            {
                ...
                return translation;
            }
        }
    }
}


Итого до 2 тысяч строк кода, пяток классов, до пяти, если не больше, вложенных вызовов функций. И это только чтобы просто вытащить одну локализованную строку. А уж оттестировать всё это - ухх, юнит-тесты будешь месяц делать.


Писали гении.

 

Перейти на