Skip to content

Commit d1bca13

Browse files
committed
Fixed #1 + Fixed #2 + Fixed #3 + Fixed #7
1 parent 55e5589 commit d1bca13

35 files changed

+1613
-0
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto

.gitignore

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Uncomment these types if you want even more clean repository. But be careful.
2+
# It can make harm to an existing project source. Read explanations below.
3+
#
4+
# Resource files are binaries containing manifest, project icon and version info.
5+
# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
6+
#*.res
7+
#
8+
# Type library file (binary). In old Delphi versions it should be stored.
9+
# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
10+
#*.tlb
11+
#
12+
# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
13+
# Uncomment this if you are not using diagrams or use newer Delphi version.
14+
#*.ddp
15+
#
16+
# Visual LiveBindings file. Added in Delphi XE2.
17+
# Uncomment this if you are not using LiveBindings Designer.
18+
#*.vlb
19+
#
20+
# Deployment Manager configuration file for your project. Added in Delphi XE2.
21+
# Uncomment this if it is not mobile development and you do not use remote debug feature.
22+
#*.deployproj
23+
#
24+
# C++ object files produced when C/C++ Output file generation is configured.
25+
# Uncomment this if you are not using external objects (zlib library for example).
26+
#*.obj
27+
#
28+
29+
# Delphi compiler-generated binaries (safe to delete)
30+
*.exe
31+
*.bpl
32+
*.bpi
33+
*.dcp
34+
*.so
35+
*.apk
36+
*.drc
37+
*.map
38+
*.dres
39+
*.rsm
40+
*.tds
41+
*.dcu
42+
*.lib
43+
*.a
44+
*.o
45+
*.ocx
46+
*.res
47+
48+
# Delphi autogenerated files (duplicated info)
49+
*.hpp
50+
*Resource.rc
51+
52+
# Delphi local files (user-specific info)
53+
*.local
54+
*.identcache
55+
*.projdata
56+
*.tvsconfig
57+
*.dsk
58+
*.dproj.local
59+
.~lock.*
60+
61+
# Delphi history and backups
62+
__history/
63+
__recovery/
64+
*.~*
65+
66+
# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
67+
*.stat

README.md

Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
# Algoritmos de Ordenação (Delphi)
2+
3+
>Mostra visualmente os diversos algoritmos de ordenação, desenvolvido em Delphi.
4+
5+
<br />
6+
7+
![Maintenance](https://img.shields.io/maintenance/yes/2020)
8+
![Build](https://img.shields.io/badge/Build-1.0.0.0-brightgreen)
9+
![GitHub release (latest by date)](https://img.shields.io/github/v/release/bomrafinha/Ordenacao)
10+
![GitHub Release Date](https://img.shields.io/github/release-date/bomrafinha/Ordenacao)
11+
![Github repo age](https://img.shields.io/github/issues/detail/age/bomrafinha/Ordenacao/1.svg?style=flat-square)
12+
![Github author](https://img.shields.io/github/issues/detail/u/bomrafinha/Ordenacao/1.svg?style=flat-square)
13+
14+
![GitHub contributors](https://img.shields.io/github/contributors/bomrafinha/Ordenacao)
15+
![GitHub last commit](https://img.shields.io/github/last-commit/bomrafinha/Ordenacao)
16+
![GitHub commit activity](https://img.shields.io/github/commit-activity/y/bomrafinha/Ordenacao.svg?style=flat-square)
17+
18+
![GitHub issues](https://img.shields.io/github/issues/bomrafinha/Ordenacao)
19+
![GitHub closed issues](https://img.shields.io/github/issues-closed/bomrafinha/Ordenacao)
20+
![GitHub pull requests](https://img.shields.io/github/issues-pr/bomrafinha/Ordenacao)
21+
![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/bomrafinha/Ordenacao)
22+
![GitHub forks](https://img.shields.io/github/forks/bomrafinha/Ordenacao)
23+
![GitHub stars](https://img.shields.io/github/stars/bomrafinha/Ordenacao)
24+
![GitHub All Releases](https://img.shields.io/github/downloads/bomrafinha/Ordenacao/total)
25+
26+
![GitHub top language](https://img.shields.io/github/languages/top/bomrafinha/Ordenacao)
27+
![GitHub language count](https://img.shields.io/github/languages/count/bomrafinha/Ordenacao)
28+
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/bomrafinha/Ordenacao)
29+
30+
![GitHub](https://img.shields.io/github/license/bomrafinha/Ordenacao)
31+
32+
<br />
33+
34+
*******
35+
## Índice
36+
1. [Uso](#uso)
37+
2. [Sitemap](#sitemap)
38+
3. [Estrutura](#estrutura)
39+
4. [Workgroup](#workgroup)
40+
5. [Dependências](#dependencias)
41+
6. [Contribuir](#contribuir)
42+
7. [Checklist para Contribuir](#checklist)
43+
8. [Créditos](#creditos)
44+
9. [Licença](#licenca)
45+
10. [Padronização de Código](#source)
46+
11. [TODO](#todo)
47+
12. [Árvore do Projeto](#arvore)
48+
*******
49+
50+
<br />
51+
52+
## Uso <a name="uso"></a>
53+
54+
<br />
55+
56+
## [Sitemap](https://coggle.it) <a name="sitemap"></a>
57+
![Sitemap](documentation/images/sitemap.png)
58+
59+
<br />
60+
61+
## Estrutura <a name="estrutura"></a>
62+
+ **app:** Contém a compilação do(s) pacote(s) e tela de demonstração;
63+
+ **documentation:** Contém a documentação do(s) pacote(s);
64+
+ **images:** Contém as imagens usadas no(s) pacote(s);
65+
+ **modules:** Contém os algoritmos de ordenação, cada módulo (pacote) corresponde à um algoritmo específico;
66+
+ **output:** Contém os arquivos pré compilados usados pelo Delphi (.dcu);
67+
+ **project:** Diretório com os projetos de cada pacote e visualizador;
68+
+ **src:** Contém o fonte do visualizador e fontes comuns a todos;
69+
+ **vendor:** Contém os pacotes de terceiros;
70+
71+
<br />
72+
73+
## Workgroup <a name="workgroup"></a>
74+
Deve-se manter a ordem de compilação do projeto como na imagem.
75+
76+
![Workgroup](documentation/images/workgroup.png)
77+
78+
<br />
79+
80+
## Dependências <a name="dependencias"></a>
81+
+ **Sem dependências até o momento.**
82+
83+
<br />
84+
85+
## Contribuir <a name="contribuir"></a>
86+
1. Faça um "fork" com base no master;
87+
2. Faça "commit" de suas alterações (Caso estiver resolvendo alguma "issue" não esqueça de na mensagem escrever "Fixed #numeroIssue");
88+
3. Faça "push" de seus commits;
89+
4. Solicite um "pull request" para o master do repositório principal.
90+
91+
### Criando uma *Issue*
92+
Para criar uma *issue* atente para o seguinte:
93+
+ Selecionar o *label* adequado para a *issue* (esse *label* poderá vir a ser alterado, mas a não designação faz com que a *issue* fique perdida).
94+
95+
![Label Issue](documentation/images/label_issue.png)
96+
97+
+ Selecionar o projeto *Kanban*, isso organizará o que está sendo feito e o que deverá ser feito.
98+
99+
![Projeto Issue](documentation/images/project_issue.png)
100+
101+
<br />
102+
103+
## Checklist para Contribuir <a name="checklist"></a>
104+
+ Testar as funcionalidades criadas / alteradas;
105+
+ Marcar com "#" os issues concluídos, nos commits;
106+
+ Readme (caso nescessário)
107+
- Número do build;
108+
- Alterar indice;
109+
- Alterar / adicionar forma de uso;
110+
- Incluir pacotes / classes / métodos / parâmetros nas formas de uso;
111+
- Alterar sitemap;
112+
- Alterar estrutura da aplicação;
113+
- Imagem atualizada do Workgroup;
114+
- Adicionar / Remover dependências (pacotes de terceiros);
115+
- Atualizar a documentação do fonte;
116+
- Remover / adicionar itens ao TODO;
117+
- Atualizar árvore do projeto;
118+
+ Ao adicionar itens ao TODO, não esquecer de criar a "issue" correspondente;
119+
* Labels principais
120+
- **bug:** Correção de algum problema;
121+
- **documentation:** Alteração na documentação;
122+
- **enhacement:** Alteração de funcionalidade existente para melhorá-la;
123+
- **feature:** Nova funcionalidade;
124+
* Projeto
125+
- **Kanban:** Para melhor organizar o projeto;
126+
127+
<br />
128+
129+
## Créditos <a name="creditos"></a>
130+
[@bomrafinha](https://github.com/bomrafinha)
131+
132+
<br />
133+
134+
## [Licença](./LICENSE) <a name="licenca"></a>
135+
136+
<br />
137+
138+
## Padronização de Código <a name="source"></a>
139+
### Versionamento
140+
Para versionar esse repositório deve-se usar como base o versionamento para windows 32 bits do Ordenacao.Executavel.exe, da forma que se segue:
141+
142+
![Versionamento](documentation/images/versionamento.png)
143+
#### onde:
144+
1. Versão principal, só muda quando o funcionamento básico do sistema altera de forma considerável;
145+
2. Quantidade de módulos funcionais do sistema (cada algoritmo de ordenação representa um módulo);
146+
3. Quantidade de funções públicas disponíveis no sistema;
147+
4. Versão de build do sistema auto-gerado pelo Delphi;
148+
5. Deve-se manter o build como auto incremento;
149+
150+
Para cada teste compilado com sucesso deve-se dar *build* no .exe para versionar (shift + F9).
151+
152+
Os *releases* do repositório serão feitos a cada vez que um módulo estiver 100% finalizado (considerando que um módulo equivale à um algoritmo de ordenação), ou quando um conserto muito relevante for realizado.
153+
154+
<br />
155+
156+
### Padrões adotados no projeto
157+
Para um melhor entendimento do projeto foi-se adotado alguns padrões que facilitam a identificação de cada estrutura usada. São, basicamente, o uso de *camelcase*, com variações nas iniciais;
158+
159+
#### Variáveis de método
160+
Variáveis locais devem ser *camelcase* iniciando em minúsculo.
161+
162+
Observar o espaçamento entre a declaração de variáveis e o inicio do método.
163+
164+
![Variáveis de método](documentation/images/padrao_variaveis_locais.png)
165+
166+
#### Variáveis privadas
167+
A declaração de váriaveis privadas deve ocorrer sempre dentro dos modificadores de acesso.
168+
169+
Devem começar sempre com "f" minúsculo, seguido por seu nome em *camelcase* com a inicial em maiúsculo.
170+
171+
![Variáveis privadas](documentation/images/padrao_variaveis_privadas.png)
172+
173+
#### Propriedades
174+
Propriedades devem usar *camelcase* começando sempre com a inicial em maiúsculo.
175+
176+
Devem ter exatamente o nome de sua variável privada e/ou metodo de acesso, eliminando apenas o prefixo (f, get, set).
177+
178+
![Propriedades](documentation/images/padrao_propriedades.png)
179+
180+
#### Métodos
181+
A declaração de métodos deve ocorrer sempre dentro dos modificadores de acesso.
182+
183+
Métodos devem ser *camelcase* iniciando em minúsculo.
184+
185+
Os parâmetros do método devem ser *camelcase* iniciando em minúsculo.
186+
187+
Procurar, quando possível, usar prefixos *get*, *set*, *eh*, etc de acordo com a função do método e/ou seu retorno.
188+
189+
![Métodos](documentation/images/padrao_metodos.png)
190+
191+
#### Interfaces
192+
Interfaces devem começar sempre com a letra "I" (maiúsculo), seguido por seu nome em *camelcase* com a inicial em maiúsculo também.
193+
194+
![Interfaces](documentation/images/padrao_interfaces.png)
195+
196+
#### Classes
197+
Classes devem começar sempre com a letra "T" (maiúsculo), seguido por seu nome em *camelcase* com a inicial em maiúsculo também.
198+
199+
Classes que não extendem nenhuma outra classes em específico devem extender *TInterfacedObject*.
200+
201+
![Classes](documentation/images/padrao_classes.png)
202+
203+
#### Chamada de métodos em múltiplas linhas
204+
Métodos com chamadas muito extensas devem ser chamados usando padrão de identação JSON.
205+
206+
![Chamada de métodos em múltiplas linhas 01](documentation/images/padrao_chamadas_01.png)
207+
![Chamada de métodos em múltiplas linhas 02](documentation/images/padrao_chamadas_02.png)
208+
209+
#### Uso de blocos *begin end*
210+
Estruturas que não se utilizam do bloco de abertura e fechamento de código, como *ifs* de uma linha, em um código muito extenso geralmente atrapalham na leitura do código para posteriores modificações. Por esse motivo **todas** as estruturas devem possuir o bloco de abertura e fechamento (*begin .. end*)
211+
212+
![Uso de blocos *begin end* 01](documentation/images/padrao_blocos_01.png)
213+
![Uso de blocos *begin end* 02](documentation/images/padrao_blocos_02.png)
214+
215+
#### Identação
216+
Modificadores de acesso devem ser declarados de forma a ficarem alinhados à declaração da classe.
217+
218+
Declaração de métodos, propriedades, construtores/destrutores, bem como o *var* da declaração de variáveis, devem estar alinhados.
219+
220+
Agrupar *procedures* e *functions* sem alterná-los.
221+
222+
Separar declações de variáveis, métodos, construtores, destrutores e propriedades com uma linha em branco, bem como deixar uma linha em branco antes da declaração de modificador de acesso, ou fim do bloco, exceto no primeiro modificador após a declaração da classes.
223+
224+
![Identação](documentation/images/padrao_identacao_01.png)
225+
226+
#### Um código bem padronizado é muito mais fácil de ler, mesmo por programadores que utilizam outras linguagens.
227+
228+
<br />
229+
230+
## TODO <a name="todo"></a>
231+
+ Documentação
232+
- Imagem de Sitemap
233+
- Imagem de workgroup
234+
- Forma de Uso
235+
- Colocar algoritmos no TODO
236+
- Árvore do Projeto
237+
238+
+ Estrutura básica do código
239+
- Interface *ISort*
240+
- Estruturação/Criação dos pacotes
241+
242+
<br />
243+
244+
## Árvore do Projeto <a name="arvore"></a>
245+
```
246+
Ordenacao
247+
├── app
248+
│ └── .gitkeep
249+
├── documentation
250+
│ └── images
251+
│ └── .gitkeep
252+
├── images
253+
│ └── .gitkeep
254+
├── modules
255+
│ └── .gitkeep
256+
├── output
257+
│ └── .gitkeep
258+
├── project
259+
│ └── .gitkeep
260+
├── src
261+
│ └── .gitkeep
262+
├── vendor
263+
│ └── .gitkeep
264+
├── .gitattributes
265+
├── .gitignore
266+
├── LICENSE
267+
└── README.md
268+
```

app/.gitkeep

Whitespace-only changes.
24.2 KB
Loading
3.5 KB
Loading
3.35 KB
Loading
3.3 KB
Loading
4 KB
Loading
6.27 KB
Loading

0 commit comments

Comments
 (0)