summaryrefslogtreecommitdiff
path: root/technical/reviews
diff options
context:
space:
mode:
Diffstat (limited to 'technical/reviews')
-rw-r--r--technical/reviews/talks.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/technical/reviews/talks.md b/technical/reviews/talks.md
new file mode 100644
index 0000000..271f8b7
--- /dev/null
+++ b/technical/reviews/talks.md
@@ -0,0 +1,46 @@
+# Sandi Metz - Nothing is Something
+
+:::: tags
+- OOP
+- Ruby
+::::
+
+Some insightful thoughts on OOP.
+
+Clever examples of message-passing to get rid of conditionals.
+
+Prefer composition with dependency injection to inheritance:
+inheriting to override a method really means that the parent class had
+a default "null" behaviour that can be injected explicitly.
+
+Name the role, make an interface for it, and make classes that
+implement each behaviour (the null one and the specialiazed one).
+This will make it easier to compose specializations (i.e. save you
+from multiple inheritance).
+
+
+# Sandi Metz - Rules
+
+:::: tags
+- OOP
+- Ruby
+::::
+
+Some theory-crafting on rule-following, then the actual rules, which
+amount to
+
+- small classes,
+- tiny methods,
+- few parameters.
+
+At the 16-minute mark, an interesting interaction between Metz and a
+programmer starting to apply these rules: the programmer wonders when
+they will be able to understand the new application "the same way"
+they understood the old one. I.e. will they ever reach a point where
+they have a complete mental map of every interaction between every
+object, the same way the used to have a complete mental map of the old
+monolithic, sequential application?
+
+Metz's response is that nope, this will never happen; they will "cease
+to care" instead. In exchange, they will be able to make localized
+changes without worrying about breaking the whole application.