You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -22,7 +23,6 @@ The list was inspired by [The Principles of Good Programming](http://www.artima.
22
23
*[Law of Demeter](#law-of-demeter)
23
24
*[Composition Over Inheritance](#composition-over-inheritance)
24
25
*[Orthogonality](#orthogonality)
25
-
*[Separation of Concerns](#separation-of-concerns)
26
26
27
27
### Module/Class
28
28
@@ -83,6 +83,27 @@ Resources
83
83
84
84
*[Do The Simplest Thing That Could Possibly Work](http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html)
85
85
86
+
## Separation of Concerns
87
+
88
+
Separation of concerns is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern. For example the business logic of the application is a concern and the user interface is another concern. Changing the user interface should not require changes to business logic and vice versa.
89
+
90
+
Quoting [Edsger W. Dijkstra](https://en.wikipedia.org/wiki/Edsger_W._Dijkstra) (1974):
91
+
92
+
> It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focusing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant.
93
+
94
+
Why
95
+
96
+
* Simplify development and maintenance of software applications.
97
+
* When concerns are well-separated, individual sections can be reused, as well as developed and updated independently.
98
+
99
+
How
100
+
101
+
* Break program functionality into separate modules that overlap as little as possible.
102
+
103
+
Resources
104
+
105
+
*[Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns)
106
+
86
107
## Keep things DRY
87
108
88
109
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
Separation of concerns is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern. For example the business logic of the application is a concern and the user interface is another concern. Changing the user interface should not require changes to business logic and vice versa.
234
-
235
-
Why
236
-
237
-
* Simplify development and maintenance of software applications.
238
-
239
-
How
240
-
241
-
* Break program functionality into separate modules that overlap as little as possible.
242
-
243
-
Resources
244
-
245
-
*[Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns)
246
-
247
252
## Maximise Cohesion
248
253
249
254
Cohesion of a single module/component is the degree to which its responsibilities form a meaningful unit; higher cohesion is better.
@@ -29,7 +30,6 @@ The list was inspired by [The Principles of Good Programming](http://www.artima.
29
30
*[Law of Demeter](#law-of-demeter)
30
31
*[Composition Over Inheritance](#composition-over-inheritance)
31
32
*[Orthogonality](#orthogonality)
32
-
*[Separation of Concerns](#separation-of-concerns)
33
33
34
34
### Module/Class
35
35
@@ -90,6 +90,27 @@ Resources
90
90
91
91
*[Do The Simplest Thing That Could Possibly Work](http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html)
92
92
93
+
## Separation of Concerns
94
+
95
+
Separation of concerns is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern. For example the business logic of the application is a concern and the user interface is another concern. Changing the user interface should not require changes to business logic and vice versa.
96
+
97
+
Quoting [Edsger W. Dijkstra](https://en.wikipedia.org/wiki/Edsger_W._Dijkstra) (1974):
98
+
99
+
> It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focusing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant.
100
+
101
+
Why
102
+
103
+
* Simplify development and maintenance of software applications.
104
+
* When concerns are well-separated, individual sections can be reused, as well as developed and updated independently.
105
+
106
+
How
107
+
108
+
* Break program functionality into separate modules that overlap as little as possible.
109
+
110
+
Resources
111
+
112
+
*[Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns)
113
+
93
114
## Keep things DRY
94
115
95
116
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
Separation of concerns is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern. For example the business logic of the application is a concern and the user interface is another concern. Changing the user interface should not require changes to business logic and vice versa.
241
-
242
-
Why
243
-
244
-
* Simplify development and maintenance of software applications.
245
-
246
-
How
247
-
248
-
* Break program functionality into separate modules that overlap as little as possible.
249
-
250
-
Resources
251
-
252
-
*[Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns)
253
-
254
259
## Maximise Cohesion
255
260
256
261
Cohesion of a single module/component is the degree to which its responsibilities form a meaningful unit; higher cohesion is better.
0 commit comments