Refactoring to Patterns

Improve the design of your code

Refactoring to Patterns logo

Information

16 hours

(2 days or 4 half days)

Remote or in-person

Java, Python, Js, PHP, C#, C++, Go...

Spanish, English, and Catalan

650 € + VAT per person

Eligible for FUNDAE funding

Testimonials

Find out what students have said about this course

The value of the training

The course is a very good way to learn design patterns from a practical approach. It's easy to fall into overengineering when learning patterns from a blank sheet: instead, you'll see how patterns solve some of the problems in the code.

Design patterns are good solutions to recurring problems in software design. By using design patterns, you can create more flexible, maintainable, and reusable code.

Curso refactoring patrones

Training content

Block 1

Reducing complexity and duplication

  • Guard Clauses: Reduce cyclomatic complexity.
  • Value Objects: Eliminate duplicate code and increase cohesion.
  • Factory method: Simplify object creation.
  • DTO’s: Simplify method signatures.

Block 2

Patterns in tests

  • Shared setup method and Test creation method: Reduce duplication in tests.
  • Builder and test builders: : Build test data while reducing noise.

Simplify

  • First Class Collection: Group logic into data sets.
  • Null Object: Removes checks if not null.
  • Decorators: Extends behavior while maintaining compatibility.

Block 3

Decouple from infrastructure

  • Repository: Repository: Centralizes data access.
  • Adapter: Decouples business logic from implementation details.
  • Chain of Responsibility: Decides who processes a request and/or processes an action in parts.

Block 4

Extend behavior

  • Observer: Extends behavior by notifying others, who will react accordingly.
  • Publisher/Subscriber: It evolves the observer, launching events that can be processed asynchronously.
  • Currying: Injects dependencies in functional programming.

Methodology

Nowadays, anyone can read a book or watch a video, but the really difficult part is putting what you've learned into practice. That's why, in our course, we want students to spend most of their time practicing and not listening to theory.

In pursuit of quality and satisfaction for all attendees, we believe it is essential to have two senior instructors. This allows us to have enough availability to provide personalized help while students program.

We strive to maximize learning. To achieve this, we create a dynamic environment (Flow) by working in pairs, short exercises, quickly resolving doubts, jointly discussing different solutions, and providing very close support.

From our experience as teachers, developers, and entrepreneurs, we understand the challenges of software development. Having taught over 60 courses to more than 800 students allows us to know the needs of the students and pay attention to every detail of the training.

All of the above guarantees our goal of ensuring you are satisfied, acquire the necessary skills to transform your way of developing, and start writing sustainable code.

Luis Rovirosa profile

Luis Rovirosa

Back-end Developer

Jose Cabrera profile

Jose Cabrera

Front-end Developer

Jordi Anguela profile

Jordi Anguela

Front-end Developer

Hugo Chinchilla profile

Hugo Chinchilla

Full-stack Developer

Summary in numbers

+105

Training sessions delivered

+1200

Professionals trained

+60

Companies that have trusted

Frequently asked questions

Who is it aimed at?

To teams that want to improve their design skills.

To programmers familiar with good development practices.

What is the level of the course?

The course level is intermediate. It is aimed at people who program professionally.

As it is a very practical course with a lot of debate, it allows us to adapt to the level of the attendees. If you already know some patterns, during the course you will deepen your knowledge and learn more advanced strategies.

Can the course be subsidized by FUNDAE?

Yes, the course can be subsidized through FUNDAE.

Currently, 208 € can be subsidized per student.

We provide all the data for its online submission, but we do not process it.

Why should the whole team attend?

Bringing the whole team together, in addition to generating team building, allows people who usually don't work together to collaborate.

Throughout the days, we encourage dialogue and debates among the team, which help align their vision.

Nothing better than two days of training to motivate the team.

How is the course developed?

The course consists of several blocks of two hours.

This is followed by an exercise done in pairs where they put into practice what was covered in the theoretical part while the trainers provide constant feedback to the participants.

The block ends with a group debate, where the participants share what they have learned and we have discussions all together

Can I sign up by myself?

The course is designed to be delivered in companies.

We also offer open courses where anyone can sign up.

Sign up and we will inform you about the upcoming courses near you.

What material do I need?

You only need to bring a computer with the development tools that each person uses installed. Ideally, the course should be taken on the same machines that the team uses in their day to day and Docker.

In person, a room with a projector or a large screen and a whiteboard for writing is needed. The ideal setup is to have a computer with two screens, two keyboards, and two mice for every two people.

Remotely, a microphone, headphones, and webcam are needed for each participant.

And after the course, what?

The exercises done in the course are specific for learning one concept at a time. During our day to day, we face much more complex problems and with poorly maintained code.

Therefore, after the course, we offer support to help you implement design patterns in your project.

I would like to know more...

The best way to get more information is by talking to us. Fill out this form or send an email to info@codium.team and let's find a time to talk.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.