Занурення в РЕФАКТОРИНГ
Привіт! Мене звати Олександр Швець, я засновник цього сайту. Після двох років роботи, я радий представити вам свій курс з рефакторингу.
Я програмую з 13 років. Починав ще тоді, коли на віндоусі не було кнопки Пуск. За цей час я встиг попрацювати у п'ятьох компаніях, вивчити півдюжини мов програмування та запустити декілька успішних проектів.
У цьому курсі я спробую передати частину свого досвіду та навчу вас:
- Відрізняти якісний код від поганого.
- Виправляти хвороби поганого коду.
- Змінювати код так, щоб не ламати всі інші частини програми.
Вам буде цікаво, якщо ви хоч раз почували себе як цей кіт, сидячи за зломаним вами білдом.
Що знаходиться всередині?
Курс розповідає про 21 запах поганого коду, а також про 66 прийомів рефакторингу, які їх лікують.
Кожен розділ має приклади на Java, C# та PHP.
Прийоми рефакторингу містять живі приклади, що більш наочні (та веселіші), ніж звичайний статичний код.
Курс має офлайн-версію у вигляді електронної книги, що можна скачати у трьох найпопулярніших форматах (PDF, EPUB, MOBI).
Курс не має часових обмежень. Ви можете проходити його в зручний час зі зручною вам швидкістю будь-яку кількість разів. В середньому, проходження курсу займає 8 годин.
Скріншоти
Головна сторінка з посиланнями на форум і шпаргалки.
Робимо перші кроки.
Роздивляємось один з запахів поганого коду.
Курс покриває 21 запах поганого коду та 66 прийомів рефакторингу.
Живий приклад показує як покроково застосувати один з рефакторингів.
Після кожного рефакторингу можна подивитися різницю між «було» і «стало».
Чому цей курс краще за товсту книгу про рефакторинг?
Курс написано простою і доступною мовою, без книжкової сухості й академічності. В той же час, текст містить мінімум води — все коротко та по суті.
Курс доступний трьома мовами — українською, російською та англійською.
Курс оптимізовано під перегляд на планшетах. Іншими словами, ви зможете проходити його, лежачи десь в м'якому бінбезі або на дивані, попиваючи смачний чай.
Курс містить інтерактивні елементи, які допомагають тримати вас у тонусі, на відміну від звичайних нудних книжок, які присипляють вже після 10 хвилин читання.
Ще раз нагадую про живі приклади. Вони занадто круті, щоби про них мовчати.
Сертифікат про проходження курсу
По закінченню курсу ви отримуєте іменний електронний сертифікат (у тому числі англійською). Його не тільки можна роздрукувати і повісити на стіну, але й вказати окремим пунктом в резюме, підвищуючи свої шанси на успішне проходження співбесід.
Гарантія задоволення
Роблячи покупку, ви нічим не ризикуєте. Якщо протягом місяця після покупки ви вирішите, що курс вам не сподобався, ми відразу повернемо всі ваші гроші, не задаючи жодних питань.
Що кажуть люди?
I didn't have a chance to ran through the whole course, so I still have some lessons ahead. Overall I really like the course, it's written in understandable way, contains lot of good ideas. I noticed that I started to use Extract Method really often. As well as substitution of complex logical "IF" statements by method that returns bool. Code is really much more readable and don't need to be commented. Don't know what to improve, maybe bigger variety of code snippets. I noticed that snippets are reused again and again over the course and I would welcome to see some different scenarios.. Don't know if you get the point, simple not to reuse the same snippet over and over for similar use cases.
I like the site, and the information is good I like the way it is organized in stories and how you can see in the sample code how to apply a solution. I would like to have something like a playground so I can actually write and refactorize code, and check the results against the recommended solution (similar to what udacity has on their python courses)
I loved the refactoring course and especially the online aspect of it. Well done with respect to content and easy to understand material. I have bought all your work in the past except for UML. Keep on doing good work. It helps me understand the material properly and I can apply at work as well. In terms of new suggestions: Come up with a nice tutorial or a book on Java 8 and Java 9 with focus on functional programming, modules and concurrency. I am sure it will do well.
Начал проходить курс, но из-за нехватки времени, пока что притормозил обучение. Паттерны также начал изучать. Впечатлений много, и все в основном положительные.
Очень понравилась подача материала, забавные зарисовки, а так же структурированность материала. Примеры встречаются иногда достаточно сложные для первичного восприятия, а в основном все понравилось.
Насчет идей, я столкнулся с описанием структуры UML-диаграммам в книге про паттерны. Хотелось бы эти описания увидеть и в самом курсе, так как диаграммы там встречаются часто, а до того как я заглянул в книгу паттернов, не совсем понимал взаимосвязи и обозначения. Так же хотелось бы немного более подробные примеры применения рефакторинга (если это возможно), так как схематически вроде все понятно, но как только пытаешься применить на практике, сталкиваешься с небольшой проблемой переложения знания схемы и принципа на реальный код.
А в общем огромное спасибо за проделанную работу, ни капли не пожалел о покупке, и с удовольствием продолжу изучение при наличии свободного времени, так как усваивать информацию лучше всего небольшими порциями.
Этот курс мне посоветовал пройти мой тимлид, сказал что после него начну смотреть на код совсем по-новому.
Тимлид сказал - девелопер сделал. И как ни странно, действительно отношение к коду, который я пишу и читаю поменялось. А самое главное — теперь я знаю в каких случаях какие методики рефакторинга применять, чтобы без лишней головной боли получить более структурированный и самодокументируемый код
I've just started with the course. I like the boxes explaining the solutions. If anything I would prefer small exampeles of actual code.
Otherwise I really like the Course and you've done an awesome job with this.
Я начал проходить курс, правда сейчас отложил из-за недостатка времени, но это не важно. У вас очень приятно изложен материал. Вот эта динамика изложения с этими переходами от блока к блоку создает ощущение легкости. "Знания" не давят, нету стресса в стиле "я-начал-читать-а-страница-такая-длинная-когда-же-оно-кончится-я-уже-устал". Никогда не думал, что подача материала на столько может влиять на легкость чтения. Сама книжка, сайт - все супер. Было не жалко отдать денежку за хороший продукт. Респект! Надеюсь люди оценивают по достоинству ваш труд.
Курс я прошёл, огромное спасибо. Активно использую в работе, особенно помогает при code review мерж реквестов специалистов. Книгу читаю в чуть более ленивом темпе (пока что дошёл до паттерна Фасад) , но в целом доволен. Из идей/предложений: сделать курс более интерактивным, добавить возможность самому написать, как бы я срефакторил (аля курсы на html academy или codewars).
— Have you already tried the course?
Yes.
— What do you think about it?
Awesome!
— What did you like about it and what not?
It goes directly to the point.
— Do you have any suggestions on how can I improve it?
Maybe some real-world examples.
I've only gone through a portion of the course, reading through it piece by piece when i have free time. I really like the course and I think it's helping me become a better programmer. It's already helped me with refactoring my code. I think it's great and more people should know about it.
Things I like are:
- Very easy to understand and great examples.
- Easy to understand why refactoring practices exist.
Things I don't like are:
- I bought the premium version because I wanted access to the practice code. But it seems like I can't get to the without reading through all the refactoring practices and code smells portion yet (or maybe it just isn't clear to me on how to access the practice portion).
- A lot of the refactoring methods are reused in different code smells. I understand that it's a way to fix the code smell, but it can get a little repetitive reading the same thing over and over.
If I had any suggestions on how to improve the site, I would say that a way to access just the code examples would be nice. And also maybe having some refactoring methods for Javascript or ES6 with examples as well (I'm a front end developer so I work a lot with JS). Although the second suggestion isn't as important because these methods can applied and translated across languages fairly easily.
It felt a bit boring to read. It did not feel so engaging. I think some design patterns(fixes) didn't have good examples given.
I liked the way it is organized and linked between different sections.
Спасибо, курс классный, я начал проходить, но пока отложил, обязательно пройду! Никаких предложений по улучшению к сожалению нет, всё нравится.
I think it's awesome!! Right now I'm working my way through reading the sourcemaking website. I started working on some of the refactoring guru course and will finish it once I finish sourcemaking.
Курс прошел 78%, довольно познавательно. Занимаюсь программированием с 1994 года, тоже люблю красивый код. Данный курс рассказывает как его достичь. Идея курса "Погружение в Рефакторинг" замечательная!
Понравилось, что курс наглядно рассказывает, как достичь красивого кода.
Yesterday i finished the course, i find it a good alternative for reading books. Especially for running source examples is a great idea. Working on the course was a good alternation at work. The design pattern page is a good help at work, especially the c# examples.
One thing i missed, after finishing the course, a certificate for successful partcipating the course should be included. After each seminar/course, i get a paper for participation. For example, if you pass the PSM1 test in scrum.org, you can download a certificate.
I love the book, though I haven’t read the whole book yet. It was also a surprise for me that I got linked basic solutions regarding the patterns.
I purchased your book because I like to relearn design patterns frequently and see the use of them from another perspectives. So overall I think your book is quite good.
Курс рефакторинга хорошо оформлен, удобен в прохождении. Рекомендую его всем своим знакомым или соратникам, когда заходит речь о повышении навыков рефакторинга или написания чистого кода.
К сожалению, есть несколько моментов, которые омрачают прохождение:
- Большая условность при демонстрации некоторых методов решения. Смысл несомненно понятен, но курс-то предназначен программистам. Ожидаемо увидеть примеры кода, а не блок-схемы.
- Отсутствие хоть какого-то тренажера по отработке того или иного метода решения. От двух до пяти примерных заданий вполне бы хватило для закрепления материала, усиления погружения в обучение и повышения заинтересованности. Всё-таки это курс, а не слайдшоу. Если вас заинтересует, то есть шанс в феврале (к концу месяца) представить вам перечень заданий для интерактивного тренажёра. К сожалению (или к счастью) пишу на PHP\JS, но могу попробовать сформировать задачник на JAVA. Разумеется, эта инициатива продиктована бескорыстным интересом к вашему курсу.
Само-собой, это всего лишь пожелания.. В целом курсом доволен, хотя и не прошёл его полностью пока что. Отвлекают рутинные задачи.
Я начал проходить курс, но пока остановился, из-за нехватки времени. Пока мне всё очень нравится, по сравнению с сухими книгами, читается и воспринимается гораздо лучше.
1. In my opinion its very clever that refactoring course is structured around code smells - makes it easier to remember code smells and the ways they can be resolved.
2. The structure, the flow of the course and the small code snippets with the problem and the solution is among the things i liked a lot. Did not like so much the red colour that dominates in the course but that's a matter of personal preference, maybe it kind of 'forces' you to move towards the end of the course faster that other colours.
3. One thing i would really like to see (i have not reached the end of the course so maybe its already there and i just did not see it yet) is a set of exercises: one code snippet when you are given the problematic code that needs refactoring, a small description of the solution that we should follow and then in the next code snippet we get to write the refactored code based on the suggested solution.
Курс замечательный уже разгреб кучу кода и коллег учу)
Yes, I’ve started the course. I think I’m about 60 percent of the way through. I think the UI is great and very easy to use. I would have preferred if there were examples you could try yourself. I would also have liked to have a clearer idea of the overall layout of the content. And finally, I found it confusing that there was so much repetition.
I have started to look through the course. I was really happy with the content and recommended it to my team.
I'm very happy with the course! I had a chance to go through the different refactorings and now I am working on the design patterns.
Данный курс, позволяет эффективно освоить приемы рефакторинга, содержит лаконичные объяснения и примеры кода, которые без лишней воды дают ценную информацию. Процесс прохождения наглядно отображается в шагах с иллюстрациями. Каждый раздел структурирован для эффективного представления информации.
Может показаться, что информация в разделах повторяется, но как я понял автор просто попытался избавить пользователя от перекрестных скачков по ссылочной информации. Подача очень понравилась. Понравилось так же что материал оптимизирован для просмотра на мобильных устройствах.
Единственное пожелание к автору сделать интерактивную карту курса что бы у пользователя была возможность одним взглядом окинуть все разделы курса и при необходимости перейти к нужному. И еще где нибудь выводить процент освоенного материала, что бы представлять как далеко пользователь продвинулся в изучении и какой объем еще осталось изучить.
I find the content to the point and written in easy to understand language, with real problems ( I am also referring to design pattern )
Thank you for the effort that you have put in it is reflected in your content. If you can also add video tutorial along with what you have it will be great.
Прошел весь курс неспеша примерно за неделю. Понравились перекрестные ссылки с запахов на рефакторинги и обратно.
Спасибо за отличный курс! Я пользуюсь стандартными рефакторингами, встроенными в Idea довольно часто, но даже не думал, что их существует так много. Из новых самым полюбившимся стала замена вложенных условий граничными операторами.
Мне понравилось как курс был структурирован в одну большую историю. Знаю, вы только недавто запустились, но добавьте примеры на Swift.
I have tried the course. I have now unlocked the topic "Refactorings". And here's the main and only issue I have with the course - I have no idea how much I've got left to complete. The only suggestion about improving the course I can give you so far is, let me know how much I've completed or how much I have left. I honestly don't know if I'm currently at 20% or 92%.
I have gotten through a large section of the course (using Java). I really like it so far. Thank you for putting it together, it has been a good learning experience for me to go through this.
I have gone through some sections repeatedly to understand them better. I love the navigation, the graphics and how easy some of the concepts are to understand because of how the content is organized.
In terms of improvement, I think some of the code examples get a bit repetitive as you go through some of the later topics. I would request that some of the examples be refined to make them more specific to the example at hand.
Hey I started the course. It is really good, I am gonna finish it soon.
Хочу сказать, что работу вы проделали колоссальную! Отдельная благодарность дизайнеру - изображения очень радуют глаза. Это именно тот продукт, которым хочется пользоваться и видно, что сделан с душой. Спасибо Вам!
I’d like to see more video content on your site.
I’m not much of a reader and I would definitely use your site more if it had videos covering the same topics you’ve written about.
Здоровский курс, мне понравился, своих денег стоит.
Единственное что мне не очень понравилось, что многие примеры дублируются и не имеют особого отношения к реальной жизни. Я имею в виду ту интерактивную штуку, где происходит рефакторинг, и нужно кликать на "синие штуки" :) Было бы здорово подобрать конкретные примеры для каждого рефакторинга, может быть из реальных(или придуманных) проектов. К примеру, очень часто встречается такая логика: рефакторинг вроде выделить в отдельный метод - интерактивный пример. Рефакторинг заинлайнить метод - тот же пример но в обратном порядке. Понятно, что в реальной жизни тот или иной рефакторинг нужно в зависимости от ситуации делать и в процессе разработки, но такие примеры немного запутывают.
В целом проект классный, посоветовал знакомым всем. Крутая идея с интерактивностью этой.
I tried the course, it seems good. Currently I don't have the time to continue but its in my plans. The only thing I would like is more, how would I put it, coding exercises, to grind it more trough the fingers. I like that it is tutorial style themed, but would like also to have option, like on design patterns to pick which topic I want to learn about or need at the moment. Or maybe like on khan academy, some big piece of code(something like this https://github.com/zoran-horvat/sudoku-kata ) to refactor and offered links to helpful topics, and like he said there is not right one, its all about the practice.
Well thats my ten cents. Thanks for making something like this it helped me a lot both refactoring and design patterns.
Thank you for your refactoring course. It is very clean, simple and understandable, especially section with code presentation.
I will appreciate any improvements, for example, covering more examples with design patterns etc.
Курс очень нравится в визульном плане, это здорово мотивирует проходить дальше. Какие-то мелкие баги были, типа где-то приходилось обновлять страничку, но точно припомнить не могу.
Я думаю чаще всего Вам приходится слышать предложение про расширение спектра ЯП - я сначала тоже сконфузился в некоторых местах (прохожу курс на джаве, с ней знаком, основные ЯП для меня - пайтон и свифт), если правильно помню, было что-то про убогие джавовские енамы и описываемая проблема как класс отсутствала в том же свифте. Но в конечном итоге пришел к выводу, что будет полезно с такой точки зрения посмотреть, какие именно проблемы других окружений решаются в моем тем или иными способами.
I enjoyed very much this course but it is missing several learning techniques:
- practice should be actual practice, your practice is like a how to tutorial, we need to do the job ourselves
- mix refactoring and practice since the beginning, it will help memorization and building knowledge on top of knowledge
- more graphical cheat sheet, it is to extent and overcrowded
- new code should be on the right side after refactoring too show progress, at least in our left to right languages that is how it should be.
- create a course like this for design patterns.
- real practice should be graded aaand last but not least important,
- create a refactoring certification diploma that i can include in my resume to boost my career.
I hope you can make this changes possibles so i can retake this course and improve my skills even more. thanks so much, you are awesome
Часті запитання
Хочете дізнатися про щось інше?
Задайте питання на нашому форумі або поштою support@refactoring.guru. Зазвичай, ми відповідаємо протягом декількох годин.