Главная страница
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.014 c
14-27702
Думкин
2003-09-21 15:21
2003.10.09
Шалаш


14-27733
wnew
2003-09-19 22:32
2003.10.09
Есть ли связисты на форуме?


14-27677
Sam
2003-09-22 10:47
2003.10.09
Как


4-27781
Delphi5.01
2003-08-02 22:03
2003.10.09
GetWindowText, ne rabotaet tochno!


3-27350
Анонимм
2003-09-21 13:35
2003.10.09
dbgrid