Форум: "Потрепаться";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
ВнизСтиль написания. Найти похожие ветки
← →
MVova (2002-06-21 16:50) [0]Скачал компонентик и увител такой кусок кода.
Как вам стиль написания?
if fActive then begin
if Assigned(fOleContainer) then begin
if Assigned(fDataLink) then begin
if Assigned(fDataLink.Field) then begin
if fDataLink.Active then begin
if fDataLink.Field.IsBlob then begin
if not fDataLink.Field.IsNull then begin
if not fOleAutoDisplay then begin
saLoadOleFromDataSource;
end;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;
end;
end;
end;
end;
end;
end;
← →
vuk (2002-06-21 16:56) [1]Икебанисто... :o)
← →
Игорь Шевченко (2002-06-21 16:57) [2]Сразу видно - эстет писал :-)
← →
DeMoN-777 (2002-06-21 16:57) [3]Вот это да =)
← →
Виктор Щербаков (2002-06-21 16:59) [4]Правильно и красиво...
← →
PVOzerski (2002-06-21 17:09) [5]Вполне читабельно. Я бы, пожалуй, скобок begin...end меньше сделал, но ничего плохого и так не вижу. Главное - разные по смыслу действия в одну строку не попадают, а отступы организованы так, что легко найти начала и концы блоков. Насчет того, что лучше - функция Assigned или просто сравнение с nil - не знаю.
← →
Кулюкин Олег (2002-06-21 17:09) [6]Идеологически верно.
Но уж больно массивно :)
← →
Дмитрий Баранов (2002-06-21 17:18) [7]в MSDN такого полно, if (SUCCEEDED()) { ... в 20 этажей
← →
MVova (2002-06-21 17:18) [8]
> Главное - разные по смыслу действия в одну строку не попадают,
> а отступы организованы так, что легко найти начала и концы
> блоков.
if (fActive) and
(Assigned(fOleContainer)) and
(Assigned(fDataLink)) and
(Assigned(fDataLink.Field)) and
(fDataLink.Active) and
(fDataLink.Field.IsBlob) and
(not fDataLink.Field.IsNull) then
begin
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;
Неужели так хуже читается??
Хотя, на вкус и цвет .... нет.
Но всеже, в результате какой код быстрее при выполнеии???
← →
Raptorial (2002-06-21 17:18) [9]!
> Правильно и красиво...
По моему, с AND покрасивее получилось бы...
Да и работало бы быстрее!
← →
esu (2002-06-21 17:27) [10]Я бы тоже с and писал... Вот тут термин придумали "икебанисто" :) Вот не люблю я этой икебанистости. А работать будет IMHO одинаково. Ну компилироваться навернео быстрее с and.
← →
Anatoly Podgoretsky (2002-06-21 17:27) [11]еще бы скобочки убрать
← →
Виктор Щербаков (2002-06-21 17:29) [12]esu © (21.06.02 17:27)
> Ну компилироваться навернео быстрее с and.
А ты время засеки :)
4all
Конечно дело вкуса, но мне "лесенка" понравилась. Уж больно красивая.
← →
MVova (2002-06-21 17:34) [13]
> Конечно дело вкуса, но мне "лесенка" понравилась. Уж больно
> красивая.
Там страниц 10 такого, когда нажать и подержать PageDown класний мультик получается ;)
← →
Виктор Щербаков (2002-06-21 17:35) [14]MVova © (21.06.02 17:34)
Ну вот, всё впечатление испортил :(
← →
Igorek (2002-06-21 23:01) [15]Во первых надо учитывать какой режим выставлен - "complete evaluation" или "partial evaluation". Это если есть условия, корректная проверка которых возможна только при истинности других.
Если выставлен "partial evaluation" то мне кажеться, что всегда можно сбить в один if.
Но если компилить исходник будет в общем случае неизвестно кто, тогда зависимые условия надо разделять в разные if.
Ну и конечно без лишних begin-end
---
"Я ему про Фому, а он мне про Ерему"
← →
Igorek (2002-06-22 21:27) [16]Кстати можно использовать переключение данного режима компиляции прямо в коде. Тогда, вообще можно обойтись без выше приведенной конструкции.
---
"Я ему про Фому, а он мне про Ерему"
← →
JohnnyJ (2002-06-23 04:06) [17]Да, симпотно получилось, но если все сводится к одному блоку при выполнении всех условий, то проще все же так:
if fActive
and Assigned(fOleContainer)
and Assigned(fDataLink)
and Assigned(fDataLink.Field)
and fDataLink.Active
and fDataLink.Field.IsBlob
and (not fDataLink.Field.IsNull) then
begin
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;
← →
Polevi (2002-06-23 12:04) [18]гм а я обычно пишу так
result:=FALSE;
if not fActive then exit;
if not Assigned(fOleContainer) then exit;
if not Assigned(fDataLink) then exit;
if not Assigned(fDataLink.Field) then exit;
if not fDataLink.Active then exit;
if not fDataLink.Field.IsBlob then exit;
if fDataLink.Field.IsNull) then exit;
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c