SlideShare a Scribd company logo
1 of 282
Download to read offline
https://refactoring.guru/extract-method
https://sourcemaking.com/refactoring/extract-method
https://refactoring.guru/extract-method
https://sourcemaking.com/refactoring/extract-method
Extract Method
Extract Method
https://refactoring.guru/inline-method
https://sourcemaking.com/refactoring/inline-method
https://refactoring.guru/inline-method
https://sourcemaking.com/refactoring/inline-method
Inline Method
Inline Method
https://refactoring.guru/extract-variable
https://sourcemaking.com/refactoring/introduce-explaining-variable
https://refactoring.guru/extract-variable
https://sourcemaking.com/refactoring/introduce-explaining-variable
ExtractVariable
ExtractVariable
https://refactoring.guru/inline-temp
https://sourcemaking.com/refactoring/inline-temp
https://refactoring.guru/inline-temp
https://sourcemaking.com/refactoring/inline-temp
InlineTemp
InlineTemp
https://refactoring.guru/replace-temp-with-query
https://sourcemaking.com/refactoring/replace-temp-with-query
https://refactoring.guru/replace-temp-with-query
https://sourcemaking.com/refactoring/replace-temp-with-query
ReplaceTemp with Query
ReplaceTemp with Query
https://refactoring.guru/split-temporary-variable
https://sourcemaking.com/refactoring/split-temporary-variable
https://refactoring.guru/split-temporary-variable
https://sourcemaking.com/refactoring/split-temporary-variable
SplitTemporaryVariable
ReplaceTemp with Query
https://refactoring.guru/remove-assignments-to-parameters
https://sourcemaking.com/refactoring/remove-assignments-to-parameters
https://refactoring.guru/remove-assignments-to-parameters
https://sourcemaking.com/refactoring/remove-assignments-to-parameters
Remove Assignment to Parameters
Remove Assignment to Parameters
https://refactoring.guru/replace-method-with-method-object
https://sourcemaking.com/refactoring/replace-method-with-method-object
https://refactoring.guru/replace-method-with-method-object
https://sourcemaking.com/refactoring/replace-method-with-method-object
Replace Method with Method Object
Replace Method with Method Object
https://refactoring.guru/substitute-algorithm
https://sourcemaking.com/refactoring/substitute-algorithm
https://refactoring.guru/substitute-algorithm
https://sourcemaking.com/refactoring/substitute-algorithm
Substitute Algorithm
Substitute Algorithm
https://refactoring.guru/move-method
https://sourcemaking.com/refactoring/move-method
https://refactoring.guru/move-method
https://sourcemaking.com/refactoring/move-method
Move Method
Move Method
https://refactoring.guru/move-field
https://sourcemaking.com/refactoring/move-field
https://refactoring.guru/move-field
https://sourcemaking.com/refactoring/move-field
Move Field
Move Field
https://refactoring.guru/extract-class
https://sourcemaking.com/refactoring/extract-class
https://refactoring.guru/extract-class
https://sourcemaking.com/refactoring/extract-class
Extract Class
Extract Class
https://refactoring.guru/inline-class
https://sourcemaking.com/refactoring/inline-class
https://refactoring.guru/inline-class
https://sourcemaking.com/refactoring/inline-class
Inline Class
Inline Class
https://refactoring.guru/hide-delegate
https://sourcemaking.com/refactoring/hide-delegate
https://refactoring.guru/hide-delegate
https://sourcemaking.com/refactoring/hide-delegate
Hide Delegate
Hide Delegate
https://refactoring.guru/remove-middle-man
https://sourcemaking.com/refactoring/remove-middle-man
https://refactoring.guru/remove-middle-man
https://sourcemaking.com/refactoring/remove-middle-man
Remove Middle Man
Remove Middle Man
https://refactoring.guru/introduce-foreign-method
https://sourcemaking.com/refactoring/introduce-foreign-method
https://refactoring.guru/introduce-foreign-method
https://sourcemaking.com/refactoring/introduce-foreign-method
Introduce Foreign Method
Introduce Foreign Method
https://refactoring.guru/introduce-local-extension
https://sourcemaking.com/refactoring/introduce-local-extension
https://refactoring.guru/introduce-local-extension
https://sourcemaking.com/refactoring/introduce-local-extension
Introduce Local Extension
Introduce Local Extension
https://refactoring.guru/self-encapsulate-field
https://sourcemaking.com/refactoring/self-encapsulate-field
https://refactoring.guru/self-encapsulate-field
https://sourcemaking.com/refactoring/self-encapsulate-field
Set Encapsulate Field
Self Encapsulate Field
https://refactoring.guru/replace-data-value-with-object
https://sourcemaking.com/refactoring/replace-data-value-with-object
https://refactoring.guru/replace-data-value-with-object
https://sourcemaking.com/refactoring/replace-data-value-with-object
Replace DataValue with Object
Replace DataValue with Object
https://refactoring.guru/change-value-to-reference
https://sourcemaking.com/refactoring/change-value-to-reference
https://refactoring.guru/change-value-to-reference
https://sourcemaking.com/refactoring/change-value-to-reference
ChangeValue to Reference
ChangeValue to Reference
https://refactoring.guru/change-reference-to-value
https://sourcemaking.com/refactoring/change-reference-to-value
https://refactoring.guru/change-reference-to-value
https://sourcemaking.com/refactoring/change-reference-to-value
Change Reference toValue
Change Reference toValue
https://refactoring.guru/replace-array-with-object
https://sourcemaking.com/refactoring/replace-array-with-object
https://refactoring.guru/replace-array-with-object
https://sourcemaking.com/refactoring/replace-array-with-object
Replace Array with Object
Replace Array with Object
https://refactoring.guru/duplicate-observed-data
https://sourcemaking.com/refactoring/duplicate-observed-data
https://refactoring.guru/duplicate-observed-data
https://sourcemaking.com/refactoring/duplicate-observed-data
Duplicate Observed Data
Duplicate Observed Data
https://refactoring.guru/change-unidirectional-association-to-bidirectional
https://sourcemaking.com/refactoring/change-unidirectional-association-to-bidirectional
https://refactoring.guru/change-unidirectional-association-to-bidirectional
https://sourcemaking.com/refactoring/change-unidirectional-association-to-bidirectional
Change UnidirectionalAssociation to Bidirectional
Change UnidirectionalAssociation to Bidirectional
https://refactoring.guru/change-bidirectional-association-to-unidirectional
https://sourcemaking.com/refactoring/change-bidirectional-association-to-unidirectional
https://refactoring.guru/change-bidirectional-association-to-unidirectional
https://sourcemaking.com/refactoring/change-bidirectional-association-to-unidirectional
Change BidirectionalAssociation to Unidirectional
Change Bidirectional Association to Unidirectional
https://refactoring.guru/replace-magic-number-with-symbolic-constant
https://sourcemaking.com/refactoring/replace-magic-number-with-symbolic-constant
https://refactoring.guru/replace-magic-number-with-symbolic-constant
https://sourcemaking.com/refactoring/replace-magic-number-with-symbolic-constant
Replace Magic Number with Symbolic Constant
Replace Magic Number with Symbolic Constant
https://refactoring.guru/encapsulate-field
https://sourcemaking.com/refactoring/encapsulate-field
https://refactoring.guru/encapsulate-field
https://sourcemaking.com/refactoring/encapsulate-field
Encapsulate Field
Encapsulate Field
https://refactoring.guru/encapsulate-collection
https://sourcemaking.com/refactoring/encapsulate-collection
https://refactoring.guru/encapsulate-collection
https://sourcemaking.com/refactoring/encapsulate-collection
Encapsulate Collection
Encapsulate Collection
https://refactoring.guru/replace-type-code-with-class
https://sourcemaking.com/refactoring/replace-type-code-with-class
https://refactoring.guru/replace-type-code-with-class
https://sourcemaking.com/refactoring/replace-type-code-with-class
ReplaceType Code with Class
ReplaceType Code with Class
https://refactoring.guru/replace-type-code-with-subclasses
https://sourcemaking.com/refactoring/replace-type-code-with-subclasses
https://refactoring.guru/replace-type-code-with-subclasses
https://sourcemaking.com/refactoring/replace-type-code-with-subclasses
ReplaceType Code with Subclasses
ReplaceType Code with Subclasses
https://refactoring.guru/replace-type-code-with-state-strategy
https://sourcemaking.com/refactoring/replace-type-code-with-state-strategy
https://refactoring.guru/replace-type-code-with-state-strategy
https://sourcemaking.com/refactoring/replace-type-code-with-state-strategy
ReplaceType Code with State/Strategy
ReplaceType Code with State/Strategy
https://refactoring.guru/replace-subclass-with-fields
https://sourcemaking.com/refactoring/replace-subclass-with-fields
https://refactoring.guru/replace-subclass-with-fields
https://sourcemaking.com/refactoring/replace-subclass-with-fields
Replace Subclass with Fields
ReplaceType Code with State/Strategy
https://refactoring.guru/decompose-conditional
https://sourcemaking.com/refactoring/decompose-conditional
https://refactoring.guru/decompose-conditional
https://sourcemaking.com/refactoring/decompose-conditional
Ao extrair código condicional para métodos claramente
nomeados, você facilita a vida da pessoa que manterá o
código mais tarde (como você, daqui a dois meses!).
Essa técnica de refatoração também é aplicável para
expressões curtas em condições. A string isSalaryDay() é
muito mais bonita e mais descritiva do que o código para
comparar datas.
https://refactoring.guru/consolidate-conditional-expression
https://sourcemaking.com/refactoring/consolidate-conditional-expression
https://refactoring.guru/consolidate-conditional-expression
https://sourcemaking.com/refactoring/consolidate-conditional-expression
Elimina o código de fluxo de controle duplicado. Combinar
vários condicionais que têm o mesmo "destino" ajuda a
mostrar que você está fazendo apenas uma verificação
complicada que leva a uma ação.
Ao consolidar todos os operadores, agora você pode isolar
essa expressão complexa em um novo método com um
nome que explica a finalidade da condicional.
https://refactoring.guru/consolidate-duplicate-conditional-fragments
https://sourcemaking.com/refactoring/consolidate-duplicate-conditional-fragments
https://refactoring.guru/consolidate-duplicate-conditional-fragments
https://sourcemaking.com/refactoring/consolidate-duplicate-conditional-fragments
O principal benefício desta técnica é remover código
duplicado.
https://refactoring.guru/remove-control-flag
https://sourcemaking.com/refactoring/remove-control-flag
https://refactoring.guru/remove-control-flag
https://sourcemaking.com/refactoring/remove-control-flag
https://refactoring.guru/replace-nested-conditional-with-guard-clauses
https://sourcemaking.com/refactoring/replace-nested-conditional-with-guard-clauses
https://refactoring.guru/replace-nested-conditional-with-guard-clauses
https://sourcemaking.com/refactoring/replace-nested-conditional-with-guard-clauses
.
É difícil descobrir o que cada condicional faz e como, já que
o fluxo "normal" de execução de código não é
imediatamente óbvio.
Para simplificar a situação, isole os casos especiais em
condições separadas que terminam imediatamente a
execução e retornam um valor nulo se as cláusulas de
guarda forem verdadeiras. Com efeito, sua missão aqui é
tornar a estrutura plana.
https://refactoring.guru/replace-conditional-with-polymorphism
https://sourcemaking.com/refactoring/replace-conditional-with-polymorphism
https://refactoring.guru/replace-conditional-with-polymorphism
https://sourcemaking.com/refactoring/replace-conditional-with-polymorphism
1. Se a condicional estiver em um método que executa outras
ações também, aplique Extract Method.
2. Para cada subclasse de hierarquia, redefina o método que
contém o condicional e copie o código do ramo condicional
correspondente para esse local.
3. Exclua este ramo da condicional.
4. Repita a substituição até que a condicional esteja vazia. Em
seguida, exclua a condicional e declare o método abstrato.
https://refactoring.guru/introduce-null-object
https://sourcemaking.com/refactoring/introduce-null-object
https://refactoring.guru/introduce-null-object
https://sourcemaking.com/refactoring/introduce-null-object
O custo de se livrar dessas verificações está em criar uma
nova classe.
5. Se
https://refactoring.guru/introduce-assertion
https://sourcemaking.com/refactoring/introduce-assertion
https://refactoring.guru/introduce-assertion
https://sourcemaking.com/refactoring/introduce-assertion
https://refactoring.guru/rename-method
https://sourcemaking.com/refactoring/rename-method
https://refactoring.guru/rename-method
https://sourcemaking.com/refactoring/rename-method
https://refactoring.guru/add-parameter
https://sourcemaking.com/refactoring/add-parameter
https://refactoring.guru/add-parameter
https://sourcemaking.com/refactoring/add-parameter
A escolha aqui é entre adicionar um novo parâmetro e
adicionar um novo campo privado que contém os dados
necessários pelo método. Um parâmetro é preferível
quando você precisa de alguns dados ocasionais ou que
mudam frequentemente para os quais não há sentido em
mantê-los em um objeto o tempo todo. Caso contrário,
adicione um campo privado e preencha-o com os dados
necessários antes de chamar o método.
e adicione o parâmetro
necessário
https://refactoring.guru/remove-parameter
https://sourcemaking.com/refactoring/remove-parameter
https://refactoring.guru/remove-parameter
https://sourcemaking.com/refactoring/remove-parameter
https://refactoring.guru/separate-query-from-modifier
https://sourcemaking.com/refactoring/separate-query-from-modifier
https://refactoring.guru/separate-query-from-modifier
https://sourcemaking.com/refactoring/separate-query-from-modifier
https://refactoring.guru/parameterize-method
https://sourcemaking.com/refactoring/parameterize-method
https://refactoring.guru/parameterize-method
https://sourcemaking.com/refactoring/parameterize-method
https://refactoring.guru/replace-parameter-with-explicit-methods
https://sourcemaking.com/refactoring/replace-parameter-with-explicit-methods
https://refactoring.guru/replace-parameter-with-explicit-methods
https://sourcemaking.com/refactoring/replace-parameter-with-explicit-methods
https://refactoring.guru/preserve-whole-object
https://sourcemaking.com/refactoring/preserve-whole-object
https://refactoring.guru/preserve-whole-object
https://sourcemaking.com/refactoring/preserve-whole-object
• Em vez de uma miscelânea de parâmetros, você vê um
único objeto com um nome compreensível.
• Se o método precisar de mais dados de um objeto, você
não precisará reescrever todos os locais em que o
método é usado - apenas dentro do próprio método.
https://refactoring.guru/replace-parameter-with-method-call
https://sourcemaking.com/refactoring/replace-parameter-with-method
https://refactoring.guru/replace-parameter-with-method-call
https://sourcemaking.com/refactoring/replace-parameter-with-method
Como benefício, nós nos livramos dos parâmetros
desnecessários e simplificamos as chamadas de método.
ser utilizado.
https://refactoring.guru/introduce-parameter-object
https://sourcemaking.com/refactoring/introduce-parameter-object
https://refactoring.guru/introduce-parameter-object
https://sourcemaking.com/refactoring/introduce-parameter-object
• Código mais legível. Em vez de uma miscelânea de
parâmetros, você vê um único objeto com um nome
compreensível.
• Grupos idênticos de parâmetros espalhados aqui e ali criam
seu próprio tipo de duplicação de código: enquanto o código
idêntico não está sendo chamado, grupos idênticos de
parâmetros e argumentos são constantemente encontrados.
https://refactoring.guru/remove-setting-method
https://sourcemaking.com/refactoring/remove-setting-method
https://refactoring.guru/remove-setting-method
https://sourcemaking.com/refactoring/remove-setting-method
https://refactoring.guru/hide-method
https://sourcemaking.com/refactoring/hide-method
https://refactoring.guru/hide-method
https://sourcemaking.com/refactoring/hide-method
https://refactoring.guru/replace-constructor-with-factory-method
https://sourcemaking.com/refactoring/replace-constructor-with-factory-method
https://refactoring.guru/replace-constructor-with-factory-method
https://sourcemaking.com/refactoring/replace-constructor-with-factory-method
https://refactoring.guru/replace-error-code-with-exception
https://sourcemaking.com/refactoring/replace-error-code-with-exception
https://refactoring.guru/replace-error-code-with-exception
https://sourcemaking.com/refactoring/replace-error-code-with-exception
• Libera o código de um grande número de condicionais para verificar
vários códigos de erro. Manipuladores de exceções são uma maneira
muito mais sucinta de diferenciar caminhos de execução normais dos
caminhos anormais.
• As classes de exceção podem implementar seus próprios métodos,
contendo, portanto, parte da funcionalidade de tratamento de erros
(por exemplo, para enviar mensagens de erro).
• Ao contrário das exceções, os códigos de erro não podem ser usados
em um construtor, pois um construtor deve retornar apenas um novo
objeto.
https://refactoring.guru/replace-exception-with-test
https://sourcemaking.com/refactoring/replace-exception-with-test
https://refactoring.guru/replace-exception-with-test
https://sourcemaking.com/refactoring/replace-exception-with-test
https://refactoring.guru/pull-up-field
https://sourcemaking.com/refactoring/pull-up-field
https://refactoring.guru/pull-up-field
https://sourcemaking.com/refactoring/pull-up-field
• Elimina a duplicação de campos em subclasses.
• Facilita a realocação subsequente de métodos
duplicados, se existirem, de subclasses para uma
superclasse.
https://refactoring.guru/pull-up-method
https://sourcemaking.com/refactoring/pull-up-method
https://refactoring.guru/pull-up-method
https://sourcemaking.com/refactoring/pull-up-method
Benefícios:
https://refactoring.guru/pull-up-constructor-body
https://sourcemaking.com/refactoring/pull-up-constructor-body
https://refactoring.guru/pull-up-constructor-body
https://sourcemaking.com/refactoring/pull-up-constructor-body
https://refactoring.guru/push-down-method
https://sourcemaking.com/refactoring/push-down-method
https://refactoring.guru/push-down-method
https://sourcemaking.com/refactoring/push-down-method
https://refactoring.guru/push-down-field
https://sourcemaking.com/refactoring/push-down-field
https://refactoring.guru/push-down-field
https://sourcemaking.com/refactoring/push-down-field
https://refactoring.guru/extract-subclass
https://sourcemaking.com/refactoring/extract-subclass
https://refactoring.guru/extract-subclass
https://sourcemaking.com/refactoring/extract-subclass
https://refactoring.guru/extract-superclass
https://sourcemaking.com/refactoring/extract-superclass
https://refactoring.guru/extract-superclass
https://sourcemaking.com/refactoring/extract-superclass
Você não pode aplicar essa técnica a classes que já possuem
uma superclasse.
https://refactoring.guru/extract-interface
https://sourcemaking.com/refactoring/extract-interface
https://refactoring.guru/extract-interface
https://sourcemaking.com/refactoring/extract-interface
https://refactoring.guru/collapse-hierarchy
https://sourcemaking.com/refactoring/collapse-hierarchy
https://refactoring.guru/collapse-hierarchy
https://sourcemaking.com/refactoring/collapse-hierarchy
No entanto, se a hierarquia de classes tem mais de uma
subclasse, é preciso verificar se ao recolher a hierarquia não
se violará o Princípio da Substituição de Liskov.
https://refactoring.guru/form-template-method
https://sourcemaking.com/refactoring/form-template-method
https://refactoring.guru/form-template-method
https://sourcemaking.com/refactoring/form-template-method
A duplicação de código nem sempre se refere a casos de copiar /
colar simples. Frequentemente, a duplicação ocorre em um nível
mais alto, como quando você tem um método para classificar
números e um método para classificar coleções de objetos que
são diferenciadas apenas pela comparação de elementos. A
criação de um método gabarito elimina essa duplicação
mesclando as etapas do algoritmo compartilhado em uma
superclasse e deixando apenas as diferenças nas subclasses.
https://refactoring.guru/replace-inheritance-with-delegation
https://sourcemaking.com/refactoring/replace-inheritance-with-delegation
https://refactoring.guru/replace-inheritance-with-delegation
https://sourcemaking.com/refactoring/replace-inheritance-with-delegation
https://refactoring.guru/replace-delegation-with-inheritance
https://sourcemaking.com/refactoring/replace-delegation-with-inheritance
https://refactoring.guru/replace-delegation-with-inheritance
https://sourcemaking.com/refactoring/replace-delegation-with-inheritance
Não use essa técnica se a classe contiver delegação para apenas
uma parte dos métodos públicos da classe delegada. Ao fazer
isso, você violaria o princípio da substituição de Liskov.
(this).
https://refactoring.com/
https://sourcemaking.com/refactoring
https://refactoring.guru
Refactoring Workbook. Addison-Wesley, 2004.
https://industriallogic.com/xp/refactoring/

More Related Content

Similar to Aula catalogo de refatoracoes

Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteChristian Kaltepoth
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteChristian Kaltepoth
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsJustin James
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui frameworkHongSeong Jeon
 
Visores HTML.docx
Visores HTML.docxVisores HTML.docx
Visores HTML.docxfgu
 
Mehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFraMehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFraWalter Ebert
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCMaarten Balliauw
 
Spring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSpring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSatya Johnny
 
Spring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSpring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSatya Johnny
 
Refatoração: Code smells
Refatoração: Code smellsRefatoração: Code smells
Refatoração: Code smellsIvan Ricarte
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Franz Allan See
 
Search engine optimization for symfony developers
Search engine optimization for symfony developersSearch engine optimization for symfony developers
Search engine optimization for symfony developersMaximilian Berghoff
 
Asp.net Tutorial
Asp.net TutorialAsp.net Tutorial
Asp.net TutorialGuru99
 
DSA - Digital Sandip Academy
DSA - Digital Sandip AcademyDSA - Digital Sandip Academy
DSA - Digital Sandip Academyaadildsa
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenThorsten Kamann
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2A.K.M. Ahsrafuzzaman
 
Ch tags sitemap 9
Ch tags sitemap 9Ch tags sitemap 9
Ch tags sitemap 9SabaAli74
 
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটি
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটিWordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটি
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটিFaysal Shahi
 

Similar to Aula catalogo de refatoracoes (20)

pub
pubpub
pub
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in Rewrite
 
Beyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in RewriteBeyond PrettyFaces - Einführung in Rewrite
Beyond PrettyFaces - Einführung in Rewrite
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with Sails
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
 
Visores HTML.docx
Visores HTML.docxVisores HTML.docx
Visores HTML.docx
 
Mehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFraMehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFra
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
Spring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSpring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_j
 
Spring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_jSpring aop mvc_by_sekhar_javabynatara_j
Spring aop mvc_by_sekhar_javabynatara_j
 
Refatoração: Code smells
Refatoração: Code smellsRefatoração: Code smells
Refatoração: Code smells
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12
 
Search engine optimization for symfony developers
Search engine optimization for symfony developersSearch engine optimization for symfony developers
Search engine optimization for symfony developers
 
Asp.net Tutorial
Asp.net TutorialAsp.net Tutorial
Asp.net Tutorial
 
DSA - Digital Sandip Academy
DSA - Digital Sandip AcademyDSA - Digital Sandip Academy
DSA - Digital Sandip Academy
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2
 
Ch tags sitemap 9
Ch tags sitemap 9Ch tags sitemap 9
Ch tags sitemap 9
 
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটি
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটিWordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটি
WordPress Security - ওয়ার্ডপ্রেসের সিকিউরিটি
 

More from Ivan Ricarte

Testes de unidade em Java: JUnit
Testes de unidade em Java: JUnitTestes de unidade em Java: JUnit
Testes de unidade em Java: JUnitIvan Ricarte
 
Aplicacoes web semantica saude
Aplicacoes web semantica saudeAplicacoes web semantica saude
Aplicacoes web semantica saudeIvan Ricarte
 
R - Software Estatistico
R - Software EstatisticoR - Software Estatistico
R - Software EstatisticoIvan Ricarte
 
Aula revisão de java e junit
Aula   revisão de java e junitAula   revisão de java e junit
Aula revisão de java e junitIvan Ricarte
 
Introducao a refatoracao
Introducao a refatoracaoIntroducao a refatoracao
Introducao a refatoracaoIvan Ricarte
 
C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1Ivan Ricarte
 
Membros de classes C++
Membros de classes C++Membros de classes C++
Membros de classes C++Ivan Ricarte
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Ivan Ricarte
 
Problemas no desenvolvimento do software
Problemas no desenvolvimento do softwareProblemas no desenvolvimento do software
Problemas no desenvolvimento do softwareIvan Ricarte
 
Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Ivan Ricarte
 
SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)Ivan Ricarte
 
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeO Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeIvan Ricarte
 
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Ivan Ricarte
 
Pesquisa com métodos quantitativos
Pesquisa com métodos quantitativosPesquisa com métodos quantitativos
Pesquisa com métodos quantitativosIvan Ricarte
 

More from Ivan Ricarte (20)

Testes de unidade em Java: JUnit
Testes de unidade em Java: JUnitTestes de unidade em Java: JUnit
Testes de unidade em Java: JUnit
 
Aplicacoes web semantica saude
Aplicacoes web semantica saudeAplicacoes web semantica saude
Aplicacoes web semantica saude
 
R - Software Estatistico
R - Software EstatisticoR - Software Estatistico
R - Software Estatistico
 
Aula UML e Java
Aula UML e JavaAula UML e Java
Aula UML e Java
 
Aula revisão de java e junit
Aula   revisão de java e junitAula   revisão de java e junit
Aula revisão de java e junit
 
Introducao a refatoracao
Introducao a refatoracaoIntroducao a refatoracao
Introducao a refatoracao
 
C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1C++: biblioteca padrão de templates - Parte 1
C++: biblioteca padrão de templates - Parte 1
 
c++ construtores
c++ construtoresc++ construtores
c++ construtores
 
Padroes
PadroesPadroes
Padroes
 
C++ Sobrecarga
C++ SobrecargaC++ Sobrecarga
C++ Sobrecarga
 
Membros de classes C++
Membros de classes C++Membros de classes C++
Membros de classes C++
 
UML e POO
UML e POOUML e POO
UML e POO
 
Antipadroes
AntipadroesAntipadroes
Antipadroes
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++
 
Problemas no desenvolvimento do software
Problemas no desenvolvimento do softwareProblemas no desenvolvimento do software
Problemas no desenvolvimento do software
 
Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)Aula 01 - As linguagens do software (2015)
Aula 01 - As linguagens do software (2015)
 
SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)SI300 - Apoio a atividades práticas em C++ (01)
SI300 - Apoio a atividades práticas em C++ (01)
 
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúdeO Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
O Projeto Evid@SP - Disseminação de evidências a profissionais da saúde
 
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++Um novo paradigma para o ensino de ponteiros frente à evolução de C++
Um novo paradigma para o ensino de ponteiros frente à evolução de C++
 
Pesquisa com métodos quantitativos
Pesquisa com métodos quantitativosPesquisa com métodos quantitativos
Pesquisa com métodos quantitativos
 

Recently uploaded

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

Aula catalogo de refatoracoes