Skip to main content

Learning Logs




Uncle Bob Video Series

SOLID Principles

Ep-13: Dependency Inversion 

Gist: Role reversed with example son taking care of mom.High level policy should be ignorant of the low level details. For example every IO driver in unix should confirm to the IO Driver Interface and implement the standard Open, Close, Read, Write , Seek functions.

Ep-14: SOLID Case Study

Gist: DB should be a plugin, Delivery mechanism (UI) should be a plugin

Components

Ep-15: Solid Components

Gist: 
What is a component? Component is an independently deployable software.
How to start a design? Identify the actors. Then, start with the 'S' in SOLID.
How to implement? High level policy should be ignorant of the low level details.

Ep-15: Solid Components

Gist: 
When component changes, only 1 component per layer should change.
Release Reuse Equivalent Principle: You cannot reuse a component unless the author is willing to manage it thru a release cycle (19:44?)
Responsibility (in SRP) : Corresponds to the needs of an actor
Common Closure Principle: We group together the classes that change for the same reason.  Means all serve the same actor. Means they are closed to the needs of every other actor.
Common Reuse Principle: Tells us to avoid creating a component that doesn't depend on all the classes of a dependency. Ideally group away the classes that are not dependent, so that when change happens there, you don't have to retest your component.

One cannot satisfy all 3 at the same time, eventually as a project matures it confirms to release reuse principle e.g. java.lang and java.util



Coursera - Apigee Developer Course Certifications

Done - 2020

Comments

Popular posts from this blog

Building Autonomous Drone with Raspberry Pi and APM 2.8

I am a total newbie to hardware and was pushing my limits to see how far I can reach on with hardware projects (which sparked my interest lately). I have set out on a very ambitions mission  to control a drone from raspberry pi .I began the research for this around 2 months ago and had brought a raspberry pi, drone body kit and apm flight controller. The key difference of this project from common drone projects is that I'm trying to avoid the use of and RC and instead use the raspberry pi to control it.  Hardware Ins tallation Setup: I am using APM 2.8 and Mission Planner. I am using RPi 3 to control the APM 2.8 via Telem port of APM I am planning to power the apm via the battery to ESC (Electronic Speed Controllers) Now, documenting my steps below: Day 1 Watch Tutorial To get started with APM flight controller, I watched this video tutorial [1] which gives a gentle introduction about APM board.  Setup APM board and Calibrate Sensors I downloade...

Adafruit GFX - How to change line spacing in text?

  You may want to update the line spacing to be a little lower than default due to small screen size on IoT devices. I faced this challenge while working on a Watchy hobby project. You may have used a font generator or just using the default fonts and got a *.h file that has the details of the font. In that case just change the last integer value in the PROGMEM variable.

Data Mining & Analytics with R : Running R Scripts and Data Mining Techniques - Day 2

Warning: These are my messy study notes, much better legible notes can be found here  http://onepager.togaware.com 1. A Tour Thru Rattle Transform Tab ( by no means near to the full power of underlying R) Data Mining Tabs - Cluster, Associate Model Log Tab  - Capture the corresponding R command Working from Left to Right on Tabs  Remember to Click Execute Button 'Save' -> Projects save the current state, all models etc. 'Open' Projects can be restored at a later time You can even load it back to R  2. First R Program Load rattle and ggplot2 library(rattle)  # Provides the weather dataset  library(rattle)  # Provides the ggplot() function ggplot -> Grammar of Graphics : Just like english grammar or grammar of a computer language. A result of Hadley's Phd . Look him up to learn more details. Then produce a plot using ggplot() # handsondatascience.com - tips on elegantly writing repeated code ds ...