Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Предотвращение дублирования кода

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

             Read(a);
             Read(y);
             if a<10 then WriteLn('Недопустимый ввод');
             if Length(y)=0 then WriteLn('Недопустимый ввод');

              В данном  случае  предложение  WriteLn('Недопустимый  ввод')
         встречается дважды.  Однако,  это не необходимо, так как фрагмент
         может быть переписан следующим образом
             Read(a);
             Read(y);
             if (a<10 or (Length(y)=0) then WriteLn('Недопустимый ввод');

              В таком варианте код не только короче, но и будет в действи-
         тельности  выполняться  быстрее,  так как выполняется только одно
         предложение if/then вместо двух.
              Данный пример возможно не встретится в  реальной  программе,
         так  как избыточные предложения являются соседними и их легко об-
         наружить.  Однако, так как избыточные предложения часто разнесены
         в программе, то такие коды встречаются в большинстве программ.
              Избыточность иногда является следствием  методов,  выбранных
         для кодирования процедур. Например, далее представлены два метода
         кодирования функции, которая осуществляет поиск заданного слова в
         матрице строк:

             type
               str80 = string[80];
               StrArray = array [1..100] of str80;

             function StrSearch1(str: StrArray; word: str80): boolean;
             { правильный,  неизбыточный код }
             var
               t: integer;
             begin
               StrSearch1 := FALSE;
               for t := 1 to 100 do
                if str[t]=word then StrSearch1 := TRUE;
             end;
             Function StrSeach2(str: StrArray; word: str80): boolean;
             {неправильный,  избыточный код }
             var
               t: integer;
             begin
               t :=1;
               StrSearch := FALSE;
               if str[t]=word then StrSearch2 := TRUE
               else
               begin
               t := 2;
               while(t<=100) do
               begin
                if str[t]=word then StrSearch2 := TRUE;
                t := t+1;
               end;
              end;
             end;
              При втором методе не только дублируются предложения  сравне-
         ния if/then,  но также имеются два предложения присваивания (t:=1
         и t:=2).  Первая версия работает быстрее  и  требует  значительно
         меньше памяти.
              Коротко говоря,  избыточный код может быть  следствием  либо
         неряшливости  при программировании,  либо неверного выбора метода
         реализации процедуры.

(с)Все права защищены

По всем интересующим вопросампрошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz