Coding Conventions
Coding conventions are a preferred way of doing things.
Files
- Although Grails can handle both dos (\r\n) and *nix (\n) line ends only (\n) should be used, please configure your IDE or editor.
- It is project policy not to include developer's names in the source files, recognition will be given in better and more visible ways.
Format
- Please configure your IDE or editor to use an indent of 4 spaces, with no tabs.
- Follow the generally used formatting of code you see in Grails and this project.
Grails
- As much as possible try to keep the CRUD pages as generated by "grails generate-all"
- For example the Task views and controller are retained as is for application administration.
- If we want to modify the Task views and controller:
- Create a copy of the whole views folder called TaskDetailed/show.gsp etc
- Create a copy of the controller called TaskDetailedController.groovy and edit the class inside to match.
- Then detail to your hearts content.
This way the original views are available as direct access to the data for administration. If the domain changes a "grails generate-all" can be performed on most domains without losing the customisations.
The 'Detailed suffix was chosen as in detailing a car, customised or air-brushed.
A notable exception to this is Person and Authority use 'svn revert' if you accidentally regenerate these.
Documentation
Use self documenting code:
- A few extra lines of clear, commented and readable code has more value than 100 lines of API documentation explaining why the code is so complicated.
- Coders are better off reading code and no-one else reads API documentation.
- Don't abbreviate: LinIntDist could mean a wide range of things, LinthianInternalDistortion is a lot more clear and probably would not have been your first guess.
The documentation is along side the source for good reason they need to be kept in sync. Document and code simultaneously. If you code a feature, document it as you go or better still design the feature by using the documentation then code and document as you go. This way the two are really not that different.