Size: a a a

2020 March 10

RK

Roman Khlebnov in JUG NN
Как по мне - лучше б они после релизного фейла с type inference в Java 11 его допилили как следует (что сложно, ибо примитивы и null)
источник

SK

Sergey Kapralov in JUG NN
Roman Khlebnov
ИМХО, бойлеркод ведёт к снижению читабельности, что ведёт к усложнению поддержки (видывал я кастомные сеттеры, которые из-за бойлерплейтов сначала не замечаешь, а потом удивляешься).

Мне во всей этой истории не нравится другое - из JVM языков на слуху (Java, Kotlin и Scala) у нас теперь будет три разные вещи, представляющие собой одно и то же (record / data class / case class). Эскобара в студию, конечно, но хрень та ещё
Про читабельность я для себя одну вещь понял. Судить о поддерживаемости по читабельности — крайне неблагодарное дело. Читабельность — субьективная характеристика. Дай один и тот же кусок кода двум людям, один разобьет его на десяток модулей потому что "портянка нечитабельная", другой будет жаловаться что "многа классов, нечитабельно". Нет. Я предпочитаю судить о поддерживаемости по более объективным характеристикам. Например по степени реюзабельности модулей. Стабильности абстракций. Волатильности конкретик. Эти вещи измеримы, и их значения всегда зависят от разработчика. Никакой сахар их не заимпрувит.
источник

SK

Sergey Kapralov in JUG NN
В то же время, абсолютно все проблемы с поддерживаемостью, которые я наблюдал, имеют одни и те же симптомы. Нестабильные тухлые абстракции, либо чрезмерный каплинг на конкретики. Низкая читабельность в таких случаях была скорее следствием чем причиной.
источник

RM

Roman Makhlin in JUG NN
И все же ты не можешь не согласиться, что все это нужно что бы делать более надёжные вещи за меньшее время. То есть, если все метрики хороши, то и вносить изменения легче и быстрее. Сахар в данном случае ещё один способ добиться того же самого - более выразительные языки позволяют лучше транслировать мысли в код, чем много словные, тем самым сокращая время на внесение изменений, а скрытая в сахаре конструкция почти всегда надёжней "развернутого" аналага, так как исключает прослойку между монитором и стулом
источник

RM

Roman Makhlin in JUG NN
Поэтому сахар не менее важен, если не важнее. Метрики существуют снаружи языка, и абстрагирования от сути, а сахар есть часть живого языка
источник

SK

Sergey Kapralov in JUG NN
Roman Makhlin
И все же ты не можешь не согласиться, что все это нужно что бы делать более надёжные вещи за меньшее время. То есть, если все метрики хороши, то и вносить изменения легче и быстрее. Сахар в данном случае ещё один способ добиться того же самого - более выразительные языки позволяют лучше транслировать мысли в код, чем много словные, тем самым сокращая время на внесение изменений, а скрытая в сахаре конструкция почти всегда надёжней "развернутого" аналага, так как исключает прослойку между монитором и стулом
Я не говорю что сахар плох, еще раз. Я говорю что сахар не импрувит ничего из мною вышеперечисленного.
источник

SK

Sergey Kapralov in JUG NN
Roman Makhlin
Поэтому сахар не менее важен, если не важнее. Метрики существуют снаружи языка, и абстрагирования от сути, а сахар есть часть живого языка
И нет, я все же считаю что сахар менее важен чем реюзабельность и качество абстракций. Просто последнее менее оценено чем первое. О нем меньше говорят, и часто лгут. И зря.
источник

RM

Roman Makhlin in JUG NN
Имхо, все наоборот
источник

K

Keanor in JUG NN
Я писал на разных языках, почти никогда синтаксические конструкции не являлись причиной плохо читаемого кода. К синтаксису очень быстро привыкаешь.
источник

SK

Sergey Kapralov in JUG NN
Roman Makhlin
Имхо, все наоборот
О сахаре меньше говорят и больше лгут?
источник

K

Keanor in JUG NN
Давайте обсудим синтаксические возможности перла, и насколько выразительные и понятные можно писать на нем конструкции, благодаря невероятной гибкости языка :)
источник

RM

Roman Makhlin in JUG NN
Keanor
Давайте обсудим синтаксические возможности перла, и насколько выразительные и понятные можно писать на нем конструкции, благодаря невероятной гибкости языка :)
Порог вхождения же
источник

RK

Roman Khlebnov in JUG NN
Sergey Kapralov
Про читабельность я для себя одну вещь понял. Судить о поддерживаемости по читабельности — крайне неблагодарное дело. Читабельность — субьективная характеристика. Дай один и тот же кусок кода двум людям, один разобьет его на десяток модулей потому что "портянка нечитабельная", другой будет жаловаться что "многа классов, нечитабельно". Нет. Я предпочитаю судить о поддерживаемости по более объективным характеристикам. Например по степени реюзабельности модулей. Стабильности абстракций. Волатильности конкретик. Эти вещи измеримы, и их значения всегда зависят от разработчика. Никакой сахар их не заимпрувит.
А я предпочитаю судить о поддерживаемости по адекватным тестам логики и покрытию, но в то же время если я не могу прочитать и понять что происходит - как я буду фиксить код?

Абстракции - та ещё хрень. Особенно если следовать паттернам буква в букву и херачить, например, в спринге интерфейс для единственного бина на весь проект - проще не запиливать интерфейс вообще.

Ещё раз, ради холивара - программирование в сути своей сокращается до “прочитать - подумать - написать”. Если “прочитать” занимает половину рабочего дня, а “подумать” несёт полезную нагрузку - сколько полезной нагрузки в день у тебя будет с хреново читабельным кодом?
источник

SK

Sergey Kapralov in JUG NN
Roman Khlebnov
А я предпочитаю судить о поддерживаемости по адекватным тестам логики и покрытию, но в то же время если я не могу прочитать и понять что происходит - как я буду фиксить код?

Абстракции - та ещё хрень. Особенно если следовать паттернам буква в букву и херачить, например, в спринге интерфейс для единственного бина на весь проект - проще не запиливать интерфейс вообще.

Ещё раз, ради холивара - программирование в сути своей сокращается до “прочитать - подумать - написать”. Если “прочитать” занимает половину рабочего дня, а “подумать” несёт полезную нагрузку - сколько полезной нагрузки в день у тебя будет с хреново читабельным кодом?
> А я предпочитаю судить о поддерживаемости по адекватным тестам логики и покрытию

Это скорее тоже следствие высокого или низкого качества абстракций.

> Абстракции - та ещё хрень. Особенно если следовать паттернам буква в букву и херачить, например, в спринге интерфейс для единственного бина на весь проект - проще не запиливать интерфейс вообще.

Это потому что паттерны — не абстракции от слова вообще. Нам лгут, и паттерны — пример этой лжи.
источник

RK

Roman Khlebnov in JUG NN
Тот же самый случай из практики с бизнес логикой в set - казалось бы: тесты - есть, покрытие - есть, а класс сгенерирован без вот этого вашего сахара типа Lombok’а и представляет собой типичное DTO. Только с небольшим твиком. Неправильным твиком в самой жопе класса. Как же удобно, да
источник

SK

Sergey Kapralov in JUG NN
источник

SK

Sergey Kapralov in JUG NN
Везде где я встречал хрень, я видел рут-коз в нестабильности той или иной абстракции, просачивании в них конкретик или каплинге на конкретики. И наоборот, удачные примеры всегда соответствовали этим принципам в том или ином виде.
источник

K

Keanor in JUG NN
Что-то давно митапов небыло)
источник

K

Keanor in JUG NN
Сможешь рассказать? Тема для многих сложная и интересная ))
источник

SK

Sergey Kapralov in JUG NN
Keanor
Сможешь рассказать? Тема для многих сложная и интересная ))
Смогу, но врядли это чтото изменит. Потому что выводы к которым я пришел далеки от мейнстрима.
источник