Мне нужно закодировать метод, который увеличивает значение строки от AAA до ZZZ с циклическим вращением (следующее значение после ZZZ равно AAA)
Вот мой код:
    public static string IncrementValue(string value) {
        if (string.IsNullOrEmpty(value) || value.Length != 3) {
            string msg = string.Format("Incorrect value ('{0}' is not between AAA and ZZZ)", value);
            throw new ApplicationException(msg);
        }
        if (value == "ZZZ") {
            return "AAA";
        }
        char pos1 = value[0];
        char pos2 = value[1];
        char pos3 = value[2];
        bool incrementPos2 = false;
        bool incrementPos1 = false;
        if (pos3 == 'Z') {
            pos3 = 'A';
            incrementPos2 = true;
        } else {
            pos3++;
        }
        if (incrementPos2 && pos2 == 'Z') {
            pos2 = 'A';
            incrementPos1 = true;
        } else {
            if (incrementPos2) {
                if (pos2 == 'Z') {
                    pos2 = 'A';
                    incrementPos1 = true;
                }
                pos2++;
            }
        }
        if (incrementPos1) {
            pos1++;
        }
        return pos1.ToString() + pos2.ToString() + pos3.ToString();
    }
Я знаю, что этот фрагмент кода довольно грязный и не очень эффективный, но я не знаю, как это сделать должным образом.
Как обеспечивается этот фрагмент? (это будет выполняться только в виде окна)
Как я могу его оптимизировать и сделать его более читаемым?
Спасибо за ваши комментарии
