Модераторы: THandle, bems

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> case-sensitive и Delphi 
:(
    Опции темы
THandle
Дата 28.2.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



PM   Вверх
Akella
Дата 28.2.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Цитата

Неправильно

  if A < B then begin
    DoSomething;
    DoSomethingElse;
  end else begin
    DoThis;
    DoThat;
  end;

Правильно

  if A < B then
  begin
    DoSomething;
    DoSomethingElse;
  end
  else
  begin
    DoThis;
    DoThat;
  end;

там где "правильно" эти три строки 
  end
  else
  begin

ваще не смотряться, зачем три ,если можно и красивее одной строкой

Кстати автор пишет правильно/неправильно. Ну и толку с того. А я пишу, что наоборот, так правильно:
и значительно читабельнее
Код

  if A < B then begin
    DoSomething;
    DoSomethingElse;
  end else begin
    DoThis;
    DoThat;
  end;


а те лишние строки только в глазах маячат бестолку smile

Добавлено @ 20:05
Почему так неправильно? Потому что автор той статьи так написал?
Код

for i := 0 to 10 do begin
    DoSomething; 
    DoSomethingElse;
end;//for


Добавлено @ 20:06
Нужно кагбэ "обрамить" исполняемый блок

Код


for i := 0 to 10 do begin//как бы начало блока

//исполняемый блок, заключенный в for begin and или в if begin end
    DoSomething; 
    DoSomethingElse;


end;//как бы окончание блока


Это сообщение отредактировал(а) Akella - 28.2.2009, 20:08
PM MAIL   Вверх
THandle
Дата 28.2.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Akella, мне лично так не удобно.

Основная причина:
Когда много begin..end'ов то при записи, которую я использую СРАЗУ четко видно какой end за какой begin отвечает.

Добавлено через 1 минуту и 54 секунды
Вообще религия у всех разная. Но у нас правильнее smile 
PM   Вверх
Akella
Дата 28.2.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



в моём случае прекрасно видно, что end относиться или к if, или к else

Код

  if A < B then begin
    DoSomething;
    DoSomethingElse;
  end else begin
    DoThis;
    DoThat;
  end;



а ещё меня учили
Код

if a = b
  then
    begin
ваще лажа какая-то

    end;


только код растягивается smile

Добавлено через 54 секунды
THandle, а ты видел в разделе для новичков у кого-то код был "лесенкой"?
Красиво, но абсолютно нечетабельно
PM MAIL   Вверх
Kbl4AH
Дата 28.2.2009, 22:29 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Цитата(THandle @  28.2.2009,  20:53 Найти цитируемый пост)
Akella, мне лично так не удобно.

Мне тоже...

Akella, твой вариант выглядит красивее, но менее читабелен... имхо...
PM MAIL ICQ   Вверх
Akella
Дата 28.2.2009, 23:10 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Наоборот, ты как бы фильтруешь визуально код, т.е. читаешь между строк! А что легче читать между одинарными строками или между двойными/тройными?
Тем более что в этом случае

Код

  if A < B then
  begin
    DoSomething;
    DoSomethingElse;
  end
  else
  begin
    DoThis;
    DoThat;
  end;


приходится читать одновременно между двойными и тройными строками.
PM MAIL   Вверх
Kbl4AH
Дата 28.2.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Akella, я ничего не имею против того, что тебе так удобнее...
А мне удобнее так, как общепринято (пусть это только и стандарт де-факто)... И привыкать к самодеятельности, чтоб потом путаться в примерах участников того же форума мне ни к чему...
Лично мое субъективное мнение!
PM MAIL ICQ   Вверх
Akella
Дата 28.2.2009, 23:43 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Значит пора менять стандарты smile 
PM MAIL   Вверх
THandle
Дата 28.2.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



1.

Код

begin
  if True then begin
    {





         Очень очень очень много кода









    }
    if True then begin
      {

         И тут не мало


      }
      if True then begin
        //
      end else begin
      if False then  begin
      {


      }
      end else begin

         {



         }
      end;
      end;
    end;
  end;

end;


2.

Код


begin
  if True then
  begin
    {





         Очень очень очень много кода









    }
    if True then
    begin
      {

         И тут не мало


      }
      if True then
      begin
        //
      end
      else
      begin
        if False then
        begin
      {


      }
        end
        else
        begin

         {



         }
        end;
      end;
    end;
  end;

end;


ИМХО, во втором способе очевиднее какой begin за какой end отвечает

Добавлено через 33 секунды
Akella, глянь как код оформляют Rrader, CodeMonkey...

Добавлено через 1 минуту и 2 секунды
Ну....THandle....
PM   Вверх
Akella
Дата 1.3.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Да дело не в стандарте оформления. А в удобочитаемости.
Я ж уже написал, что можно смотреть НЕ на begin end, а на if end

Добавлено через 5 минут и 48 секунд
С другой стороны вот код:
Код

if a = b then
begin
  ShowMessage(a);
  ShowMessage(a);
end;


ты как бы отрываешь условие if
if a = b then


от самого кода 
  ShowMessage(a);
  ShowMessage(a);


который, собственно, и зависит от того, как сработает условие и будет ли выполнен код.


а в таком случае, ты читаешь как бы блоком единым всё
Код

if a = b then begin
  ShowMessage(a);
  ShowMessage(a);
end;


особенно это видно когда бегло просматриваешь код

Добавлено через 6 минут и 32 секунды
Эх, ничё вы не понимаете в колбасных обрезках smile

Добавлено через 8 минут и 2 секунды
вот реальный код, где много мелких слов, к которым ещё припутываются и мешают begin/end


Код

             if cboxAllPhones.Checked then
             begin


                 if tlf2 = '' then
                   tlf2 := Tlf
                 else
                   tlf2 := tlf2 + '; '+Tlf;


             end
             else
             begin

                 if not ОбъявлениеПосредника then
                   if tlf2 = '' then
                     tlf2 := Tlf
                   else
                     tlf2 := tlf2 + '; '+Tlf;

             end;//if cboxAllPhones.Checked then begin




Так ведь ПОНЯТНЕЕ

Код

             if cboxAllPhones.Checked then begin


                 if tlf2 = '' then
                   tlf2 := Tlf
                 else
                   tlf2 := tlf2 + '; '+Tlf;


             end else begin

                 if not ОбъявлениеПосредника then
                   if tlf2 = '' then
                     tlf2 := Tlf
                   else
                     tlf2 := tlf2 + '; '+Tlf;

             end;//if cboxAllPhones.Checked then begin



Добавлено через 8 минут и 41 секунду
Так что стандарт этот идёт лесом smile

Добавлено через 11 минут
Вот ещё код  smile 
Код

  Repeat
      while (pInp[k2] < '0') or (pInp[k2] > '9')
      do
        Begin
          inc(k2);
          if k2 >= l
          then
            Begin
              SetLength(Result, k1);
              exit
            End
        End;
      pDest[k1] := pInp[k2];
      inc(k1);
      inc(k2)
  until k2 >= l;


Но так понятнее и приятнее
Код

  Repeat
      while (pInp[k2] < '0') or (pInp[k2] > '9') do Begin
          inc(k2);
          if k2 >= l then Begin
            SetLength(Result, k1);
            exit
          End//if
      End;//while
      pDest[k1] := pInp[k2];
      inc(k1);
      inc(k2)
  until k2 >= l;


Ну оно и понятно, вы-то всё равно уже не отступите от своего smile  "стандарта"
PM MAIL   Вверх
Bose
Дата 1.3.2009, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 2
Всего: 51



Цитата(Qu1nt @  24.1.2009,  00:02 Найти цитируемый пост)
Регистронезавиcимость Delphi  делает его еще более понятным для новичков. Если сейчас что-то изменить, то огромное количество компонентов, исходных кодов станут неработоспособными. А проводить аналогии с другими языками - неуместно.  

Согласен. 

Цитата(THandle @  22.1.2009,  21:03 Найти цитируемый пост)
А что мы видим в Delphi? Новички(да и некоторые вполне опытные люди) приходят и начинают писать код вроде нашего суслика, и многие потом не могут отучиться от такой привычки.

Насчёт стандартов выше написали довольно правильно. Стандарты - это раз. И инструменты для форматирования кода - это два. Причём идеальный вариант, когда исходники форматируются автоматически, перед фиксацией в хранилище, либо даже сразу, при сохранении(Jedi Code Formatter так умеет).


Цитата(THandle @  22.1.2009,  21:03 Найти цитируемый пост)
Было бы лучше, если бы Pascal, Object Pascal были бы регистрозависимыми языками, с вложенным в компилятор правильным оформлением ключевых слов, без возможности обращаться к переменной "как хочетсЯ", "Как напИсалось". Но в то же время хотелось бы чтобы нельзя было объявлять переменные с одинаковыми с точки зрения прочтения переменными.

Вот. А теперь вопрос.

Каково Ваше мнение по этому поводу? smile

Регистрозависимость - зло, ибо принуждает к дисциплине.  =)

Я постоянно использую CamelCase в именовании переменных. При этом не всегда одинаковым образом. 
PM MAIL WWW Skype   Вверх
THandle
Дата 1.3.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Цитата(Akella @  1.3.2009,  00:15 Найти цитируемый пост)
вот реальный код, где много мелких слов, к которым ещё припутываются и мешают begin/end


Так он в обоих случаях оформлен суслик знает как smile 

Код

begin
  if cboxAllPhones.Checked then
    if tlf2 = '' then
      tlf2 := Tlf
    else
      tlf2 := tlf2 + '; '+Tlf
  else
  if not ОбъявлениеПосредника then
    if tlf2 = '' then
      tlf2 := Tlf
    else
      tlf2 := tlf2 + '; '+Tlf;
end;

Код


  repeat
    while (pInp[k2] < '0') or (pInp[k2] > '9') do
    begin
      inc(k2);
      if k2 >= l then
      begin
        SetLength(Result, k1);
        exit
      end
    end;
    pDest[k1] := pInp[k2];
    inc(k1);
    inc(k2)
  until k2 >= l;


Цитата(Bose @  1.3.2009,  06:07 Найти цитируемый пост)
ибо принуждает к дисциплине.  =)


Так дисциплина ж это хорошо))
PM   Вверх
Bose
Дата 1.3.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 2
Всего: 51



Цитата(THandle @  1.3.2009,  08:48 Найти цитируемый пост)
Так дисциплина ж это хорошо))

Теоретически хорошо. =)

Кстати, вспомнил, что в gExperts есть эксперт автозамены, который запросто можно приспособить для унификации написания ключевых слов. Например, заменять все begin end на Begin .. End и т.п.
PM MAIL WWW Skype   Вверх
THandle
Дата 1.3.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Bose, често говоря не одобряю я все эти эксперты... Самому лучше нормально писать))) Опять же, дисциплина...в это все и упирается)
PM   Вверх
Akella
Дата 2.3.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



А чем тебе ненормально в GExpert`e вызов конструктора сообщений MessageBox()? Очень удобная штука.

Добавлено через 12 минут и 37 секунд
О, а в cnPack процедура чистит USES от неиспользуемых модулей smile 

Это сообщение отредактировал(а) Akella - 2.3.2009, 16:33
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

Добро пожаловать в форум группы "Delphi".

В разделе разрешается:

  • Флудить (в приемлемых величинах)
  • Обсуждать модерирование данного раздела (но не его модератора)
  • Добавлять свои правила если они не противоречат существующим
  • Делать наезды на пешеходов***

Строго запрещено:

  • Размещать рекламу
  • Совершать оскорбления личностей
  • Материться
  • *** Пешеходами не являются (ко)модераторы, админы, участники клуба.

Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форум группы: delphi | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.