Ах какже функцию разбить

Nov 24, 2008 10:40

Сегодня мне говорили, что одну функцию очень сложно разбить. Ну очень она сложная. Поэтому, понятно, там периодически валится эксепшен. В качестве борьбы даже предложили всё поупихивать во вложенные try-catch (которые будут вложены во вложенные for и if).
Послал, стал разбираться.

Вот один из перлов внутри мега-функции:
                if (String.IsNullOrEmpty(ErrMsg))
                {
                    for (int j = i + 1; j < m_data.SobesIncomeData.Length; j++)
                    {
                        if (!String.IsNullOrEmpty(m_data.SobesIncomeData[j].FIO) &&
                            (m_data.SobesIncomeData[i].FIO.ToUpper() == m_data.SobesIncomeData[j].FIO.ToUpper()))
                            if ((String.IsNullOrEmpty(m_data.SobesIncomeData[i].BirthDate) ||
                                String.IsNullOrEmpty(m_data.SobesIncomeData[j].BirthDate))
                                || (m_data.SobesIncomeData[i].BirthDate == m_data.SobesIncomeData[j].BirthDate))
                            {
                                ErrMsg = CheckErrFIO(m_data.SobesIncomeData[j].FIO, (j + 1).ToString());
                                break;  
                            }
                    }
                }

А вот то, что отсюда вызывают:
    private string CheckErrFIO(string FIO, string nRow)
    {
        return
            "alert('Совпадают имена проживающих, и их даты рождения!');" +
            "var rng = document.all.TFIO" + nRow +
            ".createTextRange(); rng.select(); document.all.TFIO" + nRow +
            ".focus();";
    }

Если честно - не матерных слов нет. Лепить в итак сложной функции вложенные for и if-ы, чтобы вызвать оттуда функцию, которая всего-навсего возвращает строку - это жесть. И зачем такую функцию писать, когда есть String.Forma(string str, object[] args)  - тоже не ясно.

наша жизнь, programming, убил бы, дурдом

Previous post Next post
Up