---
title: "Estilizador - Desenvolvimento de programas - Ajuda para o MetaEditor"
description: "O estilizador permite que você traga rapidamente o estilo do código fonte ao padrão recomendado. Isso torna o código... - Estilizador - Desenvolvimento de programas - Ajuda para o MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
---

[Ajuda para o MetaEditor](https://www.metatrader5.com/pt/metaeditor/help) → [Desenvolvimento de programas](https://www.metatrader5.com/pt/metaeditor/help/development) → Estilizador

# Estilizador

O estilizador permite que você traga rapidamente o estilo do código fonte ao padrão recomendado. Isso torna o código fácil de ler e faz que pareça profissional. Um código bem apresentado é muito mais fácil de ler e analisar, no futuro, pelo seu autor e outros usuários. Para iniciar o estilizador, clique em "![Estilizador](https://www.metatrader5.com/i/help/metaeditor/en/styler_icon.png) Estilizador" no menu ["Ferramentas"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_tools) ou "Ctrl+".

| Alterações no design do código, feitas pelo estilizador, podem ser revertidas. Clique em "![Desfazer](https://www.metatrader5.com/i/help/metaeditor/en/undo_icon.png) Desfazer" no menu ["Editar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_edit#undo) ou "Ctrl+Z".O estilizador oferece suporte a muitos padrões de codificação. Você pode mudar o estilo nas [configurações do editor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#styler). As regras de layout para o estilo MetaQuotes recomendado são detalhadas abaixo. |
| --- |

## Descrição geral

Para formatar corretamente o código no estilizador, são fornecidos os seguintes tipos de ação com o código:

- Substituir as linhas especificadas por outras;
- Alinhar operadores de linguagem;
- Inserir comentários no cabeçalho do arquivo;
- Inserir comentários antes de funções, estruturas, classes e seus métodos;
- Inserir comentários no final do arquivo.

Com base nos tipos de ações mencionados, o estilizador faz o seguinte ajuste:

## Espaços e linhas em branco

Remoção de espaço em branco desnecessários permite compactar o código, melhorando assim sua percepção. Além disso, o estilizador substitui cada caractere de tabulação por três espaços para evitar possível distorção de sua formatação quando aberto em programas de terceiros.

### O estilizador limpa os espaços em branco:

- No final das linhas;
- Antes do caractere ";";
- Entre "if" e "(", "while" e "(", "for" e "(", "switch" e "(", "return" e "(".
- Após ";" dentro de "for()";
- Após "!";
- Ao lado de "(" e ")";
- Ao lado de "<" e ">";
- Ao lado de "|" e "^";
- Ao lado de "+", "-", "/" e "%";
- Ao lado de "[" e "]";
- Ao lado de "==" e "==";
- Ao lado de "!=" e "!=";
- Ao lado de "<=" e ">=";
- Ao lado de "+=" e "+=";
- Ao lado de "-=" e "-=";
- Ao lado de "*=" e "*=";
- Ao lado de "/=" e "/=";
- Ao lado de "<<" e ">>";
- Um espaço à direita e à esquerda de "," e "=".

### O estilizador define:

- Um espaço à direita e à esquerda para "||" e "&&" (resultado: " || " e " && ").

### Outras substituições:

- Em construções do tipo "int* a", os caracteres "*" e "&" se referem à variável, e não a um tipo, portanto, essa construção é substituída por "int *a";
- Linhas em branco duplas são substituídas por uma.

| Antes da formatação | Após a formatação |
| --- | --- |
| void myFunction()
 {
 if (I < 10)
 {
 printf (Hello\n) ;
 if (I < 5 )
 {
 printf (i<5 !\n) ;
 if (i < 3)
 {
 printf (i<3 !\n) ;
 if (i < 2)
  {
 }
 }
 }
 }
 } | void myFunction()
 {
 if(I<10)
 {
 printf(Hello\n);
 if(I<5)
 {
 printf(i<5 !\n);
 if(i<3)
 {
 printf(i<3 !\n);
 if(i<2)
 {
  }
 }
 }
 }
 } |

| O tamanho da tabulação do estilizador é sempre igual a três espaços, independentemente das [opções do MetaEditor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#tab). |
| --- |

## Exceções para substituições ao formatar levando em conta ao alinhamento de entre linhas

As regras de substituição do estilizador, mencionadas acima, não se aplicam em alguns casos. Isso é fornecido para não violar a justificação autoral nas linhas adjacentes. O estilizador reconhece o alinhamento entre linhas na linha seguinte para as seguintes palavras-chave e símbolos:

- "//" – símbolos de comentário "C";
- "{" – chave esquerda;
- "}" – chave direita;
- "return" – operador "return";
- "delete" – operador "delete";
- "=" – símbolo de igualdade;
- ":" – dois-pontos;
- "." – ponto.

Se, durante a análise de linha, o estilizador encontrar uma dessas palavras ou símbolos, mencionados acima, na mesma posição da linha anterior ou subsequente, nenhuma substituição será feita nela.

## Formatação de funções e operadores

- Antes dos símbolos "{" e "}", que abrem e fecham a função/operador, são definidos dois espaços a partir da declaração do tipo de função/operador.
- Antes de cada linha entre os símbolos "{" e "}" da função/operador, três espaços são definidos desde o início da instrução.
- Caso não existam caracteres "{" ou "}" de fechamento num operador com texto, esses símbolos e texto serão enviados para linhas diferentes.
- Além disso, o alinhamento leva em conta o conteúdo da linha anterior. Se na linha anterior o colchete não está fechado ou a expressão aritmética não está completa, então a linha atual começará com a primeira posição após o "(" ou "=" da linha anterior.
- Condição "else" é sempre definida em pé de igualdade com "if";

| Antes da formatação | Após a formatação |
| --- | --- |
| void myFunction() {
int k[10],t=0;
for(int i=0;i<10;i++){
 k[i]=i;
 t+=i;}
if (button==name) {
bool state=ObjectGetInteger(0,name,OBJPROP_STATE);
if(!state)
ObjectSetInteger(0,name,OBJPROP_STATE,false);}
else {
ObjectSetInteger(0,name,OBJPROP_STATE,false);}
} | void myFunction()
 {
 int k[10],t=0;
 for(int i=0;i<10;i++)
 {
 k[i]=i;
 t+=i;
 }
 if(button==name)
 {
 bool state=ObjectGetInteger(0,name,OBJPROP_STATE);
 if(!state)
 ObjectSetInteger(0,name,OBJPROP_STATE,false);
 }
 else
 {
 ObjectSetInteger(0,name,OBJPROP_STATE,false);
 }
 } |

## Alinhamento ao declarar estruturas, classes e enumerações

Em esse tipo de expressões, é usada a tabulação de dois níveis:

- Três espaços são definidos antes de especificar o tipo de membro/método descrito;
- Os nomes dos membros ou métodos descritos da estrutura ou classe são indicados a partir da posição 22 na linha;
- Qualificadores de acesso a membros e métodos ("private", "protected", "private" e "virtual") são alinhadas pela palavra "class".

| Antes da formatação | Após a formatação |
| --- | --- |
| class CTradePad {
 private:
 int m_rows;
 int m_columns;
 int m_button_width;
 int m_button_height;
 int m_top;
 int m_left;
 int m_left_previous_header;
 }; | class CTradePad
 {
private:
 int m_rows;
 int m_columns;
 int m_button_width;
 int m_button_height;
 int m_top;
 int m_left;
 int m_left_previous_header;
 }; |

## Alinhamento de comentários

Há uma diferença no alinhamento de comentários em declarações e definições:

- Comentários do primeiro nível, na definição da função ou método, são alinhados à esquerda (sem recuo);
- Os comentários de primeiro nível, na declaração, são alinhados à terceira posição na linha.
- Os comentários dos níveis seguintes são alinhados igualmente no nível correspondente dos operadores em que são indicados.

| Antes da formatação | Após a formatação |
| --- | --- |
| void myFunction() {
//--- comentários de primeiro nível
int k[10],t=0;
for(int i=0;i<10;i++){
 k[i]=i;
 t+=i;}
if (button==name) {
bool state=ObjectGetInteger(0,name,OBJPROP_STATE);
//--- comentários de segundo nível
if(!state)
ObjectSetInteger(0,name,OBJPROP_STATE,false);}
else {
ObjectSetInteger(0,name,OBJPROP_STATE,false);}
} | void myFunction()
 {
//--- comentários de primeiro nível
 int k[10],t=0;
 for(int i=0;i<10;i++)
 {
 k[i]=i;
 t+=i;
 }
 if(button==name)
 {
 bool state=ObjectGetInteger(0,name,OBJPROP_STATE);
 //--- comentários de segundo nível
 if(!state)
 ObjectSetInteger(0,name,OBJPROP_STATE,false);
 }
 else
 {
 ObjectSetInteger(0,name,OBJPROP_STATE,false);
 }
 } |
| class CTradePad
 {
private:
 int m_rows;
 //--- número de linhas
 int m_columns;
 //--- número de colunas
 int m_button_width;
//--- largura de compartimento

 }; | class CTradePad
 {
private:
 int m_rows;
 //--- número de linhas
 int m_columns;
 //--- número de colunas
 int m_button_width;
 //--- largura de compartimento

 }; |

## Inserir comentários

Um comentário do tipo a seguir é inserido no cabeçalho do arquivo, se estiver faltando:

| //+------------------------------------------------------------------+
//\| ProjectName \|
//\| Copyright © 2009, CompanyName.\|
//\| http://www.companyname.net \|
//+------------------------------------------------------------------+ |
| --- |

Comentários do seguinte tipo são inseridos antes de funções, classes, estruturas, etc. na sua ausência:

| //+------------------------------------------------------------------+
//\| \|
//+------------------------------------------------------------------+ |
| --- |

No final do arquivo, é inserido um comentário de corte do seguinte tipo:

| //+------------------------------------------------------------------+ |
| --- |

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "/pt/metaeditor/help", "name": "Ajuda para o MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "/pt/metaeditor/help/development", "name": "Desenvolvimento de programas"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "/pt/metaeditor/help/development/styler", "name": "Estilizador"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Estilizador", "acceptedAnswer": { "@type": "Answer", "text": "O estilizador permite que você traga rapidamente o estilo do código fonte ao padrão recomendado. Isso torna o código..." } }] }
```
