Robert C Martin(Uncle Bob) -Clean Architecture and Design-2012 COHAA The Path to Agility Conference

COHAA · 99K views · 2012 · 1:13:11

Open on YouTube

Software architecture & designSoftware practice, open source & careerstalk

Why Stack Overflow recommends it

Stack Overflow users link it when answering or asking about layering, decoupling frameworks and databases from business logic, and structuring an application around its purpose rather than its delivery mechanism.

Recommended by 3 people across 3 different months, 2013 to 2018.

What it is

A conference talk by Robert C. Martin (Uncle Bob) at the 2012 Path to Agility conference, run by the Central Ohio Agile Association. He asks what makes a design clean and how to evolve systems toward clean architectures incrementally, drawing on stories such as the design of the Fitnesse project.

What people said

Strong rec Dmitri Zaitsev · 2013-09 · Stack Overflow · on “Laravel 3: Looking for explanation how to use the model”

The best statement on the subject of Frameworks I've heard is due to Uncle Bob: A good Architecture allows major decisions to be deferred! Specifically: A good Architecture delays choosing a Framework! Another great piece to think about: MVC is not an Architecture! It is a Delivery Design Pattern. Watch his video - it is one of the sadly few ones out there that don't spend 1000 words on what can be said in 10 and I can't highly enough recommend it - and it will help you to understand many points raised in your question: Robert C Martin(Uncle Bob) -Clean Architecture and Design - Video [this video] Of course, his book on Clean Code is also highly recommended!

Strong rec Dmitri Zaitsev · 2013-09 · Stack Overflow · on “PHPUnit Testing - Controllers or Models”

I guess the question to ask is: Q. Suppose all your other components work perfectly well and then some day you'll want to change your controller for whatever reason, maybe adding new components or whatever. Now after this change, suddenly the old functionality of this controller is broken. Will it be easy for you to remember the way you designed it and fix it? Or will you rather save your some headache by running few test that tell you exactly where it is broken? If you trust the advice of Uncle Bob that he gives in his fantastic book "Clean Code", you are "not allowed" to write a single line of a code before writing a test that fails. Here are some of his videos, highly recommended: Robert

Strong rec Dmitri Zaitsev · 2013-09 · Stack Overflow · on “PHP Inventory database design”

I can't highly enough recommend this video by Uncle Bob: Robert C Martin(Uncle Bob) -Clean Architecture and Design - Video [this video] Among other great things you can learn from it, specifically for your question, the takeout is that your database design should be deferred as much as possible. You are better off seeing your DB as some sort of abstract interface and start with your business logic. That will polish your understanding of what you really need from the database, what sort of API can be useful for your logic to communicate with it. It looks like you are getting stuck precisely because you try to nail down your DB structure before developing your business logic. To give you a more con

Recommends ragol · 2014-10 · Stack Overflow · on “What's the advantage of Logic-less template (such as mustache)?”

You should not prepare data for the view in your controller. Controller is for controlling application flow. Instead what you should do is create a presenter class that transforms your model into a view model which is then consumed by the view. A view model is a model for the UI which is separate from the model which is part of the business logic. I recommend you to watch the "Clean Architecture and Design" talk by Robert "Uncle Bob" Martin: [this video]

Recommends alariva · 2018-09 · Stack Overflow · on “Is a Cache mock called more than once when browser-testing?”

I managed to cover the controller's method by encapsulating the custom Cache operation into a macro, so as to get the benefits of spliting into code units. I moved my code into a macro (in the boot() of a service provider): Cache::macro('incrementExisting', function($key, $amount) { if (Cache::has($key)) { Cache::increment($key, $amount); } return $this; }); I refactored to use the macro protected function updatePatientsCount($amount = 1) { $key = vsprintf('%s.%s', [auth()->user()->id, 'backoffice.stats.patientsTotalCount']); Cache::incrementExisting($key, $amount); } I could get the desired coverage while I can still test the refactored code with unit testing. [LINK] Update I Regarding the

Cites walther · 2013-04 · Stack Overflow · on “How can a top level directory structure reveal the purpose of the application?”

Robert C. Martin in one of his talks about clean architecture openly criticizes fairly standard way of doing things nowadays. Robert C. Martin - Clean Architecture and Design [this video] What I understand as standard way is something like this: solution - UI project - Models - Views - Controllers - Assets - Logic project - Data project Martin here says, that the application should reveal its purpose immediately when you look at its top level directory structure... I wonder, can anyone provide an example of such directory structure, for instance while using MVVM pattern as a delivery mechanism? How can one structure his application the way Martin is describing?

Cites walther · 2013-04 · Stack Overflow · on “Decoupled architecture”

I'm working on a system where I'd like to have my layers decoupled as much as possible, you know, some kind of modular application to be able to switch databases and stuff without a serious modification of the rest of the system. So, I've been watching for x-the time one of the talks of Robert C. Martin about good practices, clean code, decoupling architecture etc, to get some inspiration. What I find kinda weird is his description of the system Fitnesse and the way they've implemented store/load methods for WikiPage s. I'm linking the video as well: Robert C. Martin - Clean Architecture and Design [this video] What's he describing (at least from my understanding) is that the entity is aware of t

Cites TheSecretSquad · 2014-01 · Stack Overflow · on “Implementing the interface vs a method returning an object that implements the interface”

I've been on an object-oriented design binge lately in an effort to better my design skills. This question is about a particular design choice that I see somewhat frequently, and don't understand the rationale. I know design choices tend toward the subjective, but I'd like to know what others think about this to find out if my design instincts are getting better or worse. I was watching Robert C Martin(Uncle Bob) -Clean Architecture and Design-2012 COHAA The Path to Agility Conference [this video] . During the talk he tells a story about developing Fitnesse [LINK] . I'm unfamiliar with the software, so I look it up and find the project hosted on github [LINK] . While looking through the project,

Cites 2trill2spill · 2015-05 · Stack Overflow · on “Modular program design”

First I suggest you take a look at [LINK] . Second most browsers are asynchronous so you are going to need a event library like libuv or libev . Also most modern websites require javascript to function properly, but adding a javascript engine to your browser would greatly complicate the project. I also don't see any mention of how you plan on parsing the http being sent to and from your browser, I suggest [LINK] . As for your question on control flow, I would have a function that parse's the response from the server and use's switch() to handle the various types of data being sent to your browser. There is a field in the http header which explains the content type and that way your browser s