refactoring

Recursos de programación de refactoring
Introduction.In the previous post, we applied the humble object pattern idea to avoid having to write end-to-end tests for the interesting logic of a hard to test legacy Om view, and managed to write cheaper unit tests instead. Then, we saw how those unit tests were far from ideal because they were highly coupled to implementation details, and how these problems were caused by a lack of separation of concerns in the code design. In this post we’ll show a solution to those design problems using e...
Elena Torró: Programadora. En mi tiempo libre intento sin éxito mantener un blog personal y arreglar el cuello de botella de mi lista de TODO's, entre otros. Actualmente trabajo como desarrolladora Front End en CARTO. Ha ofrecido una kata en We Code de "GildedRose Refactoring Kata - Se trata de una Kata muy divertida de refactorización de "legacy code". Hice esta Kata en theAntievent, un Open Space de Bilbao, conducida por Sergio Revilla. Me gustó tanto que me apetece mucho hacerla de nuevo, esta vez siendo yo quien la conduzca. Al contrario que la mayoría de Katas, ¡la solución ya existe! Sólo que tenemos que discutir como cambiarla." Slides de la kata: http://bit.ly/2oASr6e Elena Torró planteó a raíz de una motivación que tenía, un debate orientado a la educación online, las páginas, portales y herramientas que se utilizaban para realizar este tipo de actividades. ------------------------------ Todos los videos de WeCodeFest 2018 https://www.youtube.com/playlist?list=PLKxa4AIfm4pVh1ycmimywRWoiShVodcH4 Todos los vídeos de la pasada edición de WTM en Madrid https://www.youtube.com/watch?v=J-cZU3Oramg&list=PLKxa4AIfm4pVgiDv0Ya7sBxM9AOTmFhH7 Suscríbete a nuestra newsletter; https://goo.gl/5jc6uP Facebook; https://goo.gl/o8HrWX Twitter; https://goo.gl/MU5pUQ LinkedIn https://goo.gl/2On7Fj/
This presentation was a part of Lambda World 2017 by Yulia Startsev. Follow: -https://www.twitter.com/47deg -https://www.twitter.com/lambda_world Visit: -https://www.47deg.com/events for more details. --- Functional programming has become popular for building robust, complex UIs. Using React and Redux, for example, alleviates many of the issues commonly found in UI programming. In particular, making changes in state clear and predictable rather than the mess found in earlier solutions. However, there are some problems which continue to be painful. Asynchronicity is one such example, since changes to state which are asynchronous are difficult to predict and reason about. In the Firefox debugger, we have explored two options within the react ecosystem for dealing with this: thunk args and sagas. They take two different approaches to the problem of communicating with an async resource and updating the state. Using a recent refactoring of debugger breakpoints as a case study, we will explore the strengths and weaknesses of each. In the process, we will clarify the rationale behind the patterns and show how we came to our chosen solution. While the talk will be focused on the issue from a front-end/UI perspective, it might prove an interesting inspiration for similar problems in other places!
Presentación preparada para la BCN Software Craftsmanship 2017VideoSimplicidad para desarrolladores Muchisimas gracias a Autentia por el Video (AutentiaMedia youtube channel)SlidesSlides (con Notas) Simplicidad para desarrolladores Feedback:Feedback simplicidad-para-desarrolladoresReferencias:Simple made easy8 lines of code Postponer (CAS16) Postponer: libro de recetas (SCPNA17)Art of destroying softwareEmbracing Uncertainty   Nature of software development ...
Presentación preparada para la BCN Software Craftsmanship 2017VideoSimplicidad para desarrolladores Muchisimas gracias a Autentia por el Video (AutentiaMedia youtube channel)SlidesSlides (con Notas) Simplicidad para desarrolladoresFeedback:Feedback simplicidad-para-desarrolladoresReferencias:Simple made easy8 lines of code Postponer (CAS16) Postponer: libro de recetas (SCPNA17)Art of destroying softwareEmbracing Uncertainty   Nature of software development Un...
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...