SlideShare uma empresa Scribd logo

Introduce Null Object

Talk apresentada no PHPSP+Talks #7

1 de 15
Baixar para ler offline
INTRODUCE NULL OBJECT
REFACTORING
@HENRIQUEHOLANDA
HENRIQUE HOLANDA
Introduce Null Object
I CALL IT MY BILLION-DOLLAR MISTAKE… AT THAT TIME, I
WAS DESIGNING THE FIRST COMPREHENSIVE TYPE SYSTEM
FOR REFERENCES IN AN OBJECT-ORIENTED LANGUAGE. MY
GOAL WAS TO ENSURE THAT ALL USE OF REFERENCES SHOULD
BE ABSOLUTELY SAFE, WITH CHECKING PERFORMED
AUTOMATICALLY BY THE COMPILER. BUT I COULDN’T RESIST
THE TEMPTATION TO PUT IN A NULL REFERENCE, SIMPLY
BECAUSE IT WAS SO EASY TO IMPLEMENT. THIS HAS LED TO
INNUMERABLE ERRORS, VULNERABILITIES, AND SYSTEM
CRASHES, WHICH HAVE PROBABLY CAUSED A BILLION
DOLLARS OF PAIN AND DAMAGE IN THE LAST FORTY YEARS.
Tony Hoare, inventor of ALGOL W.
REFACTORING - INTRODUCE NULL OBJECT
REFACTORING - INTRODUCE NULL OBJECT
PROPÓSITO
▸ Null Object encapsula a ausência de um
objeto através de um substituto que oferece
um comportamento padrão adequado ao
domínio
REFACTORING - INTRODUCE NULL OBJECT
PRINCIPAIS PROBLEMAS
▸ O resultado de um null check $var == NULL normalmente é
fazer “nada” ou retornar um valor padrão
▸ Alta complexidade no código por causa de varios “ifs”
espalhados pelo código
▸ Facilidade de aparição de BUGS na aplicação pela falta de
verificação de objetos nulos
Anúncio

Recomendados

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 

Mais conteúdo relacionado

Último

Aula 01 - Desenvolvimento web - A internet.pptx
Aula 01 - Desenvolvimento web - A internet.pptxAula 01 - Desenvolvimento web - A internet.pptx
Aula 01 - Desenvolvimento web - A internet.pptxHugoHoch2
 
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxMAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxjosecarlos413721
 
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx2m Assessoria
 
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxMAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxjosecarlos413721
 
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxjosecarlos413721
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxjosecarlos413721
 
Uniagil - LACP - Lean Agile Coach Professional 2024.pdf
Uniagil - LACP - Lean Agile Coach Professional 2024.pdfUniagil - LACP - Lean Agile Coach Professional 2024.pdf
Uniagil - LACP - Lean Agile Coach Professional 2024.pdfPatriciaAraujo658854
 
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Ismael Ash
 
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docxATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx2m Assessoria
 
MAPA - DESENHO TÉCNICO - 51-2024.docx
MAPA   -   DESENHO TÉCNICO - 51-2024.docxMAPA   -   DESENHO TÉCNICO - 51-2024.docx
MAPA - DESENHO TÉCNICO - 51-2024.docx2m Assessoria
 
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docxATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx2m Assessoria
 
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxMAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxjosecarlos413721
 
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docxATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docxATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx2m Assessoria
 
Apresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareApresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareAleatório .
 
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docxMAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx2m Assessoria
 
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdf
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdfGadgets Inteligentes: Transformando o Modo como Vivemos .pdf
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdfRicardoLealPintoDaSi
 
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docxMAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx2m Assessoria
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx2m Assessoria
 
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...2m Assessoria
 

Último (20)

Aula 01 - Desenvolvimento web - A internet.pptx
Aula 01 - Desenvolvimento web - A internet.pptxAula 01 - Desenvolvimento web - A internet.pptx
Aula 01 - Desenvolvimento web - A internet.pptx
 
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxMAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
MAPA - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
 
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
 
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxMAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
 
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docxATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
ATIVIDADE 1 - RH - TEORIAS DA ADMINISTRAÇÃO - 51-2024.docx
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
 
Uniagil - LACP - Lean Agile Coach Professional 2024.pdf
Uniagil - LACP - Lean Agile Coach Professional 2024.pdfUniagil - LACP - Lean Agile Coach Professional 2024.pdf
Uniagil - LACP - Lean Agile Coach Professional 2024.pdf
 
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
 
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docxATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx
ATIVIDADE 1 - CCONT - ADMINISTRAÇÃO FINANCEIRA E ORÇAMENTÁRIA - 512024.docx
 
MAPA - DESENHO TÉCNICO - 51-2024.docx
MAPA   -   DESENHO TÉCNICO - 51-2024.docxMAPA   -   DESENHO TÉCNICO - 51-2024.docx
MAPA - DESENHO TÉCNICO - 51-2024.docx
 
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docxATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx
ATIVIDADE 1- TEORIAS DA ADMINISTRAÇÃO - 512024.docx
 
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxMAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
 
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docxATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx
ATIVIDADE 1 - CCONT - ESTRUTURAS DAS DEMONSTRAÇÕES CONTÁBEIS - 512024.docx
 
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docxATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
ATIVIDADE 1 - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
 
Apresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareApresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de software
 
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docxMAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx
MAPA - ESTATÍSTICA E PROBABILIDADE - 512024.docx
 
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdf
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdfGadgets Inteligentes: Transformando o Modo como Vivemos .pdf
Gadgets Inteligentes: Transformando o Modo como Vivemos .pdf
 
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docxMAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
MAPA - GCOM - TÉCNICAS DE NEGOCIAÇÃO E VENDAS - 512024.docx
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
 
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...
ATIVIDADE 1 - GFIN - FLUXO DE CAIXA E ADMINISTRAÇÃO DE CAPITAL DE GIRO - 5120...
 

Destaque

5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...Palo Alto Software
 
9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free VacationWeekdone.com
 
I Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from PrinceI Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from PrinceEmpowered Presentations
 

Destaque (20)

5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
 
9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation9 Tips for a Work-free Vacation
9 Tips for a Work-free Vacation
 
I Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from PrinceI Rock Therefore I Am. 20 Legendary Quotes from Prince
I Rock Therefore I Am. 20 Legendary Quotes from Prince
 

Introduce Null Object

  • 4. I CALL IT MY BILLION-DOLLAR MISTAKE… AT THAT TIME, I WAS DESIGNING THE FIRST COMPREHENSIVE TYPE SYSTEM FOR REFERENCES IN AN OBJECT-ORIENTED LANGUAGE. MY GOAL WAS TO ENSURE THAT ALL USE OF REFERENCES SHOULD BE ABSOLUTELY SAFE, WITH CHECKING PERFORMED AUTOMATICALLY BY THE COMPILER. BUT I COULDN’T RESIST THE TEMPTATION TO PUT IN A NULL REFERENCE, SIMPLY BECAUSE IT WAS SO EASY TO IMPLEMENT. THIS HAS LED TO INNUMERABLE ERRORS, VULNERABILITIES, AND SYSTEM CRASHES, WHICH HAVE PROBABLY CAUSED A BILLION DOLLARS OF PAIN AND DAMAGE IN THE LAST FORTY YEARS. Tony Hoare, inventor of ALGOL W. REFACTORING - INTRODUCE NULL OBJECT
  • 5. REFACTORING - INTRODUCE NULL OBJECT PROPÓSITO ▸ Null Object encapsula a ausência de um objeto através de um substituto que oferece um comportamento padrão adequado ao domínio
  • 6. REFACTORING - INTRODUCE NULL OBJECT PRINCIPAIS PROBLEMAS ▸ O resultado de um null check $var == NULL normalmente é fazer “nada” ou retornar um valor padrão ▸ Alta complexidade no código por causa de varios “ifs” espalhados pelo código ▸ Facilidade de aparição de BUGS na aplicação pela falta de verificação de objetos nulos
  • 10. REFACTORING - INTRODUCE NULL OBJECT
  • 11. REFACTORING - INTRODUCE NULL OBJECT
  • 12. REFACTORING - INTRODUCE NULL OBJECT
  • 13. REFACTORING - INTRODUCE NULL OBJECT PRINCIPAIS VANTAGENS ▸ Código mais linear com muito menos complexidade ▸ Diminui o número de condicionais no código (ifs) ▸ Segrega melhor a responsabilidade de cada objeto
  • 14. REFACTORING - INTRODUCE NULL OBJECT UTILIZAÇÕES COMUNS Além de encapsular o NULL : ▸ Implementação de Feature Toggle ▸ Implementação de Failover / Failback
  • 15. REFACTORING - INTRODUCE NULL OBJECT