## General

* Use as many `lambda function` expressions as possible.

* Method parameters must be modified with `final`.

* Constants modified `static final` must be named in upper case.

* Methods should not have too many parameters.

* Clear unused classes and methods.

* Use linux line separators.

* Tab size is 4 and keep indents on empty lines.

* All code passage of Checkstyle:
https://github.com/apache/incubator-shenyu/blob/master/script/shenyu_checkstyle.xml



## Object

* Ues Optional transform Null.

> Optional.ofNullable(xxx).orElse(obj)

* Ues Objects Judgment Null Or NotNull.

> Objects.isNull(obj) OR Objects.nonNull(obj)

* Ues `Objects.equals` Judgment are they equal.

> Objects.equals(obj1, obj2)

* Creater objects outside of a for loop.

```java
Object object = null;
for () {
    object = new Object();
}
```

## Collection

* must indicate initial capacity to avoid recalculate capacity.

### List

* Use `LinkedList` when you need to add or delete elements, Else use
`ArrayList`.

* Ues `org.apache.commons.collections4.CollectionUtils` Judgment Is empty
Or Not empty.

> CollectionUtils.isEmpty(list) or CollectionUtils.isNotEmpty(data)

### Map

* Use `ConcurrenHashMap` when considering concurrency of threads, Else use
`HashMap`

* Iterate over map using the most efficient way Or use `lambda function`.

```java
Set<Map.Entry<String, String>> entrySet = map.entrySet();
Iterator<Map.Entry<String, String>> iter = entrySet.iterator();
while (iter.hasNext()) {
        Map.Entry<String, String> entry = iter.next();

}
```

## String

* Ues `org.apache.commons.lang3.StringUtils` Judgment Is empty Or Not empty.

> StringUtils.isEmpty(list) or StringUtils.isNotEmpty(data)

* `String.join` should be used when string concatenation occurs.

> String join(CharSequence delimiter, CharSequence... elements)


## Exception

*  Do not use try...catch in a loop, it should be on the outermost layer.

```
try {
  for () {
  }
} catch () {

}
```

* Do not use `printStackTrace()`.

* Please use custom exceptions or `ShenyuException`.


## Resource

* Please use `try with resource` to close resource.

Kunshuai Zhu <[email protected]> 于2021年9月10日周五 下午11:51写道:

> All the unit tests are suggested to be a final class, as it is not
> likely to extend them.
> ## Unit test class
> define unit test class as a final class
> ```java
> public final class AesUtilsTest {
>     ...
> }
> ```
>
> XiaoYu <[email protected]> 于2021年9月6日周一 下午6:50写道:
> >
> > Hi community
> > A project's code habits are very important,
> > especially for projects like ours that are entirely community-based.
> > So I'd like to invite everyone to come together and suggest better code
> to
> > make the shenyu project better.
> >
> > If you have good suggestions you can reply directly to the email.
> > Or reply this issue :
> https://github.com/apache/incubator-shenyu/issues/2033
> >
> > Thanks!
>

Reply via email to