Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В каких случаях как лучше писать?


newbdelphi ©   (2007-08-23 12:18:00) 

1.
а).  while mytmp <> meconst do
 begin
   ....
   ....
   if TestVar(mytmp div 2 + ...) <> 12 then Break;
   ....
   ....
 end;


б).  while mytmp <> meconst do
 begin
   ....
   ....
   if TestVar(mytmp div 2 + ...) = 12 then
   begin
     ....
     ....
   end else
     Break;
 end;


2.
а). function test1(var valint: Integer; blocklen: word): Boolean;
 begin
   Result := False;
   if blocklen <> 0 then
   begin
     Dec(valint, blocklen);
     Result := True;
   end;
 end;

б). function test1(var valint: Integer; blocklen: word): Boolean;
 begin
   if blocklen <> 0 then
   begin
     Dec(valint, blocklen);
     Result := True;
   else
     Result := False;
 end;


3.
а). ....
 ....
 if MyFuncWithBoolResult(tmp1) = False then Exit;
 ....
 ....


б). ....
 ....
 if MyFuncWithBoolResult(tmp1) then
 begin
   ....
   ....
 end;


Привел несколько примеров, в каких случаях как лучше писать? и вообще существуют ли какие-то правила по применению Exit, где оно лучше и правила применения по другим примерам?


TUser   (2007-08-24 20:46:00) [1]

> Вообще, все эти exit, Break и т.д. я считаю плохим тоном программирования, так как можно обойтись и без них :-)

Вообще-то можно обойтись даже без for, while, repeat, procedure, function, unit, interface, implementation, uses а также без begin/end, кроме как тех, которые значат собой основное "тело" программы. Вместо всего этого спокойно можно использовать label и goto. Причем все это - в рамках Паскаля.


Игорь Шевченко   (2007-08-24 11:15:00) [2]

Riply ©   (24.08.07 11:13) [12]

Знать надо совсем немного - уважать время другого программиста, который потенциально может работать с твоим кодом.


Riply   (2007-08-24 11:13:00) [3]

> [10] Игорь Шевченко ©   (24.08.07 10:58)
Спасибо.
P.S.
Это сколько же надо знать и уметь для "выкладывания кода" ? Ж)


Ega23   (2007-08-24 11:11:00) [4]


> никто "= False" не пишет!!!


Пишут.
C вариантами как-то связано. У Пашки Голубя надо уточнить. Но пример - был.


Игорь Шевченко   (2007-08-24 10:58:00) [5]

Riply ©   (23.08.07 18:45) [9]


> А что такого крамольного в этом коде, что за его "написание"
> должны последовать столь суровые меры ? :)


несоответствие имени фукнции ее поведению.
побочные эффекты от вызова функции.
Без комментариев нельзя понять, что происходит при вызове фукнции.


Riply   (2007-08-23 18:45:00) [6]

> [8] Игорь Шевченко ©   (23.08.07 15:14)
>> function test1(var valint: Integer; blocklen: word): Boolean;
>> begin
>> Result := blocklen <> 0;
>> if Result then Dec(valint, blocklen);
>> end;

>Увижу такой код в проектах - уволю программиста
Под угрозой увольнения, рискну спросить:
А что такого крамольного в этом коде, что за его "написание"
должны последовать столь суровые меры ? :)


Игорь Шевченко   (2007-08-23 15:14:00) [7]


> пункт 2 можно переписать иначе:
> function test1(var valint: Integer; blocklen: word): Boolean;
>
> begin
> Result := blocklen <> 0;
> if Result then Dec(valint, blocklen);
> end;


Увижу такой код в проектах - уволю программиста


Anatoly Podgoretsky   (2007-08-23 15:02:00) [8]

2а/б вообще не использовать вызов функции


Вася Правильный   (2007-08-23 12:45:00) [9]

я пишу как короче не в ущерб пониманию кода


iXT   (2007-08-23 12:31:00) [10]

> [0] newbdelphi   (23.08.07 12:18)

ПисАть надо изходя из задачи! Задачи не озвучены. => ПисАть не надо.


wp2   (2007-08-23 12:27:00) [11]

>if MyFuncWithBoolResult(tmp1) = False then Exit;

никто "= False" не пишет!!!
Пишут вот так:
if notMyFuncWithBoolResult(tmp1) thenExit;


wp2   (2007-08-23 12:25:00) [12]

пункт 2 можно переписать иначе:
functiontest1(var valint: Integer; blocklen: word): Boolean;
begin
Result := blocklen <> 0;
if Result then Dec(valint, blocklen);
end;


wp2   (2007-08-23 12:21:00) [13]

Вообще, все эти exit, Break и т.д. я считаю плохим тоном программирования, так как можно обойтись и без них :-)

Что касается твоих примеров, то могу лишь дать общие советы:
Если есть if then else, то после then надо помещать код, который имеет большую вероятность того, что он выполниться. (это связано с машинным кодом)


Игорь Шевченко   (2007-08-23 12:20:00) [14]

А смысл-то в чем ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо