Комментарии:
Даешь тренинг по рефакторингу! ))
ОтветитьЯ бы еще к плохому коду отнес лишком длинные классы
ОтветитьСергей что Вы думаете о книге Khalila Stemmlera
The Software Design & Architecture Handbook?
хорошее видео
ОтветитьДа уж, индусы нынче switch-case'ом пишут)
Ответитьпомню я все таки писал комменты в коде. алгоритм был сложноватый и гдето с 3-й строчки у меня самого дымок из ушей шел и я просто даже для себя написал что вот тут я удаляю то-то для тогото и в другом месте тоже чтото написал. Синьоры которые обычно любили клевать на ревью на эти комменты не делали замечания, ну там реально сложно было понять просто читая код, ну и в итоге работал он быстро
ОтветитьЕсли вы пишете на С то полезным будет посмотреть на то как организованы "конструкторы" структур в исходниках ядра Linux. В некоторых драйверах применяются принципы аналогичные принципам используемым в ООП, особенно в драйверах работающих с видеоподсистемой V4L2. Можно много занимательного почерпнуть
ОтветитьБывает код, покрытый тестами, а у меня - код, порытый туду-шками :)
ОтветитьДаешь тенинг
Ответитьеще бывает оставляют, старый код закоменченным (прям огромными блоками), или вешают @Deprecated с ссылкой. на новый метод, но я сторонник удалять такое, хотя кто-то оставляет @Deprecated методы, чтобы понять, какой метод пришел на замену
Ответитьвобще с такими радикальными методами без рассмотрения других вариантов это конечно же экстремизм
Ответитьвообще очень категорический совет и уж точно неприменимый ко всем ситуациям,
повторение (копирование) кода вполне нормально к тем местам, где мы уверенны что логика будет другой, в тех же местах где нам надо чтобы логика была той же, но обьекты другими, надо переделывать под дженерики а не копировать
Про "закомментированный" код улыбнуло. Каждая нормальная IDE поддерживает сворачивание блоков кода любого размера, так что это точно не должно являтся проблемой. Также иногда бывает полезным оставлять такие блоки, чтобы в дальнейшем понимать, как возникла новая версия этого блока. Например, какой-то сложный алгоритм, который был изначально реализован в каком-то методе, потом этот метод был существенно переделан, но без старой версии этого метода трудно понять(если вобще возможно), почему именно так в последствии был реализован алгоритм в данном методе.
Ответитькопирование кода оправдано 100 если заранее известно что он будет работать отлично от исходного, и в этом случае копировние оправдано, об этом нужно сказать
ОтветитьВо всех современных языках давно есть передача параметров по названию
ОтветитьСпасибо большое за Ваши видео.
Прокомментируйте пожалуйста Apple Vision Pro, какие перспективы Вы видите, какой язык понадобится для разработки приложений под Vision Pro. Спасибо !
Здравствуйте , можете пожалуйста обьяснить на простых словах про DOM JS ? Спасибо
ОтветитьСергей и весь коллектив канала, традиционное спасибо за выпуск, как всегда здорово — интересно и содержательно 🙏
ОтветитьМені точно сподобався би тренінг по рефакторінгу. Та й відео на ~20 годин зайшло би. 20 годин розслабляючого голоса Сергія.... Каєф... 😅
ОтветитьКоли вкотре чую що метод повинен буту не більше строрінки, так і хочу показати це відіо своєму шефу. В мене на фірмі код в 1000 строк це норма, максімально здається десь біля 2000 . Колі я почінаю працювати с новим для мене методом, пару годин може знадобитись щоб зрозуміти як це працює.
ОтветитьЯ добавил бы следующее к code smells:
1) это создание объектов, классы которых реализуют один и тот же интерфейс, через new. Лучше использовать аннотации + рефлексия и создавать объекты в ObjectFactory
2) Использовать pojo классы, сформированные на основе json, вместо этого использовать JsonObject или String + jsonPath
Не могли вы снять видео что должен знать джуниор с++
ОтветитьТак буде цікавим. Можливо буде наступним після GRASP and GOF
ОтветитьВопрос: Если я учусь по видео и делаю по ним проекты, смотрю, что делает автор, и повторяю за ним, и так делаю сайты, это копипастинг? Стоит так делать, или лучше делать самому? Спасибо заранее!
ОтветитьРаньше, когда я что-то переделывал в коде, то заодно сразу рефакторил и закомменченые части - и даже так они мне ни разу не пригодились =D С тех пор, как это заметил, удаляю их без тени сомнения
ОтветитьК многим из приведенным здесь советам я допер сам методом проб и ошибок набивая себе шишки-это издеьржки того что я самоучка. Тише едешь дальше будешь - если не торопясь дапшь осмысленные имена переменным если не полениться и вставить коментарий - потом будет проще. Еще много зависит от языка - помню на бейсике была такая каша...
ОтветитьТа самая тонкая грань, между дублированием кода и принципа SRP, как понимать когда нужно реюзнуть уже имеющийся код, а когда нужно написать похожий код, но использующийся в другом месте с похожей, но не точно такой же логикой.
ОтветитьНу вы даете
КАкая разница. Главно что бы программа работала и пользователи были давольны и заказчик
А там с как лучше ну это вообще мазохизм и перфекционизм
"тимчасові" змінні стануть в нагоді коли ти будеш дебажить код. Замість того щоб визивати метод який повертає значення у code evaluation вікні, ти просто стаєш на потрібний рядок дебагером та дивишся шо метод повернув, та що ти передаєш далі.
ОтветитьИнтересен тренинг по рефакторингу))
ОтветитьСергей, давно вы современный код не видели, особенно сеньерский. Java превратили в паскаль. Кругом инжект очередного бла-бла-бла-Service, var и перегруженные цепочки функциональщины.
Ответитьменя кстати реально бесит закомментаренный код. типа, там ещё сверху написано "не трогать, оно будет надо тогда-то" причём, оно надо тогда-то уже больше года. я всегда в PR делаю пунктик в конце: "а ещё я удалил из такого-то файла 150 строк кода, который делал ничего". и всёравно мне кидают в PR комментарии "зачем ты убрал - оно будет надо".
Ответитьочень в тему. спасибо, сергей!
ОтветитьОчень понравилось про закоментированный код, слушал и удалял)
Отвлекся на минуточку пост тиснуть и сейчас же продолжу.
Спасибо, Сергей и твоя команда!
Ещё бы к запахам кода отнёс void метод get, который что-то изменяет, и метод set который возвращает какое-то измененное значение, и их комбинация когда пропускают промежуточные переменные и в аргументы метода get передают возвращаемое значение метода set 😂 и это не придумано, а описание случая из жизни
ОтветитьКонечно, братан, всё нужно: " робить будем пока не помрём."
Как говорил один "ИЗ": " куй железо, не отходя от кассы!".
Не надо тренинг.
ОтветитьЧитать книги, когда IDE все подсвечивает и подсказывает, вы серьезно?
ОтветитьЩо за напівміри? Пахне, попахує, він смердить))
ОтветитьСпасибо за рекомендацию по поводу книги по рефакторингу.
Ответитья программист-любитель. но когда мне нужны были просто координаты - я создал класс с переменными X, Y и сеттерами/геттерами. мне это показалось очевидным! сам додумался! ))
ОтветитьТренинг по рефакторингу интересен!
ОтветитьСпасибо за видео Сергей, классная кофта)
Ответить"Ненужные переменные", которые сразу после получения передаются, делают для целей отладки, когда нужно понять, что именно возвращает метод. В релизном коде оптимизатор, скорее всего уберет эту переменную.
Ответить"одноразовые переменные" использую при отладке, если получаемый объект зависит от времени, или сложно конструировать.
ОтветитьНепонятно что за символ в левом верхнем углу переливается двумя цветами🤔🤔 404
ОтветитьДа я так хотел зарефакторить крафт и готовку. В общем всё вроде нормально объединил, но суть до дела полается нужны другие переменные чтобы показать отличия. Код становится непонятной лапшой. Вывод лучше пусть код повторяется, чем он становится непонятным с первого взгляда
ОтветитьВсе гораздо проще! Как сказал один великий программист: Если твой код работает корректно и выполняет свой функционал,значит - это хороший код. Все остальное второстепенно
Ответить