-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathProgrammingPrinciples.txt
More file actions
29 lines (26 loc) · 2.08 KB
/
Copy pathProgrammingPrinciples.txt
File metadata and controls
29 lines (26 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
* Principles:
DRY - Don't repeat yourself
YAGNI - You Aren't Gonna Need It, but have as much as you can out of the box
KISS - Keep it simple, stupid - Kelly Johnson
"Good design is as little design as possible." - Dieter Rams
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
"Complexity is your enemy. Any fool can make something complicated. It is hard to keep things simple." - Richard Branson
"Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple." - Steve Jobs
"I have made this letter longer than usual, only because I have not had the time to make it shorter." - Blaise Pascal
"I have just three things to teach: simplicity, patience, compassion. These three are your greatest treasures." - Lao Tzu
LoD - Law of Demeter or principle of least knowledge
SoC - Separation of Concerns
layers: presentation, business(service), DAL - data access layer, DB - database
DDD - Domain Driven Design
Repository pattern (allows dependency injection and unit test for EF)
https://msdn.microsoft.com/en-us/library/ff649690.aspx
DI - Dependecy Injection (IoC - Inversion of Control), loosely-coupled
PRG pattern - Post/Redirect/Get
GRASP - General Responsibility Assignment Software Patterns
OOP - Object Oriented Programming
SOLID (object-oriented design) [SolidInPictures](https://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/)
S: SRP - Single Responsibility Principle (a class should have only a single responsibility)
O: OCP - Open/Closed Principle (software entities[classes, modules, functions..] should be open for extension, but closed for modification)
L: LSP - Liskov Substitution Principle (objects should be replaceable with instances of their subtypes without altering the correctness of program)
I: ISP - Interface Segregation Principle (many client-specific interfaces are better than one general-purpose interface)
D: DIP - Dependency Inversion Principle (one should 'Depend upon Abstractions'. Do not depend upon concretions, Dependency injection one method)