Главная страница
    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.038 c
1-27607
Dionis
2003-09-28 17:33
2003.10.09
Как узнать месторасположение и размеры чужого окна?


3-27357
zzzrrv
2003-09-19 14:27
2003.10.09
Доступ к полям типа DATASET


14-27730
Gimer
2003-09-19 13:48
2003.10.09
Прокся


1-27582
MakNik
2003-09-29 10:39
2003.10.09
TreeView


14-27682
Romkin
2003-09-16 11:54
2003.10.09
Встреча 08.08





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский