refactoring

Recursos de programación de refactoring
There has been a lot of discussion during the last 50 years about the nature of programming: Is it an art like poetry? Is it craftsmanship like pottery? Is it an exact science like physics? Or a non exact science like medicine? Is it engineering like bridge building? Whatever the nature of software development is: during this time, a lot of tools and techniques have appeared to make your lazy-developer life more difficult: Coding conventions, OOP, FP, SOLID, Design Patterns, Tests, TDD, UML, Use-cases, CASE tools, Refactoring, RUP, Agile, SCRUM, Continuous Integration, Code Complexity Metrics, Emergent Architecture, DevOps, SCM... and whatnot! But, sometimes, being a lazy developer makes you do things that seemed counterintuitive, in order to pursue your main objective: WORK LESS. https://2017.es.pycon.org/en/schedule/why-lazy-developers-write-beautiful-code/
During the writing of a recent post about connascence for Codesai's blog some of us were discussing whether we could consider a data clump a form of Connascence of Meaning (CoM) or not. In the end, we agreed that data clumps are indeed a form of CoM and that introducing a class for the missing abstraction reduces their connascence to Connascence of Type (CoT). I had wondered in the past why we use a similar refactoring to eliminate both primitive obsession and data clump smells. Thinking about t...
This post appeared originally on Codesai’s Blog. In a previous post we talked about positional parameters and how they can suffer from Connascence of Position, (CoP). Then we saw how, in some cases, we might introduce named parameters to remove the CoP and transform it into Connascence of Name, (CoN), but always being careful to not hiding cases of Connascence of Meaning, (CoM). In this post we’ll focus on languages that don’t provide named parameters and see different techniquess to remove the...
I think that if you rely only on talks, community events, tweets and posts to learn about a concept, you can sometimes end up with diluted (or even completely wrong) versions of the concept due to broken telephone game effects. For this reason, I think it's important to try instead to get closer to the sources of the concepts you want to learn. Lately I've been doing some study on object-oriented concepts doing an effort to get closer to the sources. These are the resulting notes on Single Respo...
This post appeared originally on Codesai’s Blog. As we saw in our previous post about connascence, Connascence of Position (CoP) happens when multiple components must be adjacent or appear in a particular order. CoP is the strongest form of static connascence, as shown in the following figure. Connascence forms sorted by descending strength (from Kevin Rutherford's XP Surgery). A typical example of CoP appears when we use positional parameters in a method signature because any cha...
After publishing Honey Badger Team visual history, @artolamola asked me on twitter if I used "continuous delivery" as the driving force for the transformation and why. The short answer is Yes, and in this blog post will try to explain the motivations behind.For me, agile requires two things (see the-two-pillars-of-agile-software):A healthy knowledge culture focused on people (collaboration, learning, respect, team work, creativity...) Looking for quality and technical excellence (for e...
After publishing Honey Badger Team visual history, @artolamola asked me on twitter if I used "continuous delivery" as the driving force for the transformation and why. The short answer is Yes, and in this blog post will try to explain the motivations behind.For me, agile requires two things (see the-two-pillars-of-agile-software):A healthy knowledge culture focused on people (collaboration, learning, respect, team work, creativity...) Looking for quality and technical excellence (for e...
This week I did the LegacySecurityManager kata in Java. This is the original version of the code (ported from C# to Java): As you can see, createUser is a really hard to test static function which has too many responsibilities. This is the final version of createUser after a "bit" of refactoring: which is using the CreatingUser class: The before and after code is not so interesting as how we got there. I kept the legacy code interface and tried to use as much as possible only automatic refac...
Live code, no slides! Refactoring meetup in @NUMA_bcn coming soon. #geekshubsBCN Details: https://www.meetup.com/es-ES/geekshubs-barcelona/events/239340414/ Síguenos en: Twitter: @geeks_academy Facebook: @geekshubsacademy Meetup: https://www.meetup.com/es-ES/geekshubs-barcelona/ http://www.geekshubsacademy.com/
Do you want to remove the excuses for not being a professional software developer?Release as frequently as possible, it will give you tons of feedback about the product, the design, the code, the architecture and so on... And at the same time, it forces you to have confidence in the code, automatic testing, automatic deployment, good tooling and infrastructure and learn one of the most difficult but useful skills for a developer... the skill of making large changes in small c...