Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 128 129 130 131 132 133 134 135 [136] 137   вперед  Ctrl
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
hVostt
mayton
Transformer trans = tf.newTransformer();


Я прошу прощения, что вклиниваюсь.
Мне просто спросить :)

В Java вроде var завезли, это просто привычка или другие ограничения?

Давай поговорим о целях и о смыслах var. Его ввели не для того
чтобы все явные декларации заменить на выводимые.

Сообщение было отредактировано: 31 июл 20, 11:32
31 июл 20, 11:35    [22176012]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Ввели чтобы уменьшить бойлерплейт, чем славится java.
31 июл 20, 11:50    [22176020]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
В данном конкретном случае я не вижу типа. Это - не конструктор.

tf.newTransformer();


И при прочтении кода глазами (это очень важно!) я не буду обладать
сведениями о том что будет возвращено в результате.

И дальнейшее моё прочтение кода будет отягощено непониманием.
31 июл 20, 12:15    [22176046]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,

var применяют грубо считая количество строчек до применения переменной.
Если получили и через 3-5 строк отдаем в другой метод, то пишем var.
Imho
31 июл 20, 12:19    [22176051]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Мыж не экстремисты. Конечно я не против var. Но чтоб не было как с лямбдами.
Как начали пихать их во все щели. И циклы эмулировать.
31 июл 20, 12:29    [22176068]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Ну, если в шапре оно применяется чаще, то кто экстремисты))) LOL
31 июл 20, 12:33    [22176074]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
С лямбдами и стримами ты прав.
31 июл 20, 12:34    [22176077]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
А как в Шарпе вы делаете эти штуки?

List<String> list = new ArrayList<>();
InputStream file = new FileInputStream("/dev/zero");


Сообщение было отредактировано: 31 июл 20, 12:32
31 июл 20, 12:35    [22176082]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Если надо приводить к другому типу то компилятор все скажет.
Именно при написании кода.
Пишешь две переменные var и ждешь решения компилятора.
31 июл 20, 12:45    [22176097]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Тут - компиллятор бесполезен. Я речь веду об LSP. Тыж если объявил имплементацию массива
как

var list = new ArrayList();


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

interface ISomething {
  ArrayList takeList();
}


Я у господ кодеров-за-еду из Индии очень часто встречал такие штуки.

Сообщение было отредактировано: 31 июл 20, 13:56
31 июл 20, 13:58    [22176159]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Ты комментируй мысль кодом. Что тут не так?
var list = new ArrayList<>();
..... 
..... 
mySetList(list); // тут приведение типа автоматом
31 июл 20, 14:12    [22176171]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
>через всю логику использования. И будет даже видна
Я выше писал что используем на 3,4 или 5 строк кода.
31 июл 20, 14:14    [22176174]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Ну какого типа у тебя будет list?
31 июл 20, 14:16    [22176176]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,

Любого совместимого. Компилятор проверит.
Объяви в параметре нужный тип. Например наследника. Или интерфейс.
Это как this передают.
31 июл 20, 14:23    [22176186]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Ну а в моём примере?
31 июл 20, 14:24    [22176189]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
void mySetList(List<String> myList) {
.....
31 июл 20, 14:26    [22176191]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
В отладке до входа в метод будет один тип. Потом сменится.
31 июл 20, 14:27    [22176193]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
После компилляции будет автоматически выведен тип

java.util.ArrayList


Но вот беда. Этот тип мне не нужен. Вспоминаем LSP.

Да что там. Мне и List<> не нужен. Мне иногда достаточно Iterable<> или даже Collection<>.
Последний - как наивысший уровень абстракций когда просто речь идет о работе с множествами.

Тоесть используя классическую нотацию присваивания

Iterable<String> x = new ArrayList<>();
Collection<String> y = new ArrayList<>();


Я для себя сразу решаю задачи сужения базового интерфейса до того уровня который мне
достаточен чтобы решать данную задачу. Без лишней конкретизации.
31 июл 20, 15:07    [22176240]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Нет логики у тебя.
var переменная это передаточное звено.
А в методы при _прикладном_ коде надо передавать данные. То есть коллекции а не сбоку припеку итераторы.
31 июл 20, 15:18    [22176256]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Я не навязываюсь. LSP - это философия. Не требование вобщем.
31 июл 20, 15:19    [22176257]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
PetroNotC Sharp
void mySetList(Collection<String> myList) {
.....

Работает?
31 июл 20, 15:19    [22176258]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
Я тебя понял. Ты сузил на 3 строки раньше и передал уже суженное))).
По мне это оверхед.
31 июл 20, 15:21    [22176260]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Да SOLID это вообще оверхед.
31 июл 20, 15:25    [22176262]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5384
mayton,
))))
31 июл 20, 15:30    [22176267]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
забыл ник
Member

Откуда:
Сообщений: 3370
mayton
Да SOLID это вообще оверхед.

SOLID это попытка программировать вс тиле ФП, не убирая наследования:)
31 июл 20, 15:50    [22176286]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 128 129 130 131 132 133 134 135 [136] 137   вперед  Ctrl
Все форумы / Java Ответить