Thread overview
Dividing D Module between multiple files
Feb 18, 2015
Muahmmad Adel
Feb 18, 2015
Daniel Kozák
Feb 18, 2015
rumbu
Feb 18, 2015
Ali Çehreli
February 18, 2015
I have searched online and I found no way for dividing D Module between multiple files.

While other languages move to making classes distributed on multiple files (like C#'s partial classes), D is moving in the opposite direction, and makes a bigger code unit in one file.

Biding every module to single file means large files, with high probability of merge conflicts (as more developers are working on the same file) makes separating developer's code from IDE generated code more difficult.

I need to understand the rationale behind binding the module to the file. Although Alexandrescu explained rationale behind different language design decisions in his book, he didn't explain this one.

Thanks

February 18, 2015
On Wed, 18 Feb 2015 07:23:24 +0000
Muahmmad Adel via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:

> I have searched online and I found no way for dividing D Module between multiple files.
> 
> While other languages move to making classes distributed on multiple files (like C#'s partial classes), D is moving in the opposite direction, and makes a bigger code unit in one file.
> 
> Biding every module to single file means large files, with high probability of merge conflicts (as more developers are working on the same file) makes separating developer's code from IDE generated code more difficult.
> 
> I need to understand the rationale behind binding the module to the file. Although Alexandrescu explained rationale behind different language design decisions in his book, he didn't explain this one.
> 
> Thanks
> 

You are not force to do so I do not see any trouble here.

For eg. I have lots of file where I have only one class (similar to
java concept).
February 18, 2015
On 02/17/2015 11:23 PM, Muahmmad Adel wrote:

> I have searched online and I found no way for dividing D Module
> between multiple files.

As always, documentation can be better. :) There is the relatively new "package module":

  http://dlang.org/module.html#package-module

  http://ddili.org/ders/d.en/modules.html#ix_modules.package%20import

> high probability of merge conflicts (as more developers are
> working on the same file)

A merge conflict at the file level yes, but if the developers are touching different parts of that file, then most merge tools wouldn't see that as a merge conflict.

Ali

February 18, 2015
On Wednesday, 18 February 2015 at 07:34:13 UTC, Daniel Kozák wrote:
>
> On Wed, 18 Feb 2015 07:23:24 +0000
> Muahmmad Adel via Digitalmars-d-learn
> <digitalmars-d-learn@puremagic.com> wrote:
>
>> I have searched online and I found no way for dividing D Module between multiple files.

>
> You are not force to do so I do not see any trouble here.
>
> For eg. I have lots of file where I have only one class (similar to
> java concept).

The problem with this approach is that you will end with ugly class names like mypackage.myclass.MyClass.

I'm porting some C# code where I need the type name at runtime and I ended with a huge package.d file just to keep pretty names like mypackage.MyClass.

Another way to trick the compiler is to mixin import all modules in the package.d file but you'll loose features like code completion in your editor.