Learning D - first steps and best practices

Stefan Larsson stefan at lastsys.com
Sun Sep 29 00:13:26 PDT 2013


Hello,

I have started my journey to learn D after using C/C++ and Python for 
many years. I am studying the book "The D-Programming Language" by 
Andrei Alexandrescu and I have tried to search the D-newsgroups for 
proper advice without success and I am humbly seeking enlightenment in 
the following topics:

1. ** Coding style **
When starting out with Python there is general coding style advice 
available in PEP8 (http://www.python.org/dev/peps/pep-0008/) giving 
advice on coding style. For C/C++ I have been using the Google style 
guide (http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) 
and from Microsoft there are Design Guidelines for Class Library 
Developers 
(http://msdn.microsoft.com/en-us/library/czefa0ke%28v=vs.71%29.aspx). I 
guess Java has similar things.
For Python there are plugins giving warnings when the coding style is 
not followed forcing me to learn the proposed style.
Q1a: Are there any material on code standards for D available? 
Personally I believe there should be.

2. ** Build process **
What is the recommended toolchain for building projects? I have 
previously been using CMake a lot due to ease of platform and compiler 
change, good support for mixed language projects and automatic 
detection of common libraries and its compiler/linker flags. I am 
however getting the impression that dub is recommended for D, but I 
believe it is in its early stages.
Q2a: So, what is the recommended work process for building a D-project 
when creating a new project?
Q2b: Given Q2a above, what is a recommended file structure for a large 
D-project? Where should I put third-party library bindings in relation 
to my own code?

3. ** Quality **
I see a risk with the (small) dub respository in its current state 
since mostly master branches are used. This means that I might get a 
broken build due to a broken commit in any referenced package.
Q3a: Are there any efforts taking place regarding stability of packages 
in the community similar to e.g. Debian packaging (stable, testing, 
unstable)?

These are my questions and none of them are intended as flamebait… 
These are practical thoughts I always encounter whenever approaching a 
new language/development environment. Language documentation seldom 
answers these types of questions.

Best Regards,
Stefan Larsson



More information about the Digitalmars-d-learn mailing list