# Guidelines
This collection gives you an overview about the guidelines we are follow to improve our teamwork.
INFO
This section is still in progress and support highly welcome.
# 1. Contribution Guidelines
# 1.1 Pull Requests
- Make sure you respect all language specific code guidelines.
- Make sure you that you not modified any IDE settings files as long as the changes are not related to you pull request.
- Please do not reformat code sections if not required. Always try to follow the project related code formatting rules.
- Do not include useless modifications such as changing white spaces..
- No one is happy to criticize your code changes. Therefore, please perform your own code review before submitting any pull requests since this can save project maintainer a huge amount of time during the code revise.
- To do so, change into the branch you wanna submit and check all changes against the project master branch. Therefore, use git to track all changes:
git diff --word-diff master
- To do so, change into the branch you wanna submit and check all changes against the project master branch. Therefore, use git to track all changes:
# 2. Code Guidelines
# 2.3 Java
- Please never return
null
in any methods bodies since this can easily lead toNullpointerExceptions
.- Use
void
instead if there is nothing to return or throw anCouldNotPerformException
in error cases.
- Use
- Please do not use
boolean
as return values to indicate success or error of a method execution.- Thats what Exception are good for. Therefore, throw an
CouldNotPerformException
in error cases.
- Thats what Exception are good for. Therefore, throw an
- Do not just print exceptions via
System.out
/System.err
or by passing the exception to any logger print.- Please use the
ExceptionPrinter.printHistory(...)
for printing any exceptions.
- Please use the
- Declare global and local variables always
final
if useful. - Always use
org.slf4j
as logging framework since its an logger abstraction layer which enables one to exchange the logger backend later without any code modifications.- Therefore, try to avoid logging via
System.in
/System.err
- Therefore, try to avoid logging via
# 3. Project Guidelines
# 3.1 License
- Include the license file on top-level in any project repository.
# 3.2 Installer
- Provide an
install.sh
script in any repository which enables an easy installation of the application. Furthermore, try to minimize external dependencies such as using multiple build tools and warn if those are not available.