- Write extremely clean, simplify and graceful code. Fully agree with <Refactoring: Improving the Design of Existing Code> and <Clean Code: A Handbook of Agile Software Craftsma>.
Code push conventions
- Make sure all test cases passed.
- Make sure test coverage not lower than dev branch.
- Use checkstyle to check code style, provide special reason if rule violated. Find checkstyle template from
sharding-sphere/src/resources/sharding_checks.xml, please use checkstyle 8.8 to run the rule.
- Make sure
mvn clean install can be success.
- Delete unused code in time.
- Use linux line seperator.
- Indent (including blank lines) is consistent with the previous line.
- No unnecessary blank line.
- All logs and java docs are in English.
- Commit allow javadoc, todo and fixme only.
- Give a meaningful variable name. The name of return value is result; The name of unit value is each in for each sentence, instead of entry for map iterator.
- Name of properties file is camel-case, first letter is lowercase.
- Constant on left and variable on right in conditional expression.
- The nested loop should extract to a new private method.
- Replace Nested Conditional with Guard Clauses.
- Access permissions for classes and methods should minimal as possible.
- Parameters and return value are not allowed to be null.
- If use comment to explain the code, try to split several small methods, and use method name to explain it.
- Use lombok instead of the constructor, getter, setter methods and log variable.
- keep style consistent with existed code.
- No duplicate code and configuration.
Unit Test Conventions
- Test code and production code equality, should follow the same code conventions.
- Test cases should fully covered if no special reason.
- Separate environment preparation codes and test codes.
- Only junit Assert, hamcrest CoreMatchers, Mockito related can use static import.
- For single parameter assert, should use
- For multiple parameters assert, should use
- Assert accurately, do not use
containsString and so on.
- Use actualXXX and expectedXXX to name related variable.