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

Reply via email to