Форум: "Потрепаться";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизЧто будет правильнее? Найти похожие ветки
← →
Санек (2003-09-23 09:55) [0]Мастера, нужен ваш совет. При написании программ столкнулся вот с такой штукой. Есть некая абстрактная процедура в которую передается переменная. В зависимости от ее состояния выполняется тот или иной код. Например:
protected
i: Integer
Procedure a1;
Procedure a2;
procedure trigger;
далее сами процедуры
procedure a1;
begin
i:= 1;
end;
procedure a2;
begin
i := 2;
end;
procedure trigger;
begin
case i of
1: // код
2: // код
end;
end;
Второй способ выглядит вот так:
// где-то вверху
type TTriger = ( i1, i2);
protected
i: Integer
Procedure a1;
Procedure a2;
procedure trigger (TTrigger);
далее сами процедуры
procedure a1;
begin
trigger (i1);
end;
procedure a2;
begin
trigger (i2);
end;
procedure trigger (TTrigger);
begin
case i of
i1: // код
i2: // код
end;
end;
Оба варианта работают. Собственно говоря два вопроса: Что с точки зрения профессионального программирования будет более правильным? И существуют ли другие способы решения поставленноо вопроса?
--------------------
С уважением, Санек
← →
Palladin (2003-09-23 10:06) [1]абстрактная процедура? какая же она абстрактная...
> Что с точки зрения профессионального программирования будет
> более правильным?
Эти два способа почти одинаковы, за исключением того что во втором ты защитил себя от подстановки недопустимого значения...
но это в рассмотреной задаче абсолютно несущественно...
> И существуют ли другие способы решения поставленноо вопроса?
а собственно вопроса как такового нет... слишком задача абстрагированая... все зависит от реальной...
← →
ZoKr (2003-09-23 10:07) [2]Санек!
Раз оба варианта работают, то что ты паришься?
Выбери тот который больше нравится, и работай с ним.
← →
Санек (2003-09-23 10:15) [3]Парни, хочется, чтобы все было "на уровне" и не по ламерски :)) Вот и "парюсь" :)
А по поводу абстрактности... Ну да, процедуры конечно не абстрактные. Просто когда я говорил об этом, то имел ввиду то, что они не привязаны к конкретному проекту... :))
← →
Palladin (2003-09-23 10:16) [4]Вот когда начнешь привязывать к конкретному проекту, там и можно будет разговаривать...
← →
[lamer]Barmaglot (2003-09-23 10:17) [5]overload?
← →
pasha_golub (2003-09-23 10:39) [6]2[lamer]Barmaglot
Точно, в данном случае да. Но парень то говорит, что проект абстрактный, а если в реальном проекте у него эти функции будут с разным кол-вом параметров?
← →
Санек (2003-09-23 10:45) [7]To [lamer]Barmaglot
Насколько я знаю, overload позволяет в процедуры с одинаковым именем загонять разные типы переменных:
procedure a1 (i: Integer); overload;
procedure a1 (i: String); overload;
Каким образом это относится к вопросу?
С другой стороны, приведенные мной выше методы работают (и конечно же могут изменяться в зависимости от поставленной задачи). Еще хотелось бы знать, какой из описанных способов быстрее?
---------------
Санек
← →
Плохиш_ (2003-09-23 10:52) [8]
> Еще хотелось бы знать, какой из описанных способов быстрее?
Ну вот ещё один борец за наносекунды :)
← →
[lamer]Barmaglot (2003-09-23 10:55) [9]F1+Find+Virtual and dynamic methods ?
← →
Санек (2003-09-23 11:02) [10]Ок. Я так понял, что значения большого не имеет как написан код. Спасибо всем.
-------------------
С уважением, Санек
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c