Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1261517113
Petr V. Abramov
2009-12-23 00:25
2010.03.07
Книжка Шкловского


15-1261332716
Smile
2009-12-20 21:11
2010.03.07
Желающие поговорить ни о чЁм - милости прошу


15-1260399563
wl
2009-12-10 01:59
2010.03.07
Линукс - зачем?


15-1261344620
Юрий
2009-12-21 00:30
2010.03.07
С днем рождения ! 21 декабря 2009 понедельник


1-1239268291
sniknik
2009-04-09 13:11
2010.03.07
Ошибка преобразования RTF в PlainText через TRichEdit





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