You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
2.0 KiB
39 lines
2.0 KiB
5 years ago
|
+++
|
||
|
title = "Things I Learnt The Hard Way - Design Patters Are Used to Name Solution, Not Find Them"
|
||
|
date = 2019-06-25
|
||
|
|
||
|
[taxonomies]
|
||
|
tags = ["en-au", "books", "things i learnt", "design patterns"]
|
||
|
+++
|
||
|
|
||
|
Most of the times I saw design patterns being applied, they were applied as a
|
||
|
way to find a solution, so you end up twisting a solution -- and, sometimes,
|
||
|
the problem it self -- to fit the pattern.
|
||
|
|
||
|
<!-- more -->
|
||
|
|
||
|
My guess is that the heavy use of "let's apply _this_ design pattern" before
|
||
|
even understanding the problem -- or even trying to solve it -- comes as a
|
||
|
form of [cargo cult](/books/things-i-learnt/cargo-cult): I heard people used
|
||
|
this pattern and solved their problem, so let's use it too and it will solve
|
||
|
our problem. Or, worse: Design pattern is described by _Famous Person_, so we
|
||
|
must use it.
|
||
|
|
||
|
Here is the thing: Design pattern should _not_ be used as a way to find
|
||
|
solution to any problems. You may use some of them as base for your solution,
|
||
|
but you must focus on the _problem_, not the _pattern_.
|
||
|
|
||
|
"Do a visitor pattern will solve this?" is the wrong question. "What should we
|
||
|
do to solve our problem?" is the real question. Once you went there and solved
|
||
|
the problem you may look and see if it is a visitor pattern -- or whatever
|
||
|
pattern. If it doesn't, that's alright, 'cause you _solved the problem_. If it
|
||
|
did... well, congratulations, you now know how to name your solution.
|
||
|
|
||
|
I've seen this happening a lot: People have a problem; people decided to use a
|
||
|
pattern; the pattern doesn't actually solve the problem (not in the 100% mark,
|
||
|
but above 50%); what happens then is that people start twisting the problem to
|
||
|
fit the pattern or, worse, add new layers to transform the problem into the
|
||
|
pattern.
|
||
|
|
||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/gherkin", prev_chapter_title="Gherkin Is Your Friend to Understand Expectations", next_chapter_link="/books/things-i-learnt/integration-tests", next_chapter_title="Unit Tests Are Good, Integration Tests Are Gooder") }}
|