top of page

Groupe de Analysons l'instant

Public·10 membres
Michael Belyakov
Michael Belyakov

Clean Code Mobi

The appendix tells the story of how Uncle Bob came up with the SOLID principles and the rules of clean architecture. It's loaded with examples of past projects. I think it's the most interesting section of the book.

Clean Code Mobi


In the first half of the book you'll learn that you create a clean architecture by following the SOLID principles to break your system into components along your system boundaries (I'm paraphrasing). If you stopped reading there, you could be forgiven for having the impression that Uncle Bob would not approve of whatever you've been doing for architecture. You could also be forgiven for thinking that the few options he presents are the "right" way to do things. Yet towards the end of the book you'll read this on page 228:

In Clean Architecture, project size, team size, the consequences of project failure, expected code lifetime, and other important factors are under-emphasized as drivers of architecture. For example, needs more architecture than the personal to-do list you are developing, even though they are both web apps backed by databases.

How would you go about it? Would you write a giant program (a monolith) where the code for the spreadsheet knew about the kind of disk you selected for your computer? Can you imagine updating the spreadsheet code and adding 'if' statements everywhere so that it does one thing if you have a SATA drive and another if you have a SCSI drive? And then doing the same thing for VGA vs DVI vs HDMI video? What about different paths for PS/2 vs USB mouse input? And then repeat the process for the word processor and all the other applications you intend to bundle with your computer?

So, you might start with the ability to display the spreadsheet on the screen. But you might also want to save it to disk, save it to PDF, save it as a CSV, or print it. So, maybe one of the boundaries in your spreadsheet program is to have an internal data structure that represents each spreadsheet. And then you pass that structure to different code to display, save, or print it in the desired format.

If you keep the data structure completely unaware of how it is displayed, saved, or printed, then you can add a "save to XML" feature down the road without digging through all the code related to the spreadsheet data structure. And if that spreadsheet data structure is several million lines of code, you can imagine how much easier that would be.

I found the chapter on embedded software one of the easiest to understand. It intuitively makes sense to avoid scattering low-level calls throughout your code base. And it also makes sense to make your logic testable in the absence of the hardware (especially since embedded software is often developed before the hardware is available). If you could only read two chapters of this book, I'd recommend you make it this one and the appendix, regardless of what kind of software you write for a living.

Principles can help. We should analyze our own opinions, as well as the opinions of others, and try to discern what the underlying principles are. Take the D in SOLID. DRY is a principle and is always a valid approach. However, the degree to which we apply DRY is not an absolute. This is born out with countless StackOverflow questions where people are tying themselves, and their code, in knots to try to inappropriately reuse a particular class across multiple domains because somehow they got the idea that DRY is a rule.

Clean code Architecture is one of the best book I have read about good code. I have worked in 5 different companies in my carrier, and in all of them I have seen all the situation described by the Robert Martin in his book.

Design patterns, Solid principles, TDD, code form (class length, function names ect...) by definition ... are not really opinions. They are solid computer software theories and models consolidates over years of computer theories, Uncle Bob just emphasizes them in his way.

I follow much of Martin's clean code advice. I believe it is effective for my projects. But, again, that's not proof in the same way an engineer can prove that the bridge she is building will not fall down.

The hardest thing I had to deal in coaching my work teammates, was convincing them that coding using clean code principles was the right thing. Some they were young, unexperienced, other thinking they could write the best code (which only they understand) and the resistance to change, are some of the factors you had to deal with, which I think is your case in your article.

And I do not bias you for this, I work everyday with strong opinion based colleagues who thinks "yeah that 1000 line spaghetti code is easy just change that and that"... and loose 7 days on fixing a simple bug, and other 10 trying to extend that code.

I take Uncle Bob for grant, because he has a great experience, he describe exactly what is happening and what will happen in your job, he is not the only one saying those things, and he is basing his writings on theory, studies and solid fundamentals, not on opinion.And lately especially because I have experienced, tried the benefits of writing clean code.

The last refreshing new book about architecture that I've read was this one: Langlebige Software-Architekturen (long lasting software architectures). It has a completely different approach, it's much more practical and comes with scientific analyses of existing code bases. Unfortunately it's only available in German AFAIK.

Have any of you ever looked at the source code from his project Fitnesse? in his book he mentions it over and over. I have looked at it and what I see is a mess. He mentions "screaming architecture", but his code does not even come close. I found all components he menions, but none of the bear the names he mentions either.Use cases are Instructions, RequestBuilder factories are just string formatters to create urls, .... He also makes the mistake that many other developers do: let the controllers take care of calling the presenters.

Clean Architecture lacks a lot of stuff, but as a starter in Architecture is good overall. I read it in a few hours, it's "light". In a case, by not being so great and long, it is a great start for a developer to delve in the Architecture world, by using the same concepts he uses to code (SOLID).

One point I really enjoyed in this critique by Mr. Osepchuk is the lack of time spent on dealing with existing code ("legacy code" as people are fond of saying). You are darn lucky to work on a brand new codebase - you are working on existing codebases for about 90% of your career. Nope, you're not going to be re-writing that $500 million dollar website on Node/React when the PHP implementation is humming along just fine.

The Goal of architecture is addressed right at the start in the introduction. He won't go into details but it's clear. The goal of architecture is to optimize people work, not the system. Given a flat listing of all the code for a system, without boundaries or already decoupled classes into components, you and me, with different set of constraints won't derived the same architecture. Both being "optimized" for our own purposes. So there is no path to follow.

Comparing Clean Architecture with Code Complete isn't fair, or is comparing apples and oranges. Code Complete is at the code level/line level. At most considering a couple of lines together, to form a class definition or a function. The scale and complexity of such elements are small and simple (but I won't explain them to my Mom ;) ). Opposite to that, in the continuum describe in the book, is architecture. You draw rectangles and arrows, but the complexity implied is so huge.

Chapter 2 is my best : A Tale of Two Values. If you have to convince a non-techy-manager-feature-oriented-I-know-nothing-about-software-development to let you structure your code, that is doing architecture, that chapter could gives you bullets. Otherwise, you will craft a Monolith. Because, you won't get up a morning with the idea "Lets build a Monolith today". Those managers make you build one (and yes, we let them do). And it's also typical for a start-up, where you have to focus on features.

This easy to use Mobi Roll will produce pure water instantly allowing you to clean your windows and glass leaving them gleaming and spot free without the need to squeegee. The re-fillable filter vessel will produce approx. 8,000 litres of pure water (at 100ppm). It is supplied with a hand-held TDS meter to keep regular checks on the water quality.

Standard Products - All items apart from custom build products and trailers are available to be shipped within 24 hours from our stocking warehouse to mainland UK for a cost of 12.00 plus VAT. We offer standard next day service for all standard postcode shipping areas. If you are outside these standard national postcodes then we will advise at time of processing your order for you. You are also welcome to come to our UK stock facility in Newton Abbot to avoid the shipping cost.

Agile, where the rubber meets the road. This is a gruelling boot-camp-like session. Students are taught Agile by doing it. Lectures are kept to a minimum. Requirements, tests, and code are kept to a maximum.

In this talk Uncle Bob talks about what makes functions clean. He addresses the size of functions, the content of functions, the names of functions, the arguments of functions, and just about everything else that can be crammed into an hour long talk about functions.







  • /* */ TECHNICAL SPECIFICATION43mm wide range speaker, magnetically shielded

  • Frequency range: 80 - 20.000 Hz

  • Built-in amplifier, LED display

  • FM receiver 87.5-108 MHz

  • Bluetooth audio connection for up to 10m distance

  • LINE connection via connecting cable with 3.5mm mini phono stereo plug

  • Time display and alarm function

  • Microphone and hands-free telephone function

  • Built-in Li-Ion batterry 3,7V 1000mAh

  • Charging voltage: 5 V (USB Powered, Micro-USB connection)

  • Dimensions: approx. ø 99 x 36mm

  • Housing splash-proof IPX5 Attention, do not submerge the unit!

  • Accessoiries: USB charging cable, 3.5mm jack cable, suction cup attachment

  • /* */ PRODUCT CAREDo not use alcohol, benzene, thinner or acids to clean the cabinet.

  • If the sound-system is not in use for a longer period of time, be sure that your system isdisconnected from mains power.

  • Avoid leaving the sound-system in permanent strain such as direct sunlight, extreme moist ordryness, exceptional cold or heat, mechanical vibrations or shock.

  • MOBI-3 contains a high capacity, powerful, rechargeable Lithium Ion battery, which allows many hours of operation. Before first usage, the battery may require recharging. For a long battery life, it should be charged regularly to avoid a depth discharge.

  • /* */ DEALER INFOColour: Anthracite / GreenArticle-No.: 66146

  • EAN-Code: 4039039661469

  • 40 pcs. / master carton

/* */ Image Download.button-shortcode-63e425da58db1 .mtheme-button:after background-color: #333333; .button-shortcode-63e425da58db1 .mtheme-button border-color: #333333; color: #333333; Manual.button-shortcode-63e425da58e39 .mtheme-button:after background-color: #333333; .button-shortcode-63e425da58e39 .mtheme-button border-color: #333333; color: #333333; Music to go - flexible and wireless The new wavemaster MOBI-3 presents itself in a completely revised design and with many new functions. In addition to a display, the system has been expanded in functionality and control options. Like the previous model, it is uncompromisingly small (10 cm) and therefore the ideal companion on the road. Of course, the MOBI-3 also offers an outstanding sound volume, which is not a standard for a mobile loudspeaker of this size.

À propos

Bienvenue dans le groupe ! Vous pouvez communiquer avec d'au...


bottom of page