Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

Что будет правильнее?   Найти похожие ветки 

 
Санек   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
8-27620
adam
2003-06-11 07:07
2003.10.09
mp3.... Как???


3-27346
Saperxl
2003-09-19 20:00
2003.10.09
TIBUpdateSQL.ModifySQL


1-27584
CrazyHackers
2003-09-29 12:25
2003.10.09
Определить путь к временной паппке


3-27393
T2
2003-09-17 20:03
2003.10.09
Удаление записей через AdoTable1


14-27727
Maximator Vetera
2003-09-20 19:39
2003.10.09
Архитектор программных систем - профессионал