DlangUI Coding Style
====================

Tabs and indentation
====================

No Tab characters should be used in source code.
Use 4 spaces instead of tabs.


Identifiers
===========

Class names: CamelCase with uppercase first letter, e.g.: LinearLayout, GridWidget
Method and property names: camelCase with lowercase first letter, e.g.: textAlign, layoutWidth
Private and protected class and struct fields: \_camelCase prepended with underscore, e.g. \_windowWidth
Signal names: camelCase
Enum member names: currently, 3 styles are used JAVA_LIKE, CamelCase and camelCase  TODO: make it consistent?

	class MyClass {
	    private int _x;
	    @property int x() { return _x; }
	}


Spaces
======

Always put space after comma or semicolon if there are more items in the same line.

	update(x, y, isAnimating(this))

	auto list = [1, 2, 3, 4, 5];

Usually there is no space after opening or before closing [] and ()

Spaces may be added to improve readability when there is a sequence brackets of the same type.

	auto y = (x * x + ( ((a - b) + c) ) * 2);

Use spaces before and after == != && || + - * / etc.


Brackets
========

Curly braces for if, switch, for, foreach - preferable placed on the same lines as keyword

	if (a == b) {
	} else {
	}

	foreach(item; list) {
	    writeln(item);
	}	

Cases in switch should be indented:

	switch(action.id) {
	    case 1:
                processAction(1);
	        break;
	    default:
	        break;
	}

For classes and structs opening { can be either at end of line or in a new line). 

	class Foo {
	}

	class Bar : Foo
	{
	}

For methods  { can be either at end of line.

Short methods (e.g. property getters) may be written in one line.

	void invalidate() {
	    //
	}

	int length() { return _list.length; }

