Я наткнулся на очень интересную библиотеку Injection Dependency под названием ButterKnife. Используя ButterKnife, можно легко вводить представления в действия или фрагменты.
class ExampleActivity extends Activity {
@InjectView(R.id.title) TextView title;
@InjectView(R.id.subtitle) TextView subtitle;
@InjectView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
}
Однако, если вы используете Dependency Injection, эти представления должны быть public, чтобы ButterKnife мог его вводить (используя поля private, приводит к исключению fields must not be private or static).
В моем прошлом проекте я всегда делал все поля членов (включая представления) private, поскольку я думал, что это лучшая практика (скрытие информации и т.д.). Теперь мне интересно, есть ли причина, по которой не следует делать все взгляды public? В этом случае я не могу использовать ButterKnife, но я хочу использовать его, потому что он значительно упрощает код.