Что такое code smells и его устранение

Что такое code smells и его устранение

Sergey Nemchinskiy

5 месяцев назад

15,469 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@dmitriy9232
@dmitriy9232 - 22.03.2024 19:49

Даешь тренинг по рефакторингу! ))

Ответить
@user-lc2tt9kl9g
@user-lc2tt9kl9g - 01.03.2024 22:54

Я бы еще к плохому коду отнес лишком длинные классы

Ответить
@diatm1506
@diatm1506 - 29.02.2024 13:02

Сергей что Вы думаете о книге Khalila Stemmlera
The Software Design & Architecture Handbook?

Ответить
@vladimirgaydamakin7155
@vladimirgaydamakin7155 - 25.02.2024 23:20

хорошее видео

Ответить
@MaximKacc
@MaximKacc - 17.02.2024 22:37

Да уж, индусы нынче switch-case'ом пишут)

Ответить
@vlera4198
@vlera4198 - 15.02.2024 14:34

помню я все таки писал комменты в коде. алгоритм был сложноватый и гдето с 3-й строчки у меня самого дымок из ушей шел и я просто даже для себя написал что вот тут я удаляю то-то для тогото и в другом месте тоже чтото написал. Синьоры которые обычно любили клевать на ревью на эти комменты не делали замечания, ну там реально сложно было понять просто читая код, ну и в итоге работал он быстро

Ответить
@kasparzubarev
@kasparzubarev - 12.02.2024 17:58

Если вы пишете на С то полезным будет посмотреть на то как организованы "конструкторы" структур в исходниках ядра Linux. В некоторых драйверах применяются принципы аналогичные принципам используемым в ООП, особенно в драйверах работающих с видеоподсистемой V4L2. Можно много занимательного почерпнуть

Ответить
@rudolfsikorsky7900
@rudolfsikorsky7900 - 11.02.2024 00:22

Бывает код, покрытый тестами, а у меня - код, порытый туду-шками :)

Ответить
@zarazlik789
@zarazlik789 - 10.02.2024 23:56

Даешь тенинг

Ответить
@itlife8792
@itlife8792 - 10.02.2024 12:58

еще бывает оставляют, старый код закоменченным (прям огромными блоками), или вешают @Deprecated с ссылкой. на новый метод, но я сторонник удалять такое, хотя кто-то оставляет @Deprecated методы, чтобы понять, какой метод пришел на замену

Ответить
@miminorka
@miminorka - 08.02.2024 00:25

вобще с такими радикальными методами без рассмотрения других вариантов это конечно же экстремизм

Ответить
@miminorka
@miminorka - 08.02.2024 00:22

вообще очень категорический совет и уж точно неприменимый ко всем ситуациям,

повторение (копирование) кода вполне нормально к тем местам, где мы уверенны что логика будет другой, в тех же местах где нам надо чтобы логика была той же, но обьекты другими, надо переделывать под дженерики а не копировать

Ответить
@olegoleg135
@olegoleg135 - 08.02.2024 00:19

Про "закомментированный" код улыбнуло. Каждая нормальная IDE поддерживает сворачивание блоков кода любого размера, так что это точно не должно являтся проблемой. Также иногда бывает полезным оставлять такие блоки, чтобы в дальнейшем понимать, как возникла новая версия этого блока. Например, какой-то сложный алгоритм, который был изначально реализован в каком-то методе, потом этот метод был существенно переделан, но без старой версии этого метода трудно понять(если вобще возможно), почему именно так в последствии был реализован алгоритм в данном методе.

Ответить
@miminorka
@miminorka - 07.02.2024 23:58

копирование кода оправдано 100 если заранее известно что он будет работать отлично от исходного, и в этом случае копировние оправдано, об этом нужно сказать

Ответить
@semyontikhonenko7937
@semyontikhonenko7937 - 07.02.2024 03:08

Во всех современных языках давно есть передача параметров по названию

Ответить
@user-rg4rp9ie1k
@user-rg4rp9ie1k - 06.02.2024 05:46

Спасибо большое за Ваши видео.
Прокомментируйте пожалуйста Apple Vision Pro, какие перспективы Вы видите, какой язык понадобится для разработки приложений под Vision Pro. Спасибо !

Ответить
@Petrovi_-tv5et
@Petrovi_-tv5et - 06.02.2024 00:19

Здравствуйте , можете пожалуйста обьяснить на простых словах про DOM JS ? Спасибо

Ответить
@LeonidYakovlev85
@LeonidYakovlev85 - 05.02.2024 09:33

Сергей и весь коллектив канала, традиционное спасибо за выпуск, как всегда здорово — интересно и содержательно 🙏

Ответить
@AlexesUA
@AlexesUA - 05.02.2024 09:29

Мені точно сподобався би тренінг по рефакторінгу. Та й відео на ~20 годин зайшло би. 20 годин розслабляючого голоса Сергія.... Каєф... 😅

Ответить
@Vlad-ok8wp
@Vlad-ok8wp - 04.02.2024 13:32

Коли вкотре чую що метод повинен буту не більше строрінки, так і хочу показати це відіо своєму шефу. В мене на фірмі код в 1000 строк це норма, максімально здається десь біля 2000 . Колі я почінаю працювати с новим для мене методом, пару годин може знадобитись щоб зрозуміти як це працює.

Ответить
@user-cg4pk1hv7y
@user-cg4pk1hv7y - 04.02.2024 13:30

Я добавил бы следующее к code smells:
1) это создание объектов, классы которых реализуют один и тот же интерфейс, через new. Лучше использовать аннотации + рефлексия и создавать объекты в ObjectFactory

2) Использовать pojo классы, сформированные на основе json, вместо этого использовать JsonObject или String + jsonPath

Ответить
@london2163
@london2163 - 04.02.2024 12:44

Не могли вы снять видео что должен знать джуниор с++

Ответить
@Carrergt
@Carrergt - 04.02.2024 00:19

Так буде цікавим. Можливо буде наступним після GRASP and GOF

Ответить
@perekhrestdimon
@perekhrestdimon - 04.02.2024 00:08

Вопрос: Если я учусь по видео и делаю по ним проекты, смотрю, что делает автор, и повторяю за ним, и так делаю сайты, это копипастинг? Стоит так делать, или лучше делать самому? Спасибо заранее!

Ответить
@romanalexandrov2880
@romanalexandrov2880 - 03.02.2024 13:35

Раньше, когда я что-то переделывал в коде, то заодно сразу рефакторил и закомменченые части - и даже так они мне ни разу не пригодились =D С тех пор, как это заметил, удаляю их без тени сомнения

Ответить
@simpleman6617
@simpleman6617 - 03.02.2024 11:21

К многим из приведенным здесь советам я допер сам методом проб и ошибок набивая себе шишки-это издеьржки того что я самоучка. Тише едешь дальше будешь - если не торопясь дапшь осмысленные имена переменным если не полениться и вставить коментарий - потом будет проще. Еще много зависит от языка - помню на бейсике была такая каша...

Ответить
@__ali__97
@__ali__97 - 03.02.2024 08:16

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

Ответить
@IgrokBezPontov
@IgrokBezPontov - 03.02.2024 07:48

Ну вы даете
КАкая разница. Главно что бы программа работала и пользователи были давольны и заказчик
А там с как лучше ну это вообще мазохизм и перфекционизм

Ответить
@MsSmartFox
@MsSmartFox - 03.02.2024 05:39

"тимчасові" змінні стануть в нагоді коли ти будеш дебажить код. Замість того щоб визивати метод який повертає значення у code evaluation вікні, ти просто стаєш на потрібний рядок дебагером та дивишся шо метод повернув, та що ти передаєш далі.

Ответить
@user-ee1lx1pe7n
@user-ee1lx1pe7n - 03.02.2024 01:30

Интересен тренинг по рефакторингу))

Ответить
@alekseyshibayev5243
@alekseyshibayev5243 - 03.02.2024 01:07

Сергей, давно вы современный код не видели, особенно сеньерский. Java превратили в паскаль. Кругом инжект очередного бла-бла-бла-Service, var и перегруженные цепочки функциональщины.

Ответить
@vladbarkovsky3939
@vladbarkovsky3939 - 03.02.2024 00:38

меня кстати реально бесит закомментаренный код. типа, там ещё сверху написано "не трогать, оно будет надо тогда-то" причём, оно надо тогда-то уже больше года. я всегда в PR делаю пунктик в конце: "а ещё я удалил из такого-то файла 150 строк кода, который делал ничего". и всёравно мне кидают в PR комментарии "зачем ты убрал - оно будет надо".

Ответить
@vladbarkovsky3939
@vladbarkovsky3939 - 03.02.2024 00:09

очень в тему. спасибо, сергей!

Ответить
@borisisavnin9983
@borisisavnin9983 - 02.02.2024 21:05

Очень понравилось про закоментированный код, слушал и удалял)
Отвлекся на минуточку пост тиснуть и сейчас же продолжу.
Спасибо, Сергей и твоя команда!

Ответить
@profile_pub190
@profile_pub190 - 02.02.2024 20:40

Ещё бы к запахам кода отнёс void метод get, который что-то изменяет, и метод set который возвращает какое-то измененное значение, и их комбинация когда пропускают промежуточные переменные и в аргументы метода get передают возвращаемое значение метода set 😂 и это не придумано, а описание случая из жизни

Ответить
@user-qd5ir5xt3b
@user-qd5ir5xt3b - 02.02.2024 20:29

Конечно, братан, всё нужно: " робить будем пока не помрём."
Как говорил один "ИЗ": " куй железо, не отходя от кассы!".

Ответить
@shurko
@shurko - 02.02.2024 20:15

Не надо тренинг.

Ответить
@sergiisuprun
@sergiisuprun - 02.02.2024 19:51

Читать книги, когда IDE все подсвечивает и подсказывает, вы серьезно?

Ответить
@VitalySem
@VitalySem - 02.02.2024 19:40

Що за напівміри? Пахне, попахує, він смердить))

Ответить
@PerfectHolyPervert
@PerfectHolyPervert - 02.02.2024 19:35

Спасибо за рекомендацию по поводу книги по рефакторингу.

Ответить
@user-ux2fc8rz8q
@user-ux2fc8rz8q - 02.02.2024 18:58

я программист-любитель. но когда мне нужны были просто координаты - я создал класс с переменными X, Y и сеттерами/геттерами. мне это показалось очевидным! сам додумался! ))

Ответить
@illia4228
@illia4228 - 02.02.2024 18:10

Тренинг по рефакторингу интересен!

Ответить
@Mr43046721
@Mr43046721 - 02.02.2024 17:57

Спасибо за видео Сергей, классная кофта)

Ответить
@user-gj2so1fv6c
@user-gj2so1fv6c - 02.02.2024 17:26

"Ненужные переменные", которые сразу после получения передаются, делают для целей отладки, когда нужно понять, что именно возвращает метод. В релизном коде оптимизатор, скорее всего уберет эту переменную.

Ответить
@user-ts8wv6jh9r
@user-ts8wv6jh9r - 02.02.2024 17:26

"одноразовые переменные" использую при отладке, если получаемый объект зависит от времени, или сложно конструировать.

Ответить
@user-zt2pu1sd7m
@user-zt2pu1sd7m - 02.02.2024 17:11

Непонятно что за символ в левом верхнем углу переливается двумя цветами🤔🤔 404

Ответить
@darkart6487
@darkart6487 - 02.02.2024 16:00

Да я так хотел зарефакторить крафт и готовку. В общем всё вроде нормально объединил, но суть до дела полается нужны другие переменные чтобы показать отличия. Код становится непонятной лапшой. Вывод лучше пусть код повторяется, чем он становится непонятным с первого взгляда

Ответить
@user-vu9nz5bc7x
@user-vu9nz5bc7x - 02.02.2024 14:42

Все гораздо проще! Как сказал один великий программист: Если твой код работает корректно и выполняет свой функционал,значит - это хороший код. Все остальное второстепенно

Ответить