Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.01 c
3-27414
NAlexey
2003-09-18 08:53
2003.10.09
Interbase 5.0 - missing registry


1-27540
Chris
2003-09-29 13:02
2003.10.09
RegisterAsService


14-27692
Johnny Smith
2003-09-22 14:20
2003.10.09
Нарыл в локалке Терминатора - 3. Это же БРЕДДДДДДД!


1-27585
Lionzi
2003-09-29 11:32
2003.10.09
TImage, как программно изменить значение в инспекторе объектов


1-27451
Max2003
2003-09-26 19:39
2003.10.09
точка или запятая





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский