Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Внизif Value = True then Найти похожие ветки
← →
Piter © (2009-12-22 19:04) [80]не говоря уже о том, что мой вариант легко расширяем, допустим, на случай:
TIconType = (itSmall, itBig, itVeryBig);
← →
Кто б сомневался © (2009-12-22 19:13) [81]
> Кто б сомневался © (22.12.09 18:43) [72]
> Я знаю, но там где два значения, удобнее и практичнее использовать
> boolean
>
> твой вариант:
>
> GET_LARGE_ICON = true;
> GET_SMALL_ICON = false;
>
> мой вариант:
>
> TIconType = (itSmall, itBig);
>
> чем твой вариант удобнее, поясни пожалуйста?
>
> насчет практичности - что ты имел
в виду? И то и другое в памяти занимает 1 байт (если ты про это).
Вариант в boolean в функциях используется намного чаще чем в enum типами. в API в VCL - да собственно везде.
Для меня это удобнее
1. Не нужно объявлять при написании функции ничего
2. Не усложняется код в теле функции
3. При работе с функцией, не нужно искать enum тип, обычно приходится жать ctrl + lmb - чтобы посмотреть что там за типы.
4. Не усложняется код, представь если будет куча Enum типов по 2 значения, все б сильно матерились тогда.
← →
RWolf © (2009-12-22 19:14) [82][72][79]
Паскаль — язык со строгой типизацией; раз она есть — надо использовать её преимущества, тут и спорить не о чем.
← →
RWolf © (2009-12-22 19:17) [83]
Кто б сомневался © (22.12.09 19:13) [81]
> GET_LARGE_ICON = true;
> GET_SMALL_ICON = false;
Любую из таких констант можно передать в любую из функций с параметром boolean — а это потенциальные баги.
TIconType из [79] можно передать только в функцию, которая этот тип принимает.
← →
Кто б сомневался © (2009-12-22 19:18) [84]
> Любую из таких констант можно передать в любую из функций
Ну дык ноги плохому танцору мешают :)
Вобще такие вещи всегда локально объявлены.
← →
Piter © (2009-12-22 19:57) [85]Кто б сомневался, судя по всему тут спорить бесполезно. Попробуй у кого-нибудь из delphi профессионалов, кого ты уважаешь, спросить - как будет правильнее на константах или на перечисляемых типах.
← →
Кто б сомневался © (2009-12-22 20:04) [86]
> Попробуй у кого-нибудь из delphi профессионалов, кого ты
> уважаешь, спросить - как будет правильнее на константах
> или на перечисляемых типах.
Что значит "правильнее"? и так и так правильно.
Просто вспомни часто ли ты встречал в функциях enum тип из двух значений, и вспомни как часто встречаются boolean в любых функциях будь то win API или VCL или еще что-то . Вот это и будет ответ.
А это просто надстройка над boolean - для более удобного чтения.
← →
grammar-nazi (2009-12-22 20:08) [87]
> RWolf © (22.12.09 18:58) [78]
>
> Лучше всё же так:
> procedure TfrxEngineOptions.SetSilentMode(Mode: TSilentMode);
>
> begin
> FSilentMode := Mode;
> end;
нет, не лучше. SetSilentMode(Mode: Boolean) разрешает установить один из двух режимов, SetSilentMode(Mode: TSilentMode) разрешает установить один из (High(TSilentMode) - Low(TSilentMode) + 1) режимов.
← →
Piter © (2009-12-22 21:16) [88]Кто б сомневался © (22.12.09 20:04) [86]
Что значит "правильнее"?
то, что вышеописанный уважаемый тобой гуру, посчитает использовать. То есть, чтобы он использовал в такой-то ситации.
← →
Virgo_Style © (2009-12-22 21:50) [89]
> SetSilentMode(Mode: TSilentMode) разрешает установить один
> из (High(TSilentMode) - Low(TSilentMode) + 1) режимов.
А уж TSilentModes: set of TSilentMode вообще позволяет творить чудеса.
Но это все хорошо при условии, что нужны куча режимов или чудеса.
"Каждому овощу - свой фрукт" - кажется, так говорит кто-то из гуру? ;)
← →
oxffff © (2009-12-22 22:35) [90]А если подумать и рассмотреть такой вариант.
function True:integer;
begin
result:=15;
end;
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
var a:integer;
begin
a:=15;
if a=true then showmessage("GOOD");
end;
← →
oxffff © (2009-12-22 22:45) [91]Технически можно сделать так.
Но Delphi 2010 это не хавает.
mytype=record
b:integer;
class operator Equal(a: mytype; b: boolean) : Boolean;
end;
procedure TForm4.FormCreate(Sender: TObject);
var a:mytype;
begin
if a=True then showmessage("Stuff");
end;
← →
oxffff © (2009-12-22 22:47) [92]
> Но Delphi 2010 это не хавает.
Собственно это проблемы Delphi. :)
← →
Rouse_ © (2009-12-23 01:34) [93]
> А если подумать и рассмотреть такой вариант.
>
> function True:integer;
> begin
> result:=15;
> end;
технически можно сделать и так:
#define TRUE = FALSE
#define TRUE (!FALSE)
#define FALSE (!TRUE)
#if !defined(FALSE) || FALSE != 0
#define FALSE 0
#endif
#defineTRUE (1==1)
но такая фигня получиться :)
← →
Германн © (2009-12-23 01:43) [94]
> Rouse_ © (23.12.09 01:34) [93]
Извращенец высшего класса получится! (Без мягкого знака :)
← →
Дмитрий Белькевич (2009-12-23 02:32) [95]#define TRUE (Math.random() > 0.5)
#define FALSE (Math.random() < 0.5)
← →
Джо © (2009-12-23 02:40) [96]Какой же бессмысленный и беспощадный этот цэпэпэ! :)
← →
Аноним © (2009-12-23 02:45) [97]
> StriderMan © (22.12.09 12:38) [11]
шикарно
а зачем пост Piter`а то удалили?
← →
Аноним © (2009-12-23 02:50) [98]
> Тут раз в три месяца выплывает очередной правдоруб со своими
> представлениями что хотел сказать автор, на что автору кода
> обычно дефекабельно...
зато как фекабельно остальным
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.008 c