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

Поиск:

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


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



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

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



Всем привет. smile

Уж не знаю, так или нет это называется, но Delphi наш не регистрочувствителен, что меня в последнее время честно говоря стало огорчать.

Причины моего огорчения в следующем, объясню все на сусликах.

1. Ключевые слова и оформление кода.
Раньше я оформлял код жутким образом(отступы, несохранение регистра написания переменных в коде и тд.). Сейчас более менее начал соблюдать правила, в большинстве своем описанные в следующей статье:

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802

А теперь рассмотрим объявление примитивного класса:
Код


    Type
  SUsleg= CLASS(TOBJECt)
PRivate
      AGe   : INTEGER;
    WIDTH,
       Weight:     Integer;
       PUBLIC
         procedure SLEEP;
    cONStrucTor BORN;
    proCEDURE Eat;
  END;


Как вам такой код? Хорошо читается? smile

Пусть даже отступы не будем брать в расчет:

Код

Type
  SUsleg = CLASS(TOBJECt)
  PRivate
    AGe: INTEGER;
    WIDTH, Weight: Integer;
  PUBLIC
    procedure SLEEP;
    cONStrucTor BORN;
    destructor die;
    proCEDURE Eat;
  END;


Все равно код смотрится жутко, ИМХО.

Возьмем класс на C#:

Код

        public class Susleg
        {
            private int Age;
            private int Width, Weight;
            public Susleg(){}
            public void Sleep(){}
            public void Eat(){}  
        } 


Тут никогда не получится написать что то типа:

Код

privaTE INt Age;


Просто недопуститься компилятором.

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

2. Теперь немного об именовании переменных.

Имеем переменные:

Код

var
  MySUPERpuPerSuslEg: Integer;
  A: Byte;
  MuMbaUmBA: Array Of Char;
  PREveDMeDVeD: String;


А теперь как же к ним обращаются люди? Да хоть как!!!
Код

  mYSUpERPUPeRSusleG := 13;
  MySuperPuperSusleg := 25;
  mysuperpupersusleg := 1;
  MYSUPERPUPERSUSLEG := 6;
  MySUPERpuPerSuslEg := 10;
  A := 3;
  a := 7;
  MuMbaUmBA[0] := 'D';
  MUMBAuMbA[1] := 'E';
  muMBaUmba[2] := 'L';
  MUMBAUMBA[3] := 'P';
  mumbaumba[4] := 'H';
  MuMbaUmBA[5] := 'I';
  PREVEDMEDVED := 'Hello world!!!';
  pReVedMedVED := 'OOOOh!!! My GOD!!!!! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!EEEEE, Bab....';
  //....так далее тому подобные суслики...


В case-sesitive языках переменные mYSUpERPUPeRSusleG и mysuperpupersusleg были бы уже совсем разными вещами.
Единственное что мне нравится у нас в этом деле, это то что нельзя объявить несколько переменных с одним именем, но в разном регистре. То есть:

Код

        public string PREVEDmedVed;
        public string PrevedMedved;


Все катит и работает отлично. Две разные переменные.

А в Delphi так низя, будет ругаться:
Код


var
  PREveDMeDVeD: String;
  PREVEDMEDVED: String;


Delphi уже матерится smile И это ИМХО есть Гуд (не тот который Робин).

Лично мое мнение насчет всего этого безобразия:

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

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

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

ЗЫ: сорри, написал как то не очень хорошо. Не в лучшем сейчас расположении духов smile
PM   Вверх
SneG0K
Дата 22.1.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



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

PM WWW Skype   Вверх
Kbl4AH
Дата 23.1.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я вот тож мучался и думал как правильно написать процедуру или функцию...
Потом узнал про Ctrl + Space... и щас всегда это нажимаю... даже если текст уже полностью мной набран...
то есть я пишу ваще без больших букв... а в конце (или в середине ввода) жму эту комбинацию и все делаеься как надо...
В связи с этим бесит одна штука...
например тип Integer по умочанию так пишется, а string  - так... почему все в дельфе с большой буквы, а стринг - с маленькой?
Меня это немного выводит из равновесия... а переменные так называю: MainForm или Main_form...
ну и отступы, конечно, делаю... но тут уж, как сам считаю правильным... вроде привык уже и сейчас меня не бесит внешний вид того, что я напечатал...
PM MAIL ICQ   Вверх
THandle
Дата 23.1.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Kbl4AH, ключевые слова в Delphi все идут с маленькой буквы, если не ошибаюсь smile
PM   Вверх
Kbl4AH
Дата 23.1.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(THandle @  23.1.2009,  10:23 Найти цитируемый пост)
Kbl4AH, ключевые слова в Delphi все идут с маленькой буквы, если не ошибаюсь

string - ключевое слово, а Integer - нет???
PM MAIL ICQ   Вверх
THandle
Дата 23.1.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Цитата(Kbl4AH @  23.1.2009,  10:33 Найти цитируемый пост)
string - ключевое слово, а Integer - нет??? 


А разве по их подсветке не заметно разницы? smile 
PM   Вверх
Kbl4AH
Дата 23.1.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(THandle @  23.1.2009,  11:02 Найти цитируемый пост)
А разве по их подсветке не заметно разницы? 

заметно! но в сплывающей подсказке и у того и у того название - type... мне в принципе без разницы, но немного не нравится...
user posted image
Одинаково, так одинаково, а не то что с большой, с маленькой, всеми большими... smile 

А почему string единственный из типов является ключевым словом? Так исторически сложилось?

Это сообщение отредактировал(а) Kbl4AH - 23.1.2009, 11:30
PM MAIL ICQ   Вверх
Kbl4AH
Дата 23.1.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще пара вопросов по правилам хорошего стиля оформления...
1) В редакторе кода в правой части экрана проходит вертикальная линия...
Можно ли чтобы код выходил за нее или это считается не приемлемым?
2) Как правильно написать такой код?
Код

begin if True then begin ... end else begin ... end; end;


PM MAIL ICQ   Вверх
Rrader
  Дата 23.1.2009, 13:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: нет
Всего: 191



Цитата(Kbl4AH @  23.1.2009,  18:03 Найти цитируемый пост)
 или это считается не приемлемым?

Не рекомендуется. При печати потеряется.
Цитата(Kbl4AH @  23.1.2009,  18:03 Найти цитируемый пост)
2) Как правильно написать такой код?

Код

begin
  if True then
  begin
    ...
  end
  else
  begin
    ..
  end;
end;



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Kbl4AH
Дата 23.1.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, буду теперь так делать... а то раньше делал так:
Код

begin
  if True then
    begin
      ...
    end
  else
    begin
      ..
    end;
end;

PM MAIL ICQ   Вверх
Qu1nt
Дата 24.1.2009, 01:02 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 50



Нет такого понятия "правильно".  У каждой уважающей себя фирмы есть некие стандарты оформления кода. Кушать захочешь - к ним приспособишься. 
Регистронезавиcимость Delphi  делает его еще более понятным для новичков. Если сейчас что-то изменить, то огромное количество компонентов, исходных кодов станут неработоспособными. А проводить аналогии с другими языками - неуместно. 
PM MAIL   Вверх
kemiisto
Дата 26.1.2009, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Эх THandle, слышишь ты звон... smile 

Начинаю с Modula языки Вирта стали регистрозависимыми, а ключевые слова пишутся CAPS'ом. Потом ещё были и Modula-2, и Oberon, и Oberon-2... При этом каждый раз язык всё худел и худел. А Borland, наоборот всё раздувает и раздувает. Очень простая реализация модульности и межмудольного импорта/экспорта. И исчо много чего. Вообщем попробуй Component Pascal. Мне понравилось...

Код

MODULE Hello;

IMPORT StdLog;

PROCEDURE Do*;
BEGIN
  StdLog.String("Hello World");
END Do;

END Hello.




--------------------
PM MAIL WWW GTalk Jabber   Вверх
Akella
Дата 28.2.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



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

наоборот smile , мне в сях и в линуксе ОЧЕНЬ не нравиццо то, что там есть регистрозависимость

Добавлено через 1 минуту и 38 секунд
Цитата(Rrader @  23.1.2009,  13:23 Найти цитируемый пост)
begin
  if True then
  begin
    ...
  end
  else
  begin
    ..
  end;
end;



так же красивее smile 
Код

  if True then  begin
    

  end else begin

    
  end;//else


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


Опытный
**


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

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



Цитата(Akella @  28.2.2009,  14:44 Найти цитируемый пост)
так же красивее  

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


Творец
****


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

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



ну и ладно smile 
PM MAIL   Вверх
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   Вверх
pseud
Дата 9.3.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



внесу ка и я свою лепту.
Код

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

представляю как бы нам всем было весело в одной команде


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 10.3.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



 smile 
PM MAIL   Вверх
kemiisto
  Дата 12.3.2009, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Bose @  1.3.2009,  04:07 Найти цитируемый пост)
Согласен.

Не согласен. Но точка зрения понятна. Про обратную совместимость. smile 

Цитата(Bose @  1.3.2009,  04:07 Найти цитируемый пост)
Причём идеальный вариант, когда исходники форматируются автоматически, перед фиксацией в хранилище, либо даже сразу, при сохранении(Jedi Code Formatter так умеет).

В этом есть что-то. Мне в Eclipse такая штука нравитса. Там есть несколько предопредёлённых настроек, но можно создавать и пользовательские. smile 

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

 smile

Цитата(Akella @  2.3.2009,  14:32 Найти цитируемый пост)
О, а в cnPack процедура чистит USES от неиспользуемых модулей

Эх, мне б такое для ++  smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Bose
Дата 12.3.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Кстати, недавно вновь работал с Case-sensitivity, и подумал, что отладка в случае с регистрозависимыми именами превратится в сущий адъ. Отладка = использование окна Inspector и watches. Сейчас всё просто, нужно проверить, что-то - ввёл выражение(переменные + функции) в инспектор и получил результат. А если бы delphi был  Case-sensitive - пришлось бы ещё и case соблюдать. Ведь code completions там не работает. :(
PM MAIL WWW Skype   Вверх
kemiisto
  Дата 12.3.2009, 23:24 (ссылка)  | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Bose @  12.3.2009,  11:11 Найти цитируемый пост)
Кстати, недавно вновь работал с Case-sensitivity, и подумал, что отладка в случае с регистрозависимыми именами превратится в сущий адъ. 

Bose, тут надо отметить, что многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
THandle
Дата 12.3.2009, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Bose, "закушались" уже =)

Цитата(kemiisto @  12.3.2009,  23:24 Найти цитируемый пост)

Bose, тут надо отметить, что многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn.


Это неудобно. ИМХО. После гор. олимпиады вообще не использую.
Мне там один ответ не засчитали из за того что вот такую отладочную информацию удалил. А в огромном проекте... Нет уж. Лучше использовать нормальные средства.
PM   Вверх
Kbl4AH
Дата 13.3.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(kemiisto @  12.3.2009,  23:24 Найти цитируемый пост)
Bose, тут надо отметить, что многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn

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

Это сообщение отредактировал(а) Kbl4AH - 13.3.2009, 00:37
PM MAIL ICQ   Вверх
kemiisto
Дата 13.3.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



THandle, Kbl4AH, ещё один нюанс - язык должен быть подабающий. Дабы необходимости пошаговой отладки практически не возникало.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Bose
Дата 13.3.2009, 01:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(kemiisto @  12.3.2009,  22:24 Найти цитируемый пост)
Bose, тут надо отметить, что многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn.

А я предпочитаю использовать то, что позволяет мне вычислить проблему быстрее.  smile
В частности, conditional breakpoints(вообще супер), call stack view, а также логирование и вызов debugbreak. 
PM MAIL WWW Skype   Вверх
kemiisto
Дата 13.3.2009, 18:32 (ссылка)  | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Bose @  12.3.2009,  23:12 Найти цитируемый пост)
А я предпочитаю использовать то, что позволяет мне вычислить проблему быстрее.

А надо бы не быстрее, а лучше. Но понятно... Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить". А мы уже, как люди, пользующие такую вот стряпню для разработки вынуждены использовать аналогичный подход... Замкнутый круг... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
kemiisto
Дата 5.4.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



 smile -4! Шикарно!

Даже интересно стало, против чего вы так настойчиво голосуете.

Цитата(kemiisto @  13.3.2009,  16:32 Найти цитируемый пост)
Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить". А мы уже, как люди, пользующие такую вот стряпню для разработки вынуждены использовать аналогичный подход... Замкнутый круг...

Врядли против этого...

Неужели против 
Цитата(kemiisto @  13.3.2009,  16:32 Найти цитируемый пост)
А надо бы не быстрее, а лучше.
??? smile 


Это сообщение отредактировал(а) kemiisto - 5.4.2009, 15:51


--------------------
PM MAIL WWW GTalk Jabber   Вверх
pseud
Дата 14.4.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(kemiisto @  5.4.2009,  15:50 Найти цитируемый пост)
Даже интересно стало, против чего вы так настойчиво голосуете.

например за это
Цитата(kemiisto @  12.3.2009,  23:24 Найти цитируемый пост)
многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn

ShowMessage - я иногда использую, например когда надо длинный многострочный динамический SQL увидеть, который в отладке сложно пощупать. В остальном же - отладка.

и за это
Цитата(kemiisto @  13.3.2009,  18:32 Найти цитируемый пост)
А надо бы не быстрее, а лучше. Но понятно... Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить".

без коментариев.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
kemiisto
Дата 14.4.2009, 17:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(pseud @  14.4.2009,  14:25 Найти цитируемый пост)
без коментариев. 

Это ты просто придумал. А я настаиваю на комментарии! Что не так во фразе:
Цитата(kemiisto @  13.3.2009,  16:32 Найти цитируемый пост)
Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить".

?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Bose
Дата 15.4.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(kemiisto @  13.3.2009,  17:32 Найти цитируемый пост)
Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить"

Я тоже не понимаю за что минусуют. В мире же столько ужасного кода. И коммерческие проекты - не исключение. Экономят на тестировании, на профессионализме. Хороший программист стоит намного дороже новичка ляпающего "лишь бы работало", и проект сделанный им будет стоить больше, чем такой "сляпанный на коленке". И не так много тех, кто задумывается о том, что этот "сляпанный" проект потом ещё придётся сопровождать, и любые изменения обойдуться в разы дороже. Главное - поскорее "выпустить" продукт, пока клиент не передумал.
К счастью, есть исключения. 
PM MAIL WWW Skype   Вверх
pseud
Дата 15.4.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(kemiisto @  14.4.2009,  17:18 Найти цитируемый пост)
Это ты просто придумал. А я настаиваю на комментарии! Что не так во фразе:

сразу скажу - минусовал этот пост не я.
а с фразой я не согласен лишь в том, что
Цитата(kemiisto @  13.3.2009,  18:32 Найти цитируемый пост)
А надо бы не быстрее, а лучше.

call stack view, логирование, debugbreak - это не только быстрее, но и лучше.
Цитата(kemiisto @  13.3.2009,  18:32 Найти цитируемый пост)
Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить"

бизнес...
Цитата(Bose @  15.4.2009,  01:13 Найти цитируемый пост)
 Главное - поскорее "выпустить" продукт, пока клиент не передумал.К счастью, есть исключения. 

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



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
CodeMonkey
Дата 5.5.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата
В связи с этим бесит одна штука...
например тип Integer по умочанию так пишется, а string  - так... почему все в дельфе с большой буквы, а стринг - с маленькой?

Голосуем ;)

Это сообщение отредактировал(а) CodeMonkey - 5.5.2009, 12:26


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
CodeMonkey
Дата 5.5.2009, 12:45 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата
представляю как бы нам всем было весело в одной команде

Хорошее замечание. А если немного подумать, то отсюда напрямую следует, что есть один-единственный правильный стандарт, а все остальные - "неверны".

И этот стандарт - это стандарт от CG.

Да, может быть, он не идеален. Может быть, где-то можно было сделать по-лучше. Но это - единственный де-факто стандарт. Всё остальное - это мелочь, которая используется только вами. И никем более.

Если человек пишет, соблюдая стандарт CG:
1). Ни у кого не возникнет проблем с чтением его исходников (исходники RTL/VCL читают все). Этот стандарт легко принимается любым человеком.
2). Нет проблем с взаимодействием с другими людьми - они тоже пишут или могут писать так же. В отличие от ваших самопридуманных стандартов, которые никому не известны, кроме вас. 
3). Человек может уйти, вместо него придёт другой. Он не станет переписывать код из-за того, что непривычно написано - ведь оформление хорошо известное - "как у Delphi". 
4). И т.д.

Знаете, это стоит того, чтобы изменить свои привычки и писать "как следует". 
Я когда-то писал по-другому, ещё с паскаля. Отступ у меня был в пробел и begin я сдвигал в блок, вот так:

Код
procedure P;
begin
DoSomething;
DoSomethingElse;
if F <> 0 then
 begin
 More;
 MoreMore;
 end;
InvokeAppocalypse;
end;


После того, как я понатыкался ещё на кучу подобных же "доморощенных" стандартов, я сказал себе: всё, стоп, хватит. И насильно заставил писать себя так:

Код
procedure P;
begin
  DoSomething;
  DoSomethingElse;
  if F <> 0 then
  begin
    More;
    MoreMore;
  end;
  InvokeAppocalypse;
end;


А потом это вошло в привычку.

P.S. В GExperts есть ещё такая офигенная штука, как авто-замена по словарю и "compiler-assisted" замена. Ну т.е. пишешь ты PROCEDURE, а GExperts - бац! И заменяет на "procedure". Автоматом. Без нажатия чего либо. 
Или, объявлен, скажем, у вас тип TMyObject, а вы написали tmyobject. GExperts и тут заменит автоматом на TMyObject. 
На первых порах, для начинающих офигенно нужная и удобная штука. Что-то типа учителя, стоящего за спиной. Только ты накосячишь - он тебя бац по лбу! Хорошо тренирует писать "красиво".
Да и не для начинающих тоже полезно. Когда ты что-то очень быстро печатаешь и нет времени зажимать Shift (я очень часто пишу просто inttostr) - GExperts автоматом подсобит.

P.P.S. ИМХО, Запись 

Код
  if F <> 0 then begin
    More;
    MoreMore;
  end else begin
    InvokeAppocalypse;
  end;


Плоха по той причине, что тяжелее искать соответствующий begin/end - они не на одной позиции.

Это сообщение отредактировал(а) CodeMonkey - 5.5.2009, 13:07


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
CodeMonkey
Дата 5.5.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



2 THandle и регистронезависимость:
Регистронезависимость в Delphi - это благо. Примеры с кривым оформлением не катят. Если человек нихрена не соблюдает стандарт(*), то не будет он его соблюдать и при регистрозависимости:
Код
       public class 
                        Susleg  {
            private int Age;
     private int Width, 
Weight;
         public             Susleg  () {}
            public void Sleep()
{
}
            public 
            void 
            Eat
            (){}          } 


Сильно легче не становится.

Как уже верно заметили, есть всякие авто-заполнялки, которые автоматом подставляют имена. Поэтому, когда пишут так, как ты указал, то это даже не программист, а так, человек, который пытается им быть (он даже среду не знает! Не использует auto-fill). Более того, возникает сомнение в образованности таких людей вообще. Нормальные же люди, не пишут в письменной речи "вОт ТАк". 

Зло регистрозависимость же как раз тем, что можно спутать переменные. Например, i и I. Объявлены обе (неважно, как это получилось - понятно, что плохой дизайн и всё такое), а мы случайно описались. Это будет уже БАГ. Баг - это гораздо серьёзнее любых стилевых предпочтений.
Также регистрозависимость (не только в ЯП) плоха тем, что идёт вразрез с естественным языком (см. также ниже).

P.S. 
Цитата
а ключевые слова пишутся CAPS'ом

Вот уж до чего дурацкое нововведение. Язык обычно делается так, чтобы быть похожим на естественный. Для того языки и придуманы - упрощать работу для человека. Ну не пишете же вы в реальности: СЛУХАЙ, отправь мне файл. Дурость какая-то (ИМХО). Хотя при наличии какого-нибудь auto-fill/auto-correct это смягчается.
Поэтому ещё меня удивляет, когда люди оправдывают { } в сях: "писать короче". Пишите в машинных кодах. Там ещё короче.

Примечания:
(*) кстати, это не программист, а CodeMonkey (не смотреть на мой ник! smile )


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Kbl4AH
Дата 5.5.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(CodeMonkey @  5.5.2009,  13:20 Найти цитируемый пост)
Голосуем ;)

Я что-то не сообразил к чему тут эта ссылкаsmile 
CodeMonkey, поясни, плиз...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 5.5.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата(Kbl4AH @  5.5.2009,  20:31 Найти цитируемый пост)
Я что-то не сообразил к чему тут эта ссылка

Это ссылка на Quality Central, а конкретно на предложение (suggestion) по замене "string" на "String" в Delphi. 

Quality Central - это официальный баг-трекер для продуктов CodeGear (Delphi, Builder и т.п.). Можно использовать web-клиент или нативный (Win32 native) - он входит в поставку Delphi, найти можно здесь: C:\Program Files\CodeGear\RAD Studio\6.0\QualityCentral\qualitycentral.exe (путь меняется в зависимости от вашей версии Delphi, есть не во всех версиях).
Для участия необходима обычная регистрация на Developer Network (бесплатно, разумеется).



--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kemiisto
Дата 5.5.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



CodeMonkey, неа. Точнее, не то, что бы совсем неа, а не совсем а. smile 

Цитата(CodeMonkey @  5.5.2009,  11:01 Найти цитируемый пост)
Регистронезависимость в Delphi - это благо.

Ну да, ну да... Ща захоливарим! smile 

Цитата(CodeMonkey @  5.5.2009,  11:01 Найти цитируемый пост)
Зло регистрозависимость же как раз тем, что можно спутать переменные. Например, i и I. Объявлены обе (неважно, как это получилось - понятно, что плохой дизайн и всё такое), а мы случайно описались. Это будет уже БАГ.

Согласись, это дурацкий, высосанный из пальца, притянутый за уши, пример. И к тому же, запись а-ля "n принадлежит N" никого не смущает, а тут раскричался. Уж прямо, баг... smile 

Цитата(CodeMonkey @  5.5.2009,  11:01 Найти цитируемый пост)
Также регистрозависимость (не только в ЯП) плоха тем, что идёт вразрез с естественным языком (см. также ниже).

Читаю ниже:
Цитата(CodeMonkey @  5.5.2009,  11:01 Найти цитируемый пост)
Язык обычно делается так, чтобы быть похожим на естественный.

Ну и вот откуда ветер дует. Если коротко - это не так. Совсем не так.

Забавно, но ты сам себе противоречишь:
Цитата(CodeMonkey @  5.5.2009,  11:01 Найти цитируемый пост)
Как уже верно заметили, есть всякие авто-заполнялки, которые автоматом подставляют имена.

И в каком это естественном языке у нас есть автодополнялки?

Короче, регистрозависимость, до какой то степени, вопрос вкуса. Но вот ключевые слова "капсом" - это "зачёт"! В разы повышают читабельность. Хотя есть и исторические аспекты, почему Вирт решил сделать именно так... Но это удобно.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
CodeMonkey
Дата 5.5.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата(kemiisto @  5.5.2009,  21:33 Найти цитируемый пост)
 Если коротко - это не так. Совсем не так.

Может быть и не так, но идти вразрез интуитивным представлениям тоже не стоит. А интуитивно для человека Myvar и MyVar - это одно и то же.

Цитата
Короче, регистрозависимость, до какой то степени, вопрос вкуса.

На это и поставим жирную точку smile 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
CodeMonkey
Дата 4.8.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



http://blog.marcocantu.com/blog/ide_sneak_preview_d2010.html

Итак, в новый IDE входят (барабанная дробь): ... Code Formatter...

Теперь стандарт оформления от CodeGear получает ещё +5 очков.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Akella
Дата 7.8.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



И ещё 2555 мелких глюков, которые потом будут быстро-быстро исправлять сервис паками smile, будет раз в месяц выходить какой-нибудь сервис пак или обновление. Но глюки, которые тянуться ещё с Д2006 так и останутся неисправленными.

Это сообщение отредактировал(а) Akella - 7.8.2009, 19:43
PM MAIL   Вверх
Romikgy
Дата 7.8.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



сорри за подъем старого , но не я первый это сделал smile
Цитата(Bose @  13.3.2009,  00:12 Найти цитируемый пост)
conditional breakpoints(вообще супер)

иногда глючит не по детски :(
Цитата(Bose @  13.3.2009,  00:12 Найти цитируемый пост)
и вызов debugbreak

проще имхо 
Код

asm int 3 end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Beltar
Дата 15.10.2009, 21:02 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Понекропосчу немного.

Пишем:
Код

var A,a,B,b,C:Integer;//Заядлый сишник так и напишет
begin
LongProcedure;
end;


В LongProcedure ошибаемся с шифтом и потом ДОЛГО ищем, где ошибка.

А продиктовать или вспомнить, как называется некий объект? Зря что ли поиск по тексту использует регистрозависимость только если явно это указать.

А еще очень приятно набирать код на Си, и получать ошибки компилятора из-за каждой ошибки шифта.

А какие-нибудь дебильный объявления в стиле WM_SOMEWINDOWSMESSAGE, которые хотелось бы привести к нормальному CamelStyle'у.

Под каток такое "счастье", как регистрозависимость.

А Вирт ИМХО стал маленько впадать в маразм со времен Модулы. Может конструкции вида

IF True THEN
  DoSomething;
End IF

и компактнее begin end'ов и висячих else для которых можно было бы просто утвердить правило, что при неясности else относится к ближайшему then. Но это далеко не самая большая проблема стоящая перед Паскаль-программистом, неудивительно, что как только язык получил юниты и другие нужные вещи, никто особо не стал возиться с Модулой (да, я знаю про новосибирскую Excelsior с ее компилятором). Хвалить же Оберон за упрощения совсем не стоит. Не нужны перечислимые типы? А то, что в Object-инспекторе можно вместо невнятной цифры показывать понятное название нужно? Оно ведь как раз за счет перечислимых типов реализуется. И т. д. если на Обероне построить систему класса Delphi для столь же широкого круга программистов, то Оберон очень быстро станет столь же громождкий, как и Object Pascal последних призывов. Языки громоздки не потому что так разработчикам хочется, а потому что потребности пользователей велики и разнообразны.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
rodnover
Дата 12.11.2009, 13:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 10



Код

  if True then
    Something1;
  Something2;




Код

  if True then
  begin
    Something1;
    Something2;
  end;


Вот я лично только ради такого примера переношу begin на следующую строчку, чтобы по началу строки определят состоит вложенный блок из одной команды или из группы команд.. Ведь пропустить отступ намного проще, чем перевод строки.

А вообще я за регистрозависимость.. помогает избежать проблем при связи с динамическими библиотеками и прочими внешними модулями...

Цитата

Понекропосчу немного.

Пишем:Код

var A,a,B,b,C:Integer;//Заядлый сишник так и напишет
begin
LongProcedure;
end;


Заядлый сишник так не напишет, потому что будет знать о таком косяке. ;) да и давать неосмысленные имена переменным как-то не гут....

А вообще я минут 15 пропарился при отладке проекта в Delphi 2007
Код

int Cоunt;

Count := 0;

А оказалось просто.. в определении переменной буква "о" была русской...
PM MAIL   Вверх
Akella
Дата 17.11.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(rodnover @  12.11.2009,  13:46 Найти цитируемый пост)
А вообще я минут 15 пропарился при отладке проекта в Delphi 2007
Выделить всёкод Pascal/Delphi
1:
2:
3:
    
int Cоunt;
Count := 0;

А оказалось просто.. в определении переменной буква "о" была русской... 


а регистрозависимость тут при чём
PM MAIL   Вверх
rodnover
Дата 17.11.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 10



К тому же чему и разговор про регистронезависимые отступы. ;) 
А вообще поддержал разговор о несовсем удобных фичах Делфи.
PM MAIL   Вверх
CodeMonkey
Дата 18.11.2009, 11:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата(rodnover @  12.11.2009,  13:46 Найти цитируемый пост)
А вообще я за регистрозависимость..

Тут же, ниже:
Цитата(rodnover @  12.11.2009,  13:46 Найти цитируемый пост)
А вообще я минут 15 пропарился при отладке проекта в Delphi 2007


Чем "Count vs Cоunt" принципиально отличается от "count vs Count"? Ничем. И там и там можно сделать одинаковый косяк.

Т.е. мыши кололись, но...

Код
Заядлый сишник так не напишет, потому что будет знать о таком косяке. ;) 

Ну и как же тогда вы умудрились написать Count с русской буквой? Если что-то можно сделать неправильно - это обязательно сделают неправильно.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Akella
Дата 18.11.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(CodeMonkey @  18.11.2009,  11:32 Найти цитируемый пост)
Т.е. мыши кололись, но...

 smile 
PM MAIL   Вверх
rodnover
Дата 19.11.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 10



Ну дык не знал же я про эту фичу. ;) Потому и получилась описка.

Принципиально отличается тем, что если во внешнем регистронезависмодуле объявлено count, то на Count будет ошибка линковки выдаваться. ;)
PM MAIL   Вверх
CodeMonkey
Дата 23.11.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата(rodnover @  19.11.2009,  09:22 Найти цитируемый пост)
Принципиально отличается тем, что если во внешнем регистронезависмодуле объявлено count, то на Count будет ошибка линковки выдаваться

Т.е. ради этого вы готовы горы свернуть и дать каждой обезьяне в руки по гранате?

Добавлено через 6 минут
P.S. К тому же, лично мне не ясно, как регистрозависимость может решить указанную "проблему линковки".


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
rodnover
Дата 23.11.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 10



Обычно.. при использовании 
Код

extern Count;

случайное использование count выдаст ошибку при компиляции, а не при линковке модуля, или упаси всё чему люди молятся, динамическом подключении..




Это сообщение отредактировал(а) rodnover - 23.11.2009, 15:18
PM MAIL   Вверх
Akella
Дата 29.12.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Я вот сейчас щупаю qt-creator. Это ж кашмар smile 
Доводчик кода вместо того, чтобы подсказывать код.... требует от тебя полного и точного набора названия компоненты или метода. Использование доводчика кода сводится к минимуму.
Т.е. вместо того, чтобы я нажал Ctrl+пробел, начал набирать qmes и мне  доводчик выдал бы QMessageBox + все похожие названия.... я должен набирать в точности QMes. Ошибся на одну букву или не там где надо нажал Shift, и всё, доводчик закрылся. Идиотизм. Наверное, создатели qt-creator не ведают о RAD.

Добавлено через 5 минут и 48 секунд
http://forum.vingrad.ru/forum/act-ST/f-69/...9/unread-1.html
я тут в религиозных войнах создал опрос

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

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

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

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

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

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

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

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


 




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


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

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