Рассмотрит следующий случайразличного поведения Sonar для слабо двух подобных сценариев
public void setRules(MyRule[] rules) {
this.rules=rules;
}
Sonar
жалуется и говорит,
Конструкторов и методы, получающие массивы должны клонировать объекты и магазина копии. Это предотвращает, что будущие изменения от пользователя влияют на внутреннюю функциональность .
Это правда, и я получил значение, когда кто-то изменил значение array
после установки этого параметра, Это изменение может повлиять на внутренние функции. Если мы клонируем эти изменения массива, это не повлияет.
Теперь рассмотрим другой случай
public void setExecutions(List<MyRule> ruleList) {
this.ruleList= ruleList;
}
Sonar
Теперь не говоря любой вопрос. почему клон здесь не нужен?
Сонар - это IDE ???? возможно, его объект параметра, который действует как клон. –
@SrinathGanesh Нет, это платформа с открытым исходным кодом для непрерывного контроля качества кода. http://en.wikipedia.org/wiki/SonarQube, http://www.sonarqube.org/effective-code-review-with-sonar/ –
этому Q требуется больше внимания –