// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Vídeo das Opções de Refatoramento no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Vídeo das Opções de Refatoramento no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Vídeo das Opções de Refatoramento no NetBeans IDE

|===
|Este screencast demonstra como refatorar código no Editor Java do NetBeans IDE usando as seguintes operações de refatoramento disponíveis no NetBeans IDE:

* Introduzir Variável
* Introduzir Constante
* Introduzir Campo
* Introduzir Parâmetro
* Introduzir Método
* Introduzir Extensão Local

Esta demonstração baseia-se no projeto de Refatoração disponível na link:https://netbeans.org/projects/samples/downloads/download/Samples/Java/refactoring.zip[+Biblioteca de Códigos de Amostra do NetBeans+].

Autora: Alyona Stashkova 
Hora: 7:56

link:http://bits.netbeans.org/media/introduce-refactoring.swf[+Veja em tela cheia/Download+] (.swf) (Ctrl-Clique para fazer o download, 5,6 MB)


link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20Refactoring%20Options%20in%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]
 
|===


== Links relacionados

* link:editor-inspect-transform.html[+Refatoração com Inspecionar e Transformar no Editor Java do NetBeans IDE+]
* link:editor-codereference.html[+Assistência a Códigos no Editor Java do NetBeans IDE: um Guia de Referência+]
* link:http://wiki.netbeans.org/Refactoring[+Refatoração Simplificada+]
