background preloader

SOLID (object-oriented design)

SOLID (object-oriented design)
In computer programming, SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) is a mnemonic acronym introduced by Michael Feathers for the "first five principles" named by Robert C. Martin[1][2] in the early 2000s[3] that stands for five basic principles of object-oriented programming and design. The principles when applied together intend to make it more likely that a programmer will create a system that is easy to maintain and extend over time.[3] The principles of SOLID are guidelines that can be applied while working on software to remove code smells by causing the programmer to refactor the software's source code until it is both legible and extensible. It is part of an overall strategy of agile and adaptive programming.[3]

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

Related:  Helpful ArticlesDesign PatternsToRead

Getting to Know Markdown The Web has become enmeshed in all aspects of our lives. And whether we realize it or not, so has HTML, the language that’s used to format Web pages. Even people who aren’t web designers or coders — bloggers, writers, even folks who want to create content for personal web pages — need to know some HTML. Or do they? While basic HTML is fairly easy to learn, there are a lot of people who use that skill only occasionally.

The Dependency Inversion Principle While some central concepts in the realm of object-oriented design are generally harder to digest at first, such as separation of concerns and implementation switching, more intuitive and untangled paradigms on the other hand are simpler, like programming to interfaces. Unfortunately, the DIP’s formal definition is surrounded by a double-edged curse/blessing that often makes programmers gloss over it, as in many cases there’s an implicit assumption that the principle is nothing but a fancy expression for the aforementioned “programming to interfaces” commandment: High-level modules should not depend on low-level modules. Both should depend on abstractions.Abstractions should not depend upon details. Details should depend upon abstractions.

Lehman's laws of software evolution In Software engineering, the Laws of Software Evolution refer to a series of laws that Lehman and Belady formulated starting in 1974 with respect to Software evolution.[1][2] The laws describe a balance between forces driving new developments on one hand, and forces that slow down progress on the other hand. Context[edit] Observing that most software is subject to change in the course of its existence, the authors set out to determine laws that these changes will typically obey, or must obey in order for the software to survive.

GRASP (object-oriented design) General Responsibility Assignment Software Patterns (or Principles), abbreviated GRASP, consists of guidelines for assigning responsibility to classes and objects in object-oriented design. Larman states that "the critical design tool for software development is a mind well educated in design principles. It is not the UML or any other technology." Thus, GRASP is really a mental toolset, a learning aid to help in the design of object-oriented software. The Controller pattern assigns the responsibility of dealing with system events to a non-UI class that represents the overall system or a use case scenario.

JPEG, GIF, And PNG: When To Use Each Kind Of Image Generally, when you see an image used on the Internet, it’s a JPEG, GIF, or PNG. If you’re just a viewer of said images, you probably don’t spend too much time thinking about the different file types. For people who make images online, knowing when to use each type is critical. The MVC Pattern and PHP, Part 1 The Model-View-Control (MVC) pattern, originally formulated in the late 1970s, is a software architecture pattern built on the basis of keeping the presentation of data separate from the methods that interact with the data. In theory, a well-developed MVC system should allow a front-end developer and a back-end developer to work on the same system without interfering, sharing, or editing files either party is working on. Even though MVC was originally designed for personal computing, it has been adapted and is widely used by web developers due to its emphasis on separation of concerns, and thus indirectly, reusable code. The pattern encourages the development of modular systems, allowing developers to quickly update, add, or even remove functionality. In this article, I will go the basic principles of MVC, a run through the definition of the pattern and a quick example of MVC in PHP. Understanding MVC

GDS design principles GOV.UK is for anyone who has an interest in how UK government policies affect them. Using this style guidance will help us make all GOV.UK information readable and understandable. It has a welcoming and reassuring tone and aims to be a trusted and familiar resource. We take all of the writing for web points into account when we write for GOV.UK. Then we add the following points based on user testing and analysis on our own website. Active voice

Separation of concerns The value of separation of concerns is simplifying development and maintenance of computer programs. When concerns are well-separated, individual sections can be reused, as well as developed and updated independently. Of special value is the ability to later improve or modify one section of code without having to know the details of other sections, and without having to make corresponding changes to those sections.

Memory Sizes Explained - Gigabytes, Terabytes & Petabytes in Layman's Terms It’s easy to see that 500 gigabytes is more than 100 gigabytes. It’s also easy to see that 1 terabyte is larger than 1 gigabyte and that is larger than 1 megabyte. But these are all abstract terms and names. We can visualize 1 inch or 1 meter or 1 mile, but how can we visualize 1 gigabyte? 1 terabyte? The MVC Pattern and PHP, Part 2 Welcome to part 2 of this two-part series discussing MVC and PHP, where we’ll discuss some of the considerations one must make when using an MVC architecture. If you’ve come straight to this article without reading part 1 first, I encourage you to head back and have careful read as this one will assume that you’ve read and understand everything it discussed. With that in mind, let’s get started! Routing and URLs

PragPub February 2013 What you don’t know can hurt you, especially when you convince yourself that you do know it. Many Agile teams—I believe it’s most Agile teams—get some improvement from applying Agile values, principles, and practices. These teams do a better job of predicting when they’ll be done, and a better job of being done at the time they predict. You ain't gonna need it "You aren't gonna need it"[1][2] (acronym: YAGNI)[3] is a principle of extreme programming (XP) that states a programmer should not add functionality until deemed necessary.[4] Ron Jeffries writes, "Always implement things when you actually need them, never when you just foresee that you need them."[5] The phrase also appears altered as, "You aren't going to need it"[6][7] or sometimes phrased as, "You ain't gonna need it". YAGNI is a principle behind the XP practice of "do the simplest thing that could possibly work" (DTSTTCPW).[2][3] It is meant to be used in combination with several other practices, such as continuous refactoring, continuous automated unit testing and continuous integration. Used without continuous refactoring, it could lead to messy code and massive rework. Continuous refactoring in turn relies on automated unit tests and/or static analysis tools as a safety net and continuous integration to prevent wider integration problems.

Mosaic (web browser) Mosaic was developed at the National Center for Supercomputing Applications (NCSA)[5] at the University of Illinois Urbana-Champaign beginning in late 1992. NCSA released the browser in 1993,[7] and officially discontinued development and support on January 7, 1997.[8] However, it can still be downloaded from NCSA.[9] Netscape Navigator was later developed by Netscape, which employed many of the original Mosaic authors; however, it intentionally shared no code with Mosaic. Netscape Navigator's code descendant is Mozilla Firefox.[10]

Design Patterns It has been highly influential to the field of software engineering and is regarded as an important source for object-oriented design theory and practice. More than 500,000 copies have been sold in English and in 13 other languages. The authors are often referred to as the Gang of Four (GoF).[1] History[edit]

Related: