Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Elegant Objects and Cactoos
Search
Filipe Freire
December 21, 2017
Programming
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elegant Objects and Cactoos
Overview of the EO paradigm and small overview of the Cactoos library for Porto Codes Meetup
Filipe Freire
December 21, 2017
More Decks by Filipe Freire
See All by Filipe Freire
Deep Testing
filipe
0
190
Finding Tranquility
filipe
0
160
Quality Foundations
filipe
0
190
Tacit CSS Framework
filipe
0
490
Quality from the start
filipe
0
210
Tacit
filipe
0
230
Waiting is boring
filipe
0
780
You don't need a DevOps to "be DevOps"
filipe
0
410
Other Decks in Programming
See All in Programming
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
350
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
Intent as Code
shoppingjaws
6
1k
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
230
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
160
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
240
Building an Out-of-Order CPU
latte72
1
770
アクセシビリティから考える情報設計
high_g_engineer
0
370
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
100
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
210
Featured
See All Featured
HDC tutorial
michielstock
2
870
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
First, design no harm
axbom
PRO
2
1.3k
Amusing Abliteration
ianozsvald
1
300
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Facilitating Awesome Meetings
lara
57
7.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
Into the Great Unknown - MozCon
thekraken
41
2.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Transcript
Elegant objects & Cactoos Filipe Freire 21 December 2017
Quick intro Learner, tester, developer, husband OSS contributor 2y work
as a “coding” tester 1y work as a developer Currently @ filfreire.com 2
Elegant Objects 3
It’s an OOP paradigm 4
Book Yegor Bugayenko @yegor256 www.yegor256.com 5
Book Yegor Bugayenko @yegor256 www.yegor256.com Set of recommendations: - Cleaner
code - Better classes - Visible architecture 6
Disclaimer: You can find out more at yegor256.com Youtube @yegor256
and on the EO books. 7
So, what are the recommendations? 8
Getters Setters Mutable objects Static methods Annotations Data Objects Type
Casting Etc. 9
Getters Setters Mutable objects Static methods Annotations Data Objects Type
Casting Etc. 10
Don’t treat objects as data structures bags of data.
Ever. 11
Maintainability > everything else 12
“Objects as living beings” Birth Working life Retirement 13
Some examples… 14
Birth 15
Code Free Constructors 16
17
“Object’s name != job title” 18
Object’s name != job title Meaning: Avoid the use of
“-ER” 19
Helper, Handler, Writer, Reader, Converter, Observer, Listener, Sorter, Encoder, Decoder,
… 20
Helper, Handler, Writer, Reader, Converter, Observer, Listener, Sorter, Encoder, Decoder,
… 21
An object isn’t: 1) A link between worlds 2) A
collection of procedures plus data 22
An object is: 1) Self-sufficient 2) Representative of encapsulated
data 23
A Finder of Prime Numbers vs A List of numbers
that returns only primes 24
Education & Work life 25
No Getters and Setters. Not even once. 26
No Getters and Setters ?! ?! 27
Again, don’t treat objects as bags of data. Ever.
28
Computer-style: 29
Human-style: 30
“An object works by contracts” 31
“An object works by contracts” Always use interfaces 32
Example “I want results for a Tennis match” Tennis_31Feb.xlsx TENNIS.txt
tennis_res.json Sources: … 33
Example “I want results for a Tennis match” Tennis_31Feb.xlsx TENNIS.txt
tennis_res.json Sources: … ExcelTennisMatch TextTennisMatch JsonTennisMatch 34
Example “I want results for a Tennis match” ExcelTennisMatch TextTennisMatch
JsonTennisMatch TennisMatch GameMatch implement extends 35
Excel, Text, Json, etc. Contract stays the same More Decoupling
and more Maintainability 36
“A good object should never change his encapsulated state.” 37
“A good object should never change his encapsulated state.” 38
Be immutable
This can change State is the same 39
Some benefits Thread Safety Avoiding Temporal Coupling Avoiding side effects
Avoiding identity mutability (more at http://yegor256.com/2014/06/09/objects-should-be-immutable.html) 40
Retirement 41
Don’t accept null arguments Don’t return null 42
- Hello, is it a software department? - Yes. -
Let me talk to your employee "Jeffrey" please. - Hold the line please... - Hello. - … 43
- Hello, is it a software department? - Yes. -
Let me talk to your employee "Jeffrey" please. - Hold the line please... - Hello. - Are you NULL? (more at http://www.yegor256.com/2014/05/13/why-null-is-bad.html) 44
There’s more to it, Let’s save it for another talk
45
https://github.com/yegor256/cactoos 46
Useful building blocks from Guava, Apache Commons, JDK + EO
paradigm 47
Meaning… No null No code in constructors No getters and
setters No mutable objects No static methods, not even private ones (among other stuff) 48
Example 1 49
Example 2 50
Example 3 51
Summing up 52
Maintainability 53
–W. Edwards Deming "Build quality into the product rather than
trying to test it in later." 54
Quality from the start Force strict control of code quality.
Ex: Static Analysis -> mandatory 55
Thank you. Questions? filfreire filrfreire filfreire.com 56