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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поговорим о недостатках Delphi, я не шучу... надо быть самокритичными 
:(
    Опции темы
Akella
Дата 4.6.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



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


Опытный
**


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

Репутация: 0
Всего: 5



Цитата(cemick @ 4.6.2010,  14:19)
k0rvin
В простых примерах это не мешает, однако, как мне кажется при чтение больших кусков чужого кода это может вызвать затруднение, с определением где объявлена и на какую область действует данная переменна. Достаточно много пришлось программировать на C++, и точно скажу, что для меня эта особенность Delphi в плюс.

ещё раз посмотрите мои примеры, я не призываю к коду типа

Код

procedure foo (n :Integer);
begin
  var i :Integer;
  doSomethingWith(i);
  var j :Integer;
  j := Random(n);
  // some code
  i := j; // присваивание спокойно проходит.
end;

я имею в виду
Код

procedure foo (n :Integer);
begin
  let i :Integer in // начало лексической области видимости i
    doSomethingWith(i);
  // конец лексической области видимости i
  let j :Integer in // начало лексической области видимости для j
    begin
      j := Random(j);
      // some code
      i := j; // => Ошибка, i не видна здесь
    end; // конец лексической области видимости для j
end;


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

Это сообщение отредактировал(а) k0rvin - 4.6.2010, 14:49


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
cemick
Дата 4.6.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(k0rvin @  4.6.2010,  14:45 Найти цитируемый пост)
области видимости вполне обозримы, даже более обозримы и "узки".

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

Это сообщение отредактировал(а) cemick - 4.6.2010, 15:54
PM MAIL WWW   Вверх
k0rvin
Дата 5.6.2010, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 0
Всего: 5



Цитата(cemick @ 4.6.2010,  15:54)
Цитата(k0rvin @  4.6.2010,  14:45 Найти цитируемый пост)
области видимости вполне обозримы, даже более обозримы и "узки".

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

1) это удобно и оправдано, потому что правильно.

для случая 10-ти циклов я и приводил выше вариант

Код

for i :Integer = a to b do SomethingWith(i);


+ можно добавить в for некоторый вывод тиов (тип счётчика выбирается как наиболее широкий из типов a и b), тогда получим возможность писать так:

Код

for i := a to b do SomethingWith(i);

т.е. возвращаемся к текущему состоянию, только переменная-счетчик видна только в теле for

2) я же не говорю, что использование let должно быть обязательным. кто не хочет -- юзает var в начале подпрограммы.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
CodeMonkey
Дата 5.6.2010, 21:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(k0rvin @  3.6.2010,  17:47 Найти цитируемый пост)
честно говоря, я бы быстрее руками написал, чем бегать по табуляциям и стрелками что-то там выбирая. 

На самом деле удобно очень. Вписал for + Tab + i (переменную цикла) + Tab + Screen.Forms + Tab + пишешь тело цикла.


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


Творец
****


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

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



Во, вспомнил.
Я давно мечтаю, чтобы в дельфи все невизуальные компоненты выкладывались не на форму, а на какую-нибудь специальную панель в IDE. А то если много компонентом, то трудно проектировать форму.

Но!!! В одной из последних версий эксперта GExperts почти реализовали мою мечту. Они добавили команду "Hide/Show Non-Visual"  smile  smile  smile  smile и теперь можно прятать невизуальные компоненты формы.

Добавлено через 1 минуту и 40 секунд
И ещё один большой недостаток среды в том, что она не запоминает положение всяких вспомогательных редакторов. Таких как редактор ActionManager`а, редактор persistent-полей набора данных. Частично GExpert тоже запоминает и восстанавливает размер этих окон и положение, но не всё.
PM MAIL   Вверх
k0rvin
Дата 10.6.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 0
Всего: 5



Цитата(Akella @ 10.6.2010,  09:42)
Во, вспомнил.
Я давно мечтаю, чтобы в дельфи все невизуальные компоненты выкладывались не на форму, а на какую-нибудь специальную панель в IDE. А то если много компонентом, то трудно проектировать форму.

согласен, как  в вижуал студии например. особенно фигово становится, если отключить выравнивание по сетке (я предпочитаю выравнивание относительно компонентов)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
former
Дата 10.6.2010, 18:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



В принципе, все Non-Visual можно убирать в DataModul, но это лишний модуль, так что поддерживаю.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Rohoss
  Дата 10.6.2010, 22:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

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



А обязательно невизуальные компоненты бросать на форму? Можно ведь с кода создавать...В визуал студии идеология заставляет так делать.


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
k0rvin
Дата 10.6.2010, 23:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 0
Всего: 5



Цитата(Rohoss @ 10.6.2010,  22:32)
А обязательно невизуальные компоненты бросать на форму? Можно ведь с кода создавать...В визуал студии идеология заставляет так делать.

можно, но зачем загромождать исходник "бесполезным" кодом?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Rohoss
Дата 11.6.2010, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

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



Цитата(k0rvin @  10.6.2010,  23:37 Найти цитируемый пост)
можно, но зачем загромождать исходник "бесполезным" кодом?

Да ладно, сколько там того кода  smile  Или лучше загромождать форму?


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Akella
Дата 11.6.2010, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(former @  10.6.2010,  18:50 Найти цитируемый пост)
В принципе, все Non-Visual можно убирать в DataModul, но это лишний модуль, так что поддерживаю. 

 smile для каждой формы создавать модуль данных? А Как же такие компоненты, как меню, тоже в модуль данных?

Добавлено через 6 минут и 20 секунд
Цитата(Rohoss @  10.6.2010,  22:32 Найти цитируемый пост)
А обязательно невизуальные компоненты бросать на форму? Можно ведь с кода создавать...

Ты не забывай, что Delphi - это RAD. А зачастую визуально проектировать гараздо быстрее и проще. Возьмём, например, проектирование пользовательского интерфейса с использованием компонентов: TImageList, TActionList, TToolBar, TMainMenu, TPopupMenu 3 шт.
Как думаешь, быстрей будет набросать компонентов на форму, связать, загрузить картинки или писать это всё в коде + запихивать картинки в ресурсы с компиляцей %).
Да, да многие супер-буппер программеры скажут, мол это всё былокодерство и что настоящий программист всегда идёт в обход пишет всё ручками... ну ну... пишите, никто ж не запрещает smile
PM MAIL   Вверх
former
Дата 11.6.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Цитата(Akella @  11.6.2010,  11:32 Найти цитируемый пост)
А Как же такие компоненты, как меню, тоже в модуль данных?

А меню, значит, невизуальный компонент. smile
Цитата(Akella @  11.6.2010,  11:32 Найти цитируемый пост)
для каждой формы создавать модуль данных?

Зачем для каждой формы?  smile  Пары будет достаточно. smile 
Один для ImageList и т.п., другой для данных (в случае работы с БД).
Другое дело, что такой подход усложняет код и не всегда реализуем.
Было бы гораздо удобнее, если бы в редакторе невизуальные объекты помещались не на форму, а на отдельную панель, но при этом относились к данной форме. Нечто похожее в VS реализовано.
Цитата(Akella @  11.6.2010,  11:32 Найти цитируемый пост)
Как думаешь, быстрей будет набросать компонентов на форму, связать, загрузить картинки или писать это всё в коде + запихивать картинки в ресурсы с компиляцей %).

В той же VS все больше "графического" программирования (работа мышкой).
Цитата(Akella @  11.6.2010,  11:32 Найти цитируемый пост)
ну ну... пишите, никто ж не запрещает 

...и даже сочувствуют. smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 11.6.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(former @  11.6.2010,  14:07 Найти цитируемый пост)
Зачем для каждой формы?  smile  Пары будет достаточно. smile 

Значит ты не проектировал высоконагруженные приложения, где 100-200 окон.

Добавлено через 37 секунд
Цитата(former @  11.6.2010,  14:07 Найти цитируемый пост)
А меню, значит, невизуальный компонент. smile

Ну ладно, меню можно и непосредственно на форму бросить.

Добавлено через 1 минуту и 11 секунд
Цитата(former @  11.6.2010,  14:07 Найти цитируемый пост)
Было бы гораздо удобнее, если бы в редакторе невизуальные объекты помещались не на форму, а на отдельную панель,

здасте приехали  smile  smile  smile  smile 
PM MAIL   Вверх
former
Дата 11.6.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Цитата(Akella @  11.6.2010,  14:12 Найти цитируемый пост)
Значит ты не проектировал высоконагруженные приложения, где 100-200 окон.

У меня сейчас в проекте порядка 100. В дата-модуле все, что касается доступа к данным. Есть отдельный дата-модуль, где хранятся некоторые невизуальные компоненты (общего пользования) приложения. Остальное все в пакетах.
Цитата(Akella @  11.6.2010,  14:12 Найти цитируемый пост)
здасте приехали

 smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

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

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

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

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

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

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

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


 




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


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

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