Как загрузить сервер DotNetty, используя сертификат PEM от HashiCorp Vault?

Извините, что не согласен, но я думаю, что основное правило выглядит следующим образом:

  • Для входных аргументов используется наиболее общий.
  • Для выходных значений, наиболее конкретных.

Итак, в этом случае вы хотите объявить реализацию как:

public ArrayList<String> foo() {
  return new ArrayList<String>();
}

Обоснование: входной случай уже известен и объясняется всеми: используйте интерфейс , период. Тем не менее, выходной случай может выглядеть противоречивым. Вы хотите вернуть реализацию, потому что хотите, чтобы у клиента была максимальная информация о том, что получает. В этом случае больше знаний больше.

Пример 1: клиент хочет получить 5-й элемент:

  • return Collection: должен повторять до 5-го элемента vs return List :
  • return List: list.get(4)

Пример 2: клиент хочет удалить 5-й элемент:

  • return List: должен создать новый список без указанного элемента (list.remove() является необязательным).
  • return ArrayList: arrayList.remove(4)

Так что большая правда, что использование интерфейсов отлично, потому что он способствует повторному использованию, уменьшает сцепление, улучшает ремонтопригодность и делает людей счастливыми ... но только при использовании в качестве входных данных.

Итак, это правило может быть указано как:

  • Будьте гибкими в отношении того, что вы предлагаете.
  • Будьте информативны с тем, что вы доставляете.

Итак, в следующий раз, пожалуйста, верните реализацию.

0
задан Artyom Sokolov 28 February 2019 в 11:33
поделиться