Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

О провилах хорошего тона в программировании.   Найти похожие ветки 

 
KSergey ©   (2004-04-07 12:25) [40]

> [32] Игорь Шевченко ©   (07.04.04 12:09)
> Справедливо говорят.

Не в плане спора, а из любопытства: приведите свой.


 
KSergey ©   (2004-04-07 12:25) [40]

> [32] Игорь Шевченко ©   (07.04.04 12:09)
> Справедливо говорят.

Не в плане спора, а из любопытства: приведите свой.


 
Style ©   (2004-04-07 12:25) [41]

>>>Есть предложения какие ключевые слова использовать?

moyaperemennaja

Можно перевести сначала с транслита на русский, затем с русского на английский и каждое слово написать с большой буквы :)))


 
Style ©   (2004-04-07 12:25) [41]

>>>Есть предложения какие ключевые слова использовать?

moyaperemennaja

Можно перевести сначала с транслита на русский, затем с русского на английский и каждое слово написать с большой буквы :)))


 
Игорь Шевченко ©   (2004-04-07 12:29) [42]

zzet ©   (07.04.04 12:03)

Я только одного не понимаю - зачем ламерством гордиться ?


 
Игорь Шевченко ©   (2004-04-07 12:29) [42]

zzet ©   (07.04.04 12:03)

Я только одного не понимаю - зачем ламерством гордиться ?


 
Rouse_ ©   (2004-04-07 12:29) [43]

Юрий Зотов однажды сказал замечательную фразу:
"Ё-мае, я то думаю - чего у меня в проге ошибки, оказывается я перед begin отступы не делаю :)"

Стандарт ИМХО, конечно нужен - а стандартом я считаю VCL...


 
Rouse_ ©   (2004-04-07 12:29) [43]

Юрий Зотов однажды сказал замечательную фразу:
"Ё-мае, я то думаю - чего у меня в проге ошибки, оказывается я перед begin отступы не делаю :)"

Стандарт ИМХО, конечно нужен - а стандартом я считаю VCL...


 
Сергей Суровцев ©   (2004-04-07 12:31) [44]

Есть понятие читаемости кода. Как и понятие читаемости почерка. Этого вполне достаточно. Естественно если есть переменная, нужно при объявлении описать для чего она. Но заставлять расставлять пробелы - это уже глупость ибо мешает человеку работать максимально эффективно. Другой вопрос - что, скажем begin и end одного блока должны иметь равные отступы и т.д. Но если все по два, да в сложном логическом блоке... На мой взгляд коментарии и равные отступы решают 90% проблем читаемости. Ну и еще желательно отсутствие длинных переменных с разницей в один символ. Остальное на усмотрение исполнителя.

>serge35   (07.04.04 10:58) [3]
>Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. >Код состоит из одной строки - вызов функции round.

Когда нужно быстро перенести проект на другую платформу удобнее именно так, особенно если нужно поддерживать оба варианта. А уж если и скриптовый язык используется с таким же синтаксисом, то и жизненно необходимо. Первое, что мы сделали, перейдя с Клиппера - полностью воссоздали его библиотеку строковых ф-й и перенесли большинство текстов почти без изменений. Сберегли кучу времени и нервов.


 
Сергей Суровцев ©   (2004-04-07 12:31) [44]

Есть понятие читаемости кода. Как и понятие читаемости почерка. Этого вполне достаточно. Естественно если есть переменная, нужно при объявлении описать для чего она. Но заставлять расставлять пробелы - это уже глупость ибо мешает человеку работать максимально эффективно. Другой вопрос - что, скажем begin и end одного блока должны иметь равные отступы и т.д. Но если все по два, да в сложном логическом блоке... На мой взгляд коментарии и равные отступы решают 90% проблем читаемости. Ну и еще желательно отсутствие длинных переменных с разницей в один символ. Остальное на усмотрение исполнителя.

>serge35   (07.04.04 10:58) [3]
>Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. >Код состоит из одной строки - вызов функции round.

Когда нужно быстро перенести проект на другую платформу удобнее именно так, особенно если нужно поддерживать оба варианта. А уж если и скриптовый язык используется с таким же синтаксисом, то и жизненно необходимо. Первое, что мы сделали, перейдя с Клиппера - полностью воссоздали его библиотеку строковых ф-й и перенесли большинство текстов почти без изменений. Сберегли кучу времени и нервов.


 
Игорь Шевченко ©   (2004-04-07 12:31) [45]

KSergey ©   (07.04.04 12:25)

В анкете ссылочка есть


 
Игорь Шевченко ©   (2004-04-07 12:31) [45]

KSergey ©   (07.04.04 12:25)

В анкете ссылочка есть


 
blackman ©   (2004-04-07 12:32) [46]

>взялся собрать "свод законов" о правилах хорошего тона в программировании
Никто не возьмется его написать :)
Что ни программист, то новый стандарт.


 
blackman ©   (2004-04-07 12:32) [46]

>взялся собрать "свод законов" о правилах хорошего тона в программировании
Никто не возьмется его написать :)
Что ни программист, то новый стандарт.


 
zzet ©   (2004-04-07 12:33) [47]

>[42] Игорь Шевченко ©   (07.04.04 12:29)

Возможно мы друг друга непоняли.


 
zzet ©   (2004-04-07 12:33) [47]

>[42] Игорь Шевченко ©   (07.04.04 12:29)

Возможно мы друг друга непоняли.


 
Style ©   (2004-04-07 12:33) [48]

>>>>Стандарт ИМХО, конечно нужен - а стандартом я считаю VCL...

Вот она ключевая фраза. Стандартом нужно считать то как пишет сам Borland.


 
Style ©   (2004-04-07 12:33) [48]

>>>>Стандарт ИМХО, конечно нужен - а стандартом я считаю VCL...

Вот она ключевая фраза. Стандартом нужно считать то как пишет сам Borland.


 
SoftX   (2004-04-07 12:34) [49]

>>NAlexey ©   (07.04.04 12:10) [34]
>>>SoftX   (07.04.04 12:06) [31]
>>Мдя... С самого начала все ясно: ReadCarrentSid...

Ну очепятался. Когда писал написал сразу имя функции написал сразу а потом Ctrl+C Ctrl+V и пошло... В принципе код локальный так что такие ошибки заметить трудно, компилятор говорит что все нормально, а у нас самое главное не красивый код, а само приложение(быстро и функционально сделать).

Игорь Шевченко ©   (07.04.04 12:09) [32]
Мне это интересно, можете прокомментировать, где у меня тяжесть в коде? Если сочту ваши доводы разумными, то исправлюсь. Можете дать пример своей процедуры?


 
SoftX   (2004-04-07 12:34) [49]

>>NAlexey ©   (07.04.04 12:10) [34]
>>>SoftX   (07.04.04 12:06) [31]
>>Мдя... С самого начала все ясно: ReadCarrentSid...

Ну очепятался. Когда писал написал сразу имя функции написал сразу а потом Ctrl+C Ctrl+V и пошло... В принципе код локальный так что такие ошибки заметить трудно, компилятор говорит что все нормально, а у нас самое главное не красивый код, а само приложение(быстро и функционально сделать).

Игорь Шевченко ©   (07.04.04 12:09) [32]
Мне это интересно, можете прокомментировать, где у меня тяжесть в коде? Если сочту ваши доводы разумными, то исправлюсь. Можете дать пример своей процедуры?


 
Nikolay M. ©   (2004-04-07 12:35) [50]


> Никто не возьмется его написать :)

http://delphi.vitpc.com/asp/viewitem.asp?UrlItem=/article/coderules.htm


 
Nikolay M. ©   (2004-04-07 12:35) [50]


> Никто не возьмется его написать :)

http://delphi.vitpc.com/asp/viewitem.asp?UrlItem=/article/coderules.htm


 
Alex Konshin ©   (2004-04-07 12:35) [51]

SoftX   (07.04.04 12:06) [31]

Без обид?

Я бы оценил такой стиль как плохой, потому как:
1. Нет защиты от дурака: не проверяются ни входные данные, ни результаты выполнения функций.
2. Не умеешь использовать try..finally когда он необходим.
3. Нет обработки ошибок и их удобоваримой диагностики.

Это, так сказать, претензии по общему стилю, независящие от языка.
Если учесть, что это Delphi, то можно было бы избавится от ненужной писанины, если воспользоваться with...do, например, MainData.UserQuery мозолит глаза. И видно твое незнание ньюансов использования типа String.

Обычно еще желательно выносить названия полей и т.п. константы вовне, чтобы потом было проще их поменять, если это потребуется.

Я даже не придираюсь к орфографии.


 
Alex Konshin ©   (2004-04-07 12:35) [51]

SoftX   (07.04.04 12:06) [31]

Без обид?

Я бы оценил такой стиль как плохой, потому как:
1. Нет защиты от дурака: не проверяются ни входные данные, ни результаты выполнения функций.
2. Не умеешь использовать try..finally когда он необходим.
3. Нет обработки ошибок и их удобоваримой диагностики.

Это, так сказать, претензии по общему стилю, независящие от языка.
Если учесть, что это Delphi, то можно было бы избавится от ненужной писанины, если воспользоваться with...do, например, MainData.UserQuery мозолит глаза. И видно твое незнание ньюансов использования типа String.

Обычно еще желательно выносить названия полей и т.п. константы вовне, чтобы потом было проще их поменять, если это потребуется.

Я даже не придираюсь к орфографии.


 
NAlexey ©   (2004-04-07 12:37) [52]

Справедливо было сказано, что форматировние исходного кода, значительно экономит время при работе нескольких человек над одним проектом. Если код удобочитаем, и содержит комментарии, на ознакомление с ним уходит минимум времени. Как следствие повышается скорость разработки, экономия времени и денег. А стандарты уже давно есть, и как правильно сказал - Rouse_ ©   (07.04.04 12:29) [43] - можно посмотреть в VCL.


 
NAlexey ©   (2004-04-07 12:37) [52]

Справедливо было сказано, что форматировние исходного кода, значительно экономит время при работе нескольких человек над одним проектом. Если код удобочитаем, и содержит комментарии, на ознакомление с ним уходит минимум времени. Как следствие повышается скорость разработки, экономия времени и денег. А стандарты уже давно есть, и как правильно сказал - Rouse_ ©   (07.04.04 12:29) [43] - можно посмотреть в VCL.


 
Style ©   (2004-04-07 12:37) [53]

SoftX а зачем на каждой строчке при объявлении переменных var писать??


 
Style ©   (2004-04-07 12:37) [53]

SoftX а зачем на каждой строчке при объявлении переменных var писать??


 
panov ©   (2004-04-07 12:37) [54]

>mfender ©   (07.04.04 12:23) [38]
хотя бы тот же банальный 2 пробела перед begin

2 пробела не перед begin вставляются, а в строке, следующей после begin:


function MyFuncDelta: Boolean;
begin
 if a>b then
 begin
   Result := a - b;
 end
 else
 begin
   Result := b - a;
 end;
end;


-)


 
panov ©   (2004-04-07 12:37) [54]

>mfender ©   (07.04.04 12:23) [38]
хотя бы тот же банальный 2 пробела перед begin

2 пробела не перед begin вставляются, а в строке, следующей после begin:


function MyFuncDelta: Boolean;
begin
 if a>b then
 begin
   Result := a - b;
 end
 else
 begin
   Result := b - a;
 end;
end;


-)


 
Alex Konshin ©   (2004-04-07 12:39) [55]

Да и мое замечание о том, что я поубывав бы тех, кто не пишет комментарии, к тебе тоже относится.


 
Alex Konshin ©   (2004-04-07 12:39) [55]

Да и мое замечание о том, что я поубывав бы тех, кто не пишет комментарии, к тебе тоже относится.


 
Alex Konshin ©   (2004-04-07 12:41) [56]

Alex Konshin ©   (07.04.04 12:39) [55]
Хм... Впредь надо вставлять ссылку на цитату, а то как-то неудобно получилось :)


 
Alex Konshin ©   (2004-04-07 12:41) [56]

Alex Konshin ©   (07.04.04 12:39) [55]
Хм... Впредь надо вставлять ссылку на цитату, а то как-то неудобно получилось :)


 
Style ©   (2004-04-07 12:44) [57]

//2 пробела не перед begin

не ну без этого совсем нельзя.
Если без разделений то Блоки  begin end; становятся вообще не читаемыми, а если  у вас целая связка if begin end else begin end; затем циклы и case в нутри каждого блока, то если не ставить перед каждым новым блоком два пробела то с таким кодом без пива не разобораться, а на работе пиво нельзя пить, поэтому нельзя с таким кодом разбираться ИМХО! :)

Вообще рекомендуют после каждого end; писать комментарий к чему он пренадлежит т.е.

if (a>b) then
begin
...
end
else
begin
...
end; //if a>b


 
Style ©   (2004-04-07 12:44) [57]

//2 пробела не перед begin

не ну без этого совсем нельзя.
Если без разделений то Блоки  begin end; становятся вообще не читаемыми, а если  у вас целая связка if begin end else begin end; затем циклы и case в нутри каждого блока, то если не ставить перед каждым новым блоком два пробела то с таким кодом без пива не разобораться, а на работе пиво нельзя пить, поэтому нельзя с таким кодом разбираться ИМХО! :)

Вообще рекомендуют после каждого end; писать комментарий к чему он пренадлежит т.е.

if (a>b) then
begin
...
end
else
begin
...
end; //if a>b


 
Anatoly Podgoretsky ©   (2004-04-07 12:50) [58]

SoftX   (07.04.04 12:34) [49]
Трудно читать, а остальное связано с этим. Какое оформление, такой и код. Вот Alex Konshin ©   (07.04.04 12:35) [51] рискнул это прочитать и вникнуть и сразу сделал некоторые самые первые замечания.


 
Anatoly Podgoretsky ©   (2004-04-07 12:50) [58]

SoftX   (07.04.04 12:34) [49]
Трудно читать, а остальное связано с этим. Какое оформление, такой и код. Вот Alex Konshin ©   (07.04.04 12:35) [51] рискнул это прочитать и вникнуть и сразу сделал некоторые самые первые замечания.


 
panov ©   (2004-04-07 12:51) [59]

>Style ©   (07.04.04 12:44) [57]

Внутри каждого блока - отступ на 2 символа. И вложенный блок тоже с отступом соответственно.


 
panov ©   (2004-04-07 12:51) [59]

>Style ©   (07.04.04 12:44) [57]

Внутри каждого блока - отступ на 2 символа. И вложенный блок тоже с отступом соответственно.


 
Agent13 ©   (2004-04-07 12:53) [60]


> KSergey ©   (07.04.04 12:25) [40]
> > [32] Игорь Шевченко ©   (07.04.04 12:09)
> > Справедливо говорят.
>
> Не в плане спора, а из любопытства: приведите свой.

Присоединяюсь. Здесь на форуме мастера очень часто критикуют чей-то код, а примера как НАДО писать я так и не видел. Очень хотелось бы посмотреть.


 
Agent13 ©   (2004-04-07 12:53) [60]


> KSergey ©   (07.04.04 12:25) [40]
> > [32] Игорь Шевченко ©   (07.04.04 12:09)
> > Справедливо говорят.
>
> Не в плане спора, а из любопытства: приведите свой.

Присоединяюсь. Здесь на форуме мастера очень часто критикуют чей-то код, а примера как НАДО писать я так и не видел. Очень хотелось бы посмотреть.


 
Игорь Шевченко ©   (2004-04-07 12:55) [61]

panov ©   (07.04.04 12:37)

Если один оператор обрамлять в  begin end получается зашумленный код. Читается медленнее.


 
Игорь Шевченко ©   (2004-04-07 12:55) [61]

panov ©   (07.04.04 12:37)

Если один оператор обрамлять в  begin end получается зашумленный код. Читается медленнее.


 
panov ©   (2004-04-07 12:57) [62]

>Игорь Шевченко ©   (07.04.04 12:55) [61]

panov ©   (07.04.04 12:37)

Если один оператор обрамлять в  begin end получается зашумленный код. Читается медленнее.


Это просто пример с отступами. Естественно в блок нужно оформлять не один операитор.


 
panov ©   (2004-04-07 12:57) [62]

>Игорь Шевченко ©   (07.04.04 12:55) [61]

panov ©   (07.04.04 12:37)

Если один оператор обрамлять в  begin end получается зашумленный код. Читается медленнее.


Это просто пример с отступами. Естественно в блок нужно оформлять не один операитор.


 
panov ©   (2004-04-07 13:04) [63]

Вот как я оформил бы код, не вникая в суть:


function ReadCurrentSid(var UserInfo:TUserVariables): boolean;
var
 Username: String;
 CUsername: longword;
 TSid, Sid:PSID;
 Csid: longword;
 Domain: String;
 Cdomain: longword;
 PUse: SID_NAME_USE;
 BlobStream: TStream;
 i: integer;
 found: boolean;
begin
//получаем текущий SID пользователя
CUsername := 0;
GetUserName(nil, CUsername);
SetLength(Username, CUsername);
GetUserName(@Username[1], CUsername);
//
Csid := 0;
Cdomain := 0;
LookupAccountName(nil, @Username[1], nil, Csid, nil, Cdomain, PUse);
SetLength(Domain, cDomain);
GetMem(SID, cSID);
LookupAccountName(nil, @Username[1], Sid, Csid, @Domain[1], Cdomain, PUse);
//создаем запрос на пользователя
MainData.UserQuery.Active := false;
MainData.UserQuery.SQL.Clear;

MainData.UserQuery.SQL.Add("select * from faxusers;");
MainData.UserQuery.Active := True;
//ищем нужный SID
found := False;
MainData.UserQuery.first;
if (MainData.UserQuery.RecordCount>0) then
begin
  while (not MainData.UserQuery.Eof) and (found=false) do
  begin
    BlobStream:=MainData.UserQuery.CreateBlobStream(MainData.UserQuery.FieldByName("winsid"), bmRead);
    if BlobStream.Size=CSid then
    begin
      found:=True;
      GetMem(TSid,BlobStream.Size);
      BlobStream.ReadBuffer(PByteArray(TSid)[0], BlobStream.Size);
      for i:=0 to Csid-1 do
      begin
        if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then found:=false;
      end;
      FreeMem(TSid);
    end;
    BlobStream.Free;
    if found=false then MainData.UserQuery.Next;
  end;
end;

//получам данные если запрос с данной информацией найден
if (found=True) then
begin
  UserInfo.LOGIN := MainData.UserQuery.FieldByName("LOGIN").AsString;
  UserInfo.USERNAME := MainData.UserQuery.FieldByName("USERNAME").AsString;
  UserInfo.CANDELETEFAX := MainData.UserQuery.FieldByName("CANDELETEFAX").AsInteger;
  UserInfo.IMMORTAL := MainData.UserQuery.FieldByName("IMMORTAL").AsInteger;
  UserInfo.CANGETFAX := MainData.UserQuery.FieldByName("CANGETFAX").AsInteger;
  UserInfo.ADMINISTRATOR := MainData.UserQuery.FieldByName("ADMINISTRATOR").AsInteger;
  //
  ReadCarrentSid := True;
end
else ReadCarrentSid := false;
//
Username := "";
Domain := "";
FreeMem(Sid);
//закрываем запрос
MainData.UserQuery.Active := false;
MainData.UserQuery.SQL.Clear;
end;


 
panov ©   (2004-04-07 13:04) [63]

Вот как я оформил бы код, не вникая в суть:


function ReadCurrentSid(var UserInfo:TUserVariables): boolean;
var
 Username: String;
 CUsername: longword;
 TSid, Sid:PSID;
 Csid: longword;
 Domain: String;
 Cdomain: longword;
 PUse: SID_NAME_USE;
 BlobStream: TStream;
 i: integer;
 found: boolean;
begin
//получаем текущий SID пользователя
CUsername := 0;
GetUserName(nil, CUsername);
SetLength(Username, CUsername);
GetUserName(@Username[1], CUsername);
//
Csid := 0;
Cdomain := 0;
LookupAccountName(nil, @Username[1], nil, Csid, nil, Cdomain, PUse);
SetLength(Domain, cDomain);
GetMem(SID, cSID);
LookupAccountName(nil, @Username[1], Sid, Csid, @Domain[1], Cdomain, PUse);
//создаем запрос на пользователя
MainData.UserQuery.Active := false;
MainData.UserQuery.SQL.Clear;

MainData.UserQuery.SQL.Add("select * from faxusers;");
MainData.UserQuery.Active := True;
//ищем нужный SID
found := False;
MainData.UserQuery.first;
if (MainData.UserQuery.RecordCount>0) then
begin
  while (not MainData.UserQuery.Eof) and (found=false) do
  begin
    BlobStream:=MainData.UserQuery.CreateBlobStream(MainData.UserQuery.FieldByName("winsid"), bmRead);
    if BlobStream.Size=CSid then
    begin
      found:=True;
      GetMem(TSid,BlobStream.Size);
      BlobStream.ReadBuffer(PByteArray(TSid)[0], BlobStream.Size);
      for i:=0 to Csid-1 do
      begin
        if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then found:=false;
      end;
      FreeMem(TSid);
    end;
    BlobStream.Free;
    if found=false then MainData.UserQuery.Next;
  end;
end;

//получам данные если запрос с данной информацией найден
if (found=True) then
begin
  UserInfo.LOGIN := MainData.UserQuery.FieldByName("LOGIN").AsString;
  UserInfo.USERNAME := MainData.UserQuery.FieldByName("USERNAME").AsString;
  UserInfo.CANDELETEFAX := MainData.UserQuery.FieldByName("CANDELETEFAX").AsInteger;
  UserInfo.IMMORTAL := MainData.UserQuery.FieldByName("IMMORTAL").AsInteger;
  UserInfo.CANGETFAX := MainData.UserQuery.FieldByName("CANGETFAX").AsInteger;
  UserInfo.ADMINISTRATOR := MainData.UserQuery.FieldByName("ADMINISTRATOR").AsInteger;
  //
  ReadCarrentSid := True;
end
else ReadCarrentSid := false;
//
Username := "";
Domain := "";
FreeMem(Sid);
//закрываем запрос
MainData.UserQuery.Active := false;
MainData.UserQuery.SQL.Clear;
end;


 
panov ©   (2004-04-07 13:04) [64]

К сожалению, в первом блоке пробелы куда-то исчезли...


 
panov ©   (2004-04-07 13:04) [64]

К сожалению, в первом блоке пробелы куда-то исчезли...


 
Игорь Шевченко ©   (2004-04-07 13:06) [65]


> if (found=True) then


if found then


> if found=false then MainData.UserQuery.Next;


if not found then
 MainData.UserQuery.Next

Почему на двух строчках: чтобы можно было остановиться на конкретной строчке отладчиком.


 
Игорь Шевченко ©   (2004-04-07 13:06) [65]


> if (found=True) then


if found then


> if found=false then MainData.UserQuery.Next;


if not found then
 MainData.UserQuery.Next

Почему на двух строчках: чтобы можно было остановиться на конкретной строчке отладчиком.


 
Style ©   (2004-04-07 13:08) [66]

Игорь Шевченко ©  
зато если возможно что в дальнейшем я сюда что-нить добавлю
лучше сразу написать begin end;


 
Style ©   (2004-04-07 13:08) [66]

Игорь Шевченко ©  
зато если возможно что в дальнейшем я сюда что-нить добавлю
лучше сразу написать begin end;


 
stone ©   (2004-04-07 13:12) [67]


> GetMem(TSid,BlobStream.Size);
>       BlobStream.ReadBuffer(PByteArray(TSid)[0], BlobStream.Size);
>       for i:=0 to Csid-1 do
>       begin
>         if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then
> found:=false;
>       end;
>       FreeMem(TSid);


не хватает try finally
не понятен цикл, т.е. получается found может меняться на True False несколько раз. Значит надо или сразу брать последнее значение i или прерывать цикл при выполнении определенного условия


 
stone ©   (2004-04-07 13:12) [67]


> GetMem(TSid,BlobStream.Size);
>       BlobStream.ReadBuffer(PByteArray(TSid)[0], BlobStream.Size);
>       for i:=0 to Csid-1 do
>       begin
>         if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then
> found:=false;
>       end;
>       FreeMem(TSid);


не хватает try finally
не понятен цикл, т.е. получается found может меняться на True False несколько раз. Значит надо или сразу брать последнее значение i или прерывать цикл при выполнении определенного условия


 
int64   (2004-04-07 13:13) [68]

panov ©   (07.04.04 13:04) [63]

Или так, тоже не вникая:

GetCurentSID;
OpenQuery;
if FindNeedSID then
GetData;
CloseQuery;


 
int64   (2004-04-07 13:13) [68]

panov ©   (07.04.04 13:04) [63]

Или так, тоже не вникая:

GetCurentSID;
OpenQuery;
if FindNeedSID then
GetData;
CloseQuery;


 
Игорь Шевченко ©   (2004-04-07 13:13) [69]

Style ©   (07.04.04 13:08)


> лучше сразу написать begin end;


Лучше, все-таки, думать. А все эти резервирования до хорошего кода не доводят


 
Игорь Шевченко ©   (2004-04-07 13:13) [69]

Style ©   (07.04.04 13:08)


> лучше сразу написать begin end;


Лучше, все-таки, думать. А все эти резервирования до хорошего кода не доводят


 
Rouse_ ©   (2004-04-07 13:15) [70]

Я бы оформил как и Александр, только с небольшим изменением

//создаем запрос на пользователя
with MainData.UserQuery do
begin
 Active := false;
 SQL.Clear;
 SQL.Add("select * from faxusers;");
 UserQuery.Active := True;
...
   BlobStream.Free;
   if not Found then Next;
 end;
end;
end;

Тоже относится и к UserInfo.LOGIN и т.д.


 
Rouse_ ©   (2004-04-07 13:15) [70]

Я бы оформил как и Александр, только с небольшим изменением

//создаем запрос на пользователя
with MainData.UserQuery do
begin
 Active := false;
 SQL.Clear;
 SQL.Add("select * from faxusers;");
 UserQuery.Active := True;
...
   BlobStream.Free;
   if not Found then Next;
 end;
end;
end;

Тоже относится и к UserInfo.LOGIN и т.д.


 
panov ©   (2004-04-07 13:15) [71]

>int64   (07.04.04 13:13) [68]

if FindNeedSID then
GetData;


В таком случае код получается разорванным и читается хуже, чем
if FindNeedSID then GetData;


 
panov ©   (2004-04-07 13:15) [71]

>int64   (07.04.04 13:13) [68]

if FindNeedSID then
GetData;


В таком случае код получается разорванным и читается хуже, чем
if FindNeedSID then GetData;


 
panov ©   (2004-04-07 13:15) [72]

Удалено модератором
Примечание: Дубль


 
panov ©   (2004-04-07 13:15) [72]

Удалено модератором
Примечание: Дубль


 
Игорь Шевченко ©   (2004-04-07 13:16) [73]

Agent13 ©   (07.04.04 12:53)

Я не выставляю свой код как образец того, как надо писать всем.

Образец находится в Program Files\Borland\Delphi\Source\Vcl

Образец моего кода: http://www.schevchenko.net.ru/


 
Игорь Шевченко ©   (2004-04-07 13:16) [73]

Agent13 ©   (07.04.04 12:53)

Я не выставляю свой код как образец того, как надо писать всем.

Образец находится в Program Files\Borland\Delphi\Source\Vcl

Образец моего кода: http://www.schevchenko.net.ru/


 
Anatoly Podgoretsky ©   (2004-04-07 13:17) [74]

panov ©   (07.04.04 13:04) [64]
Совет, это особенность форума, один пробел съедается, поэтому надо писать так.

begin
...xx
...begin
.....xxx
...end
end

то есть добавлять на первом уровне один пробел


 
Anatoly Podgoretsky ©   (2004-04-07 13:17) [74]

panov ©   (07.04.04 13:04) [64]
Совет, это особенность форума, один пробел съедается, поэтому надо писать так.

begin
...xx
...begin
.....xxx
...end
end

то есть добавлять на первом уровне один пробел


 
panov ©   (2004-04-07 13:17) [75]

>Rouse_ ©   (07.04.04 13:15) [70]

Я стараюсь как можно меньше пользоваться оператором with во избежание коллизий в названиях методов.
Такие ошибки трудно обнаруживаются.


 
panov ©   (2004-04-07 13:17) [75]

>Rouse_ ©   (07.04.04 13:15) [70]

Я стараюсь как можно меньше пользоваться оператором with во избежание коллизий в названиях методов.
Такие ошибки трудно обнаруживаются.


 
Игорь Шевченко ©   (2004-04-07 13:18) [76]

Agent13 ©   (07.04.04 12:53)

P.S. Любая конструктивная критика принимается :)


 
Игорь Шевченко ©   (2004-04-07 13:18) [76]

Agent13 ©   (07.04.04 12:53)

P.S. Любая конструктивная критика принимается :)


 
panov ©   (2004-04-07 13:18) [77]

>Anatoly Podgoretsky ©   (07.04.04 13:17) [74]

Век живи, век учись-)


 
panov ©   (2004-04-07 13:18) [77]

>Anatoly Podgoretsky ©   (07.04.04 13:17) [74]

Век живи, век учись-)


 
Alex Konshin ©   (2004-04-07 13:19) [78]

Rouse_ ©   (07.04.04 13:15) [70]
Про try...finally забываете.
Лично у меня всегда как правило, когда что-то берется на время и тут же отдается в той же функции, сразу пишу try...finally. Это почти никогда не бывает лишним. Я бы и всем так советовал.


 
Alex Konshin ©   (2004-04-07 13:19) [78]

Rouse_ ©   (07.04.04 13:15) [70]
Про try...finally забываете.
Лично у меня всегда как правило, когда что-то берется на время и тут же отдается в той же функции, сразу пишу try...finally. Это почти никогда не бывает лишним. Я бы и всем так советовал.


 
int64   (2004-04-07 13:20) [79]

panov ©   (07.04.04 13:15) [71]
Нормально. Пробел только при посте схавался.


 
int64   (2004-04-07 13:20) [79]

panov ©   (07.04.04 13:15) [71]
Нормально. Пробел только при посте схавался.


 
Rouse_ ©   (2004-04-07 13:23) [80]

> [78] Alex Konshin ©   (07.04.04 13:19)
Ну так я ж не вникал - просто указал на излишнюю захламленность кода, которую обычно убираю при помощи with...


 
Rouse_ ©   (2004-04-07 13:23) [80]

> [78] Alex Konshin ©   (07.04.04 13:19)
Ну так я ж не вникал - просто указал на излишнюю захламленность кода, которую обычно убираю при помощи with...



Страницы: 1 2 3 4 5 6 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.82 MB
Время: 0.062 c
1-1082446308
V-Isa
2004-04-20 11:31
2004.05.09
JPEG and GIF -->> TBitMap


14-1081973550
Ломброзо
2004-04-15 00:12
2004.05.09
А хто пишет "Хокку для души"??


1-1082484754
s666
2004-04-20 22:12
2004.05.09
Как совместить два типа PChar и String


3-1081882753
fatman
2004-04-13 22:59
2004.05.09
совместная работа с БД MS ACCESS двух приложений


1-1082657485
K@rt
2004-04-22 22:11
2004.05.09
Список окон





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