Matt Diesel:

Firstly, is there any good resource on what idiomatic D usage is? For instance Go has a huge page called Effective Go which tells you how you should use features, rather than what they are.

I don't know any such page, but it looks like an interesting addition for the online docs.


And secondly, I would be grateful if anyone could take a look at this very simple program and comment on how I'm using the language (ignoring the fact it's really simple and the lexer is rubbish). Just stuff like interface, class and variable naming and program structure.

Some notes:
- In D method names start with a lowercase.
- For multi-line ddoc comments there is also /** ... */
- Consider the usage of some structs, where appropriate. Structs are much more used in D compared to C#. - Consider adding pure/nothrow/const/in/mmutable (and even @safe if you want) tags to methods, functions, arguments, and even normal variables, where possible. - this.input.length == 0 is better written this.input.empty, where empty for arrays (and strings) is in std.array. - Consider the usage of lambdas, to replace function int(int left, int right) { return left + right; } with (left, right) => left + right;. - Instead of free assert() consider using preconditions, postconditions and class/struct invariants.
- I suggest to add some unittest{} blocks.
- Instead of using Exception() consider creating one exception class for your code, or use one of the few standard ones... But I don't know how many standard ones there are in Phobos. - Overall you code looks well formatted, well commented, well written (I have not run it), it's a good start.

Bye,
bearophile

Reply via email to