Модули vs namespace's [closed]


#117

Может быть, воспользоваться прямым заимствованием? Ведь этот Oxygene тоже не на коленке слеплен, люди думали что-то…


#118

В модулях, на сколько мне известно, можно писать Uses &Unit in ‘где то там\Unit.pas’


#119

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


#120

Ну так может распрощаться с этим?


#121

Это уж точно не моя компетенция.


#122

Ну я это всем сказал, в том числе и разработчикам. Кто что об этом думает?


#123

Оно не сильно мешает, так что если делать - не в первую очередь. Но было бы удобно снять это дурацкое требование. Отлаживать версии очень мешает, приходится по папкам разным распихивать


#124

К слову, в Паскале есть проекты.


#125

Есть. Но я пока не нашел им полезного для себя применения. Возможно, позже разберусь, в чем их изюминка.


#126

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


#127

Ну это не бог весть какое достижение ))) У меня в NumLibABC классов уйма и все в одном файле. Никто не умер пока.


#128

Но ведь модули нельзя так разрезать…


#129

Так - это как?


#130

На несколько файлов. Неймспейсы для этого и делают. Сейчас, наверное, можно include использовать.


#131

include на уровне исходников - не лучшая вещь. Замаешься прыгать по файлам, пытаясь понять, где там что. Мне для библиотеки (а там порядка 2800 строк кода) оказалось достаточно возможности сворачивать код по регионам.


#132

Тут уже дело вкуса. Для меня идеальный вариант - большая библиотека с несколькими неймспейсами, лежащими в разных файлах. Для примера - единый модуль Graph, где GraphABC и ObjectsABC - неймспейсы.


#133

Ну тут глупо спорить, конечно единый модуль с неймспейсами - это вещь! Но этого пока нет, а библиотека уже больше года существует.


#134

Дополнение. Как Вы смотрите на реализацию такой возможности:

Модуль с пространством имён:

unit MyClasses;

namespace MyNamespace; // Да, без begin - лучше выглядит.
  type
    TClass = class
    end;
end;
end.

Программа:

uses Alias = MyClasses.MyNamespace.TClass;
begin
  var x := new Alias();
end.

? Это, разумеется, когда будут сделаны namespace’ы в том виде, с которым Вы согласились.


#135

Хорошая идея. А давайте распишем всё, что предлагается сделать касательно неймспейсов. Я, например, уже запутался. Можно хоть как - то систематизировать?


#136

По ходу дела, я буду редактировать Issue.