Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 11 12 [13] 14 15   вперед  Ctrl
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
Озверин

После код ревью и проверки на чек стайл код выгляди так:

public class A {

 private B b;
 
 @Autowired
 public A(B b) {
  this.b = b;
 }
}
Прямо в таком виде и прошел ревью? Вроде по канону так должно быть:

public class A {

 private final B b;
 
 public A(B b) {
  this.b = b;
 }
}

Озверин
Внимание, вопрос!?
Не знаю в чем у вас вопрос, идея была показать мощь DI на одном классе?
18 апр 19, 12:56    [21865991]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов, моя идея, как di, ioc и сила слова помогут в данном случае что-либо отрефакторить, если из конструктора этого класса надо все равно убрать интерфейс класса b?
18 апр 19, 13:04    [21866006]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
забыл ник
Member

Откуда:
Сообщений: 2814
Как же быть проектам без DI?
18 апр 19, 14:31    [21866175]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
забыл ник
Как же быть проектам без DI?


да нито от di не отказывается. Просто тут мнение вдруг появилось, что если есть di, то рефакторинг настолько прост становится, что можно с закрытыми глазами делать.
18 апр 19, 14:33    [21866184]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
забыл ник
Member

Откуда:
Сообщений: 2814
Озверин
забыл ник
Как же быть проектам без DI?


да нито от di не отказывается. Просто тут мнение вдруг появилось, что если есть di, то рефакторинг настолько прост становится, что можно с закрытыми глазами делать.


Да я понимаю, то риторический вопрос был) По иронии судьбы на текущем проекте начали с рефакторинга - убрали DI :)
18 апр 19, 14:37    [21866192]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
Озверин
моя идея, как di, ioc и сила слова помогут в данном случае что-либо отрефакторить, если из конструктора этого класса надо все равно убрать интерфейс класса b?
Если вам принципиально не нравится наличие конструктора в жава коде (хотя проблемы нет), можете оломбочить проект и писать @RequiredArgsConstuctor, пойнт же в том, что без DI при добавлении новой зависимости в класс придется еще и ответную часть переделывать, а не просто в одном классе добавить еще одно поле и возможно поменять конструктор.
18 апр 19, 14:39    [21866197]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
Озверин
Все знают, что код ревью, архитектор и все такое и ВСЕ РАВНО нет НИ ОДНОГО проекта, длительностью от 1 года, ГДЕ НЕ ТРЕБОВАЛСЯ бы рефакторинг.

У вас есть примеры? У меня, лично, нет. Из чего я делаю вывод, что ваши слова да -правильные, но что-то не так с ними, раз не работает?
Ну вот берем к примеру спринг - там на первой странице коммиты со словом "refactoring" покрывают последние полтора года, если смотреть по тексту самих коммитов, то там не рефакторинг-рефакторинг, а просто какие-то улучшения в отдельных классах, ничего принципиально не меняющие/ломающие, причем в абсолютном своем большинстве от одного человека. Здесь надо, конечно, сделать скидку на то, что спринг - это библиотека, а не приложение, поэтому им заниматься рефакторингом и ломать обратную совместимость по определению западло (хотя если посмотреть на другой проект - там и без рефакторинга ломают обратную совместимость направо и налево).

Еще раз повторюсь: рефакторинг - это не стиль программирования, это расплата за старые грехи.
18 апр 19, 14:59    [21866250]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
забыл ник
Как же быть проектам без DI?
код писать более аккуратно и функциональность наперед продумывать, а не как в TDD: пишем только то что требует тестовый сценарий, а потом постоянно рефакторим.
18 апр 19, 15:01    [21866252]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
Все знают, что код ревью, архитектор и все такое и ВСЕ РАВНО нет НИ ОДНОГО проекта, длительностью от 1 года, ГДЕ НЕ ТРЕБОВАЛСЯ бы рефакторинг.

У вас есть примеры? У меня, лично, нет. Из чего я делаю вывод, что ваши слова да -правильные, но что-то не так с ними, раз не работает?
Ну вот берем к примеру спринг - там на первой странице коммиты со словом "refactoring" покрывают последние полтора года, если смотреть по тексту самих коммитов, то там не рефакторинг-рефакторинг, а просто какие-то улучшения в отдельных классах, ничего принципиально не меняющие/ломающие, причем в абсолютном своем большинстве от одного человека. Здесь надо, конечно, сделать скидку на то, что спринг - это библиотека, а не приложение, поэтому им заниматься рефакторингом и ломать обратную совместимость по определению западло (хотя если посмотреть на другой проект - там и без рефакторинга ломают обратную совместимость направо и налево).

Еще раз повторюсь: рефакторинг - это не стиль программирования, это расплата за старые грехи.


так где тот самый проект, который живет без рефакторинга? По вашим словам, надо всего лишь
а) нанять грамотного архитектора
б) хороших специалистов
в) просто заставить людей перестать ошибаться

Где?
18 апр 19, 15:07    [21866263]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
моя идея, как di, ioc и сила слова помогут в данном случае что-либо отрефакторить, если из конструктора этого класса надо все равно убрать интерфейс класса b?
Если вам принципиально не нравится наличие конструктора в жава коде (хотя проблемы нет), можете оломбочить проект и писать @RequiredArgsConstuctor, пойнт же в том, что без DI при добавлении новой зависимости в класс придется еще и ответную часть переделывать, а не просто в одном классе добавить еще одно поле и возможно поменять конструктор.


мне принципиально непонятна связь наличия ioc и di с тем, что рефакторинг необходим?
18 апр 19, 15:09    [21866265]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
Все знают, что код ревью, архитектор и все такое и ВСЕ РАВНО нет НИ ОДНОГО проекта, длительностью от 1 года, ГДЕ НЕ ТРЕБОВАЛСЯ бы рефакторинг.

У вас есть примеры? У меня, лично, нет. Из чего я делаю вывод, что ваши слова да -правильные, но что-то не так с ними, раз не работает?
Ну вот берем к примеру спринг - там на первой странице коммиты со словом "refactoring" покрывают последние полтора года, если смотреть по тексту самих коммитов, то там не рефакторинг-рефакторинг, а просто какие-то улучшения в отдельных классах, ничего принципиально не меняющие/ломающие, причем в абсолютном своем большинстве от одного человека. Здесь надо, конечно, сделать скидку на то, что спринг - это библиотека, а не приложение, поэтому им заниматься рефакторингом и ломать обратную совместимость по определению западло (хотя если посмотреть на другой проект - там и без рефакторинга ломают обратную совместимость направо и налево).

Еще раз повторюсь: рефакторинг - это не стиль программирования, это расплата за старые грехи.


насчет спринга, в котором нет "ничего ломающего" при рефакторинге..я конечно, не могу просмотреть все эти коммиты, но такое ощущение, что вы последние 5-7 лет не со спрингом работаете, а где то опять же на поляне с единорогами.

Смореть надо на "критикал" баги. Их там много.
Если смотреть так - сквозь пальцы на коммты с рефакторингом(даже если условиться, что сюда они вошли все), то даже в этом списке достаточно вещей с перемещением классов, изменением логики, созданием новых классов, а значит значительным изменением логики.
Почему же это не рефакторинг-рефакторинг?
18 апр 19, 15:21    [21866289]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41026
Озверин
Андрей Панфилов
пропущено...
Ну вот берем к примеру спринг - там на первой странице коммиты со словом "refactoring" покрывают последние полтора года, если смотреть по тексту самих коммитов, то там не рефакторинг-рефакторинг, а просто какие-то улучшения в отдельных классах, ничего принципиально не меняющие/ломающие, причем в абсолютном своем большинстве от одного человека. Здесь надо, конечно, сделать скидку на то, что спринг - это библиотека, а не приложение, поэтому им заниматься рефакторингом и ломать обратную совместимость по определению западло (хотя если посмотреть на другой проект - там и без рефакторинга ломают обратную совместимость направо и налево).

Еще раз повторюсь: рефакторинг - это не стиль программирования, это расплата за старые грехи.


так где тот самый проект, который живет без рефакторинга? По вашим словам, надо всего лишь
а) нанять грамотного архитектора
б) хороших специалистов
в) просто заставить людей перестать ошибаться

Где?

+1

Мда.. Звучит как хорошая мечта.
18 апр 19, 15:45    [21866309]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
казинак
Member

Откуда:
Сообщений: 1263
имхо
спор идет о следствиях
юнит тесты и рефакторинг - это следствие того, что ооп стали пихать везде

ООП оч уместно в разработке библиотек UI компонентов
по опыту, дельфи, дотнет, реакт - это классные библиотеки UI компонентов

а в бд или бэкенде в вебе ООП нахер не надо
в бд - реляционные операции
а в бэкенде - request-response, т.е. последовательная логика,
и реализация в императивном стиле как раз к месту

имхо,
ООП в базе или в бэкенде - это как на лыжах по асфальту: "можно, но зачем?"
18 апр 19, 18:05    [21866454]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41026
В бэкенде вполне себе умество заводить плоские бизнес-сущности. Plain. POJO.
Насчет логики. Да. Ее можно реализовать процедуральном стиле. Но скажите.
Вы сколько практически видели рабочих бизнес-бэкендов написанных без ООП
вообще?
18 апр 19, 18:11    [21866463]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
казинак
Member

Откуда:
Сообщений: 1263
mayton
В бэкенде вполне себе умество заводить плоские бизнес-сущности. Plain. POJO.
Насчет логики. Да. Ее можно реализовать процедуральном стиле. Но скажите.
Вы сколько практически видели рабочих бизнес-бэкендов написанных без ООП
вообще?

бгг
я когда-то сам так писал
JSP и JDBC - и никаких орм

никогда не видел смысла в том, чтобы вытащить данные селектом в resulteset,
а потом, отфильтровать одну запись и сделать из результата класс для active record
а потом создать коллекцию, в которую запихать несколько active records

нахера?
если в резалтсете и так набор записей
18 апр 19, 18:25    [21866480]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41026
казинак
mayton
В бэкенде вполне себе умество заводить плоские бизнес-сущности. Plain. POJO.
Насчет логики. Да. Ее можно реализовать процедуральном стиле. Но скажите.
Вы сколько практически видели рабочих бизнес-бэкендов написанных без ООП
вообще?

бгг
я когда-то сам так писал
JSP и JDBC - и никаких орм

никогда не видел смысла в том, чтобы вытащить данные селектом в resulteset,
а потом, отфильтровать одну запись и сделать из результата класс для active record
а потом создать коллекцию, в которую запихать несколько active records

нахера?
если в резалтсете и так набор записей

Наиболее красивую интеграцию мира ООП и баз данных я видел в InterSystems Cache.
Там всё было - native. Я даже готовился на разраба этой системы в двухтысячных.
Но вакансия cгорела.
18 апр 19, 18:31    [21866485]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
казинак
mayton
В бэкенде вполне себе умество заводить плоские бизнес-сущности. Plain. POJO.
Насчет логики. Да. Ее можно реализовать процедуральном стиле. Но скажите.
Вы сколько практически видели рабочих бизнес-бэкендов написанных без ООП
вообще?

бгг
я когда-то сам так писал
JSP и JDBC - и никаких орм

никогда не видел смысла в том, чтобы вытащить данные селектом в resulteset,
а потом, отфильтровать одну запись и сделать из результата класс для active record
а потом создать коллекцию, в которую запихать несколько active records

нахера?
если в резалтсете и так набор записей


вам это с вадей обсудить.
На вопрос - очень простой ответ - читаемость.
Другой вопрос, что ооп в яве пошло немноог по иному пути и мне больше заходит ddd в плане к подходу именования и сущностей, объединения свойств и так далее.
19 апр 19, 08:18    [21866757]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
Озверин
мне принципиально непонятна связь наличия ioc и di с тем, что рефакторинг необходим?
Ну мне тоже непонятна необходимость рефакторинга при наличии IoC/DI - кода меньше, зависимости через весь стэк таскать не нужно, просто делаем точечные изменения там где нужно и все.
Озверин
насчет спринга, в котором нет "ничего ломающего" при рефакторинге..я конечно, не могу просмотреть все эти коммиты, но такое ощущение, что вы последние 5-7 лет не со спрингом работаете, а где то опять же на поляне с единорогами.

Смореть надо на "критикал" баги. Их там много.
Если смотреть так - сквозь пальцы на коммты с рефакторингом(даже если условиться, что сюда они вошли все), то даже в этом списке достаточно вещей с перемещением классов, изменением логики, созданием новых классов, а значит значительным изменением логики.
Почему же это не рефакторинг-рефакторинг?
Чет не то, вы просили промер проекта где не рефакторят каждый раз после похода в уборную - я вам его привел, вы же начинаете привередничать в духе, а вот смотрите: там баги в проекте, да еще за полтора года аж целый класс из одного модуля в другой перенесли. Для продуктовой разработки рефакторинг не свойственен, более того, более другим языкам рефакторинг тоже не свойственен, вы же обчитались туалетного чтива и несете гнилую идею в массы, а в вашем чтиве прямым текстом написано про целевую аудиторию: разработчик - дурак и с первого раза код написать не может.
19 апр 19, 09:41    [21866814]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41026
Андрей Панфилов, а сколько тысяч строк в вашем проекте?
19 апр 19, 10:39    [21866879]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов, я просил проект, где нет рефакторинга, вы показали пример, где он есть. По-моему, это у вас разногласия с вашими единорогами...У вас какая-то сортирная тематика пошла: то обоссать архитектора, то в туалет сходить за рефакторингом. Все, что от вас требуется, это признать, что в мире фактически нет проектов более или менее крупных, которые обходятся без рефакторинга ...
Ну если вы такоие знаете, я тут подожду, чтобы вы привели пример.
19 апр 19, 10:53    [21866894]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
alex55555
Member

Откуда:
Сообщений: 2129
Озверин
До ioc код выглядит вот так:
...
После код ревью и проверки на чек стайл код выгляди так:

Это не IoC.
19 апр 19, 10:54    [21866896]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
alex55555
Озверин
До ioc код выглядит вот так:
...
После код ревью и проверки на чек стайл код выгляди так:

Это не IoC.



срочно расскажите, что это.
19 апр 19, 10:56    [21866899]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1154
какое интересное перевоплощение из тестирования в рефакторинг )))
из серии что было раньше "рефакторинг" или "тестирование"? :)
19 апр 19, 10:58    [21866901]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3249
mayton
а сколько тысяч строк в вашем проекте?
Вы опять с индусскими метриками?
Вот простой пример:
mayton
public static void recusiveN(int n, int maxN) {
        if (n <= maxN) {
              println(n);
              recursiveN(n + 1, maxN);
        }
}

Ваше решение неправильное просто потому что вы условие не прочли - условные переходы использовать нельзя. Подсказка как сравнить число с 0:
	public static void main(String[] args) {
		N[] n = new N[]{() -> false, () -> true};
		System.out.println(n[-1 >>> 31].isNegative());
		System.out.println(n[0 >>> 31].isNegative());
		System.out.println(n[1 >>> 31].isNegative());
	}

	interface N {

		boolean isNegative();

	}

Идите рефакторите
19 апр 19, 10:59    [21866907]     Ответить | Цитировать Сообщить модератору
 Re: Тестирование. Что именно тестировать? Как определить середину?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41026
Андрей Панфилов, да. Насчет условий я проглядел. Ну что-ж. Тернарный оператор сойдет.

Я почему спросил про метрики. Обычно (как правило) коплексность проекта растет от количества строк.
И от количества участников команды. Я не знаю что там у вас за проект. Возможно действительно
у вас всё лазурно и радужно.

Но чьорт возьми чем вы заняты? Может у вас вообще бэклог пустой. И проект уже давно не развивается.
19 апр 19, 11:04    [21866912]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 11 12 [13] 14 15   вперед  Ctrl
Все форумы / Java Ответить