kamyshev.code
1.86K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
Мудрость из книги

Если в дочернем классе неиспользуются методы/данные родительского — значит что-то не так. Обычно это происходит, если наследование используется только для переиспользования кода, а не отражения отношения "является". В таком случае следует заменить наследование композицией.

На мой взгляд наследование почти никогда не улушает кода и его всегда можно заменить композицей без ущерба для читаемости кода.

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
Мудрость из книги

Если в классе присутствуют поля, которые нужны только в короткий промежуток жизненного цикла объекта — код немного испортился. Проблема в читаемости таких участков. Не ясно, когда это поле инициализировано, когда нет.

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

Конспект интерактивного курса "Рефакторинг.Гуру".
Мудрость из книги

Если в проекте существует два класса, которые делают одно и тоже, но имеют разные интерфейс — беда.

В такой ситуации часто можно просто удалить один из классов, и заменить его использование на второй. Если такой вариант не подходит (классы делают чуть-чуть разные вещи) то можно выделить общий интерфейс и реализовать его в каждом классе.

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
​​В университете на Computer Science специальностях студенты разрабатывают свой язык.

Это хорошее упражнение, оно даёт знания о внутреннем устройстве языков, причинах принятия решений при дизайне этих языков.

После прочтения "Семь языков за семь недель" у меня сформировались требования к идельному языку программирования. В качестве упражнения я решил его написать. Процесс буду описывать в небольших статьях.

#justlang
Мудрость из книги

Если для небольшлого изменения поведения требуется внести много правок в код — что-то пошло не так.

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

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
Мудрость из книги

Очень распространенная проблема — параллельные иерархии наследования.

Скорее всего, эта проблема — ошибка на этапе проектирования. Вполне вероятно, что можно свети это к одной иерархии. Если нет — подумать и найти решение.

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
​​Наследование как ключевая проблема объектно-ориентированного дизайна

Читая книгу по рефакторингу укрепился в мысли, что наследование — зло. Усложняет код, делает его трудным для чтения и понимания. Вызывает сложности при внесении изменений.

Но ведь... Наследование — один из столпов ООП.

Как же переиспользовать код?
Композия — более гибкий способ переиспользовать код. Для этого нужно немного изменить стиль написания программ, но результат исключительно положительный.

Выражать отношение "является"?
Вместо мышления в контексте что чем является, подумать о том, что умеет класс. Тогда выразить его специфику можно просто реализовав интерфейс.

Я уверен, что многие не согласны с этим. Пожалуйста — напишите мне (@igorkamyshev), почему. Из ваших комментарием соберем пост в защиту наследования.

#спор
Мудрость из книги

Если в приложении есть мертвый код — его нужно удалить.

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

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

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
@iwanttobealight прислала поясняющую картинку и тематическую статью к последней ссылке — http://kafinfor.petrsu.ru/CSS/04.htm
Мудрость из книги

Если функция использует данные какого-то объекта, но не является методом этого объекта, возможно, стоит переместить ее.

Хорошая идея хранить данные и операции над ними в одном месте.

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
Полезная книга

"Читаемый код, или Программирование как искусство" Дастина Босуэлла и Тревора Фаучера — это простое руководство по написанию читаемого кода.

Вся книга сконцентрированна на читаемости кода. Неважно, сторонним ли наблюдателем, или автором через некоторое время.

Во многом она дублирует идеи из "Чистого кода", но прочесть все равно стоит.

#чистый_код
Мудрость из книги

Один из самых опасных запахов плохого кода — знание одного класса интимных подробностей о другом.

Если вызывающий код знает не только о внешнем интерфейсе, но и о внутреннем устройстве вызываемого кода — беда. Такие структуры невозможно развивать и поддерживать.

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

Конспект интерактивного курса "Рефакторинг.Гуру".

#рефакторинг
Онлайн-курс

Прошел онлайн-курс Рефакторинг.Гуру. Хороший курс, осоебенно первая часть, которая рассказывает про запахи плохого кода. Вторая сконцентрированна на способах эти запахи устранять.

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

#рефакторинг
Я разрабатываю и поддерживаю несколько npm-пакетов. И это требует времени и внимания. Чтобы обслуживать их проще у меня есть довольно развестистый флоу работы с пакетом.

Подробно описал весь процесс в статье — Процесс подготовки npm-пакета.

#процесс
Какая частота постов вам наиболее комфортна?
anonymous poll

Каждый день – 199
👍👍👍👍👍👍👍 56%

Раз в два дня – 120
👍👍👍👍 34%

Два раза в неделю – 37
👍 10%

👥 356 people voted so far. Poll closed.