Skip to content

Commit 5b1acc9

Browse files
committed
docs: 📝 adds guidelines for contributing to the project
1 parent ba0492c commit 5b1acc9

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed

CONTRIBUTING.md

+156
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
2+
# Diretrizes para Contribuição
3+
4+
Obrigado por querer contribuir com este repositório! Para garantir a consistência e qualidade do código, siga as diretrizes abaixo.
5+
6+
## Estrutura do Projeto
7+
8+
- Cada algoritmo deve estar em uma pasta separada dentro de `algorithms/<categoria>/<nome-do-algoritmo>/`.
9+
- O arquivo principal do algoritmo deve ser `index.js`.
10+
- A documentação do algoritmo deve estar em `README.md`, escrita em **português**.
11+
12+
### Exemplo de Estrutura
13+
14+
```plaintext
15+
algorithms-js/
16+
├── algorithms/
17+
│ ├── sorting/
18+
│ │ ├── quick-sort/
19+
│ │ │ ├── index.js
20+
│ │ │ └── README.md
21+
│ └── searching/
22+
│ ├── binary-search/
23+
│ │ ├── index.js
24+
│ │ └── README.md
25+
26+
```
27+
28+
## Padrões de Implementação
29+
30+
- O código deve ser escrito em **JavaScript (Node.js)** e em **inglês**.
31+
- Siga as boas práticas de programação, incluindo o uso de nomes claros e verificações de parâmetros.
32+
33+
### Exemplo de Implementação (`index.js`)
34+
35+
```javascript
36+
const elements = [2, 8, 3, 1, 5];
37+
const elementToFind = 3;
38+
39+
function linearSearch(array, item) {
40+
if (!Array.isArray(array)) return -1;
41+
42+
for (let i = 0; i < array.length; i++) {
43+
if (array[i] === item) {
44+
return item;
45+
}
46+
}
47+
48+
return -1;
49+
}
50+
51+
const result = linearSearch(elements, elementToFind);
52+
console.log('Resultado:', result);
53+
```
54+
55+
## Padrões de Documentação
56+
57+
A documentação de cada algoritmo deve ser feita no arquivo `README.md`, em **português**.
58+
59+
### Estrutura do `README.md`
60+
61+
- Nome do Algoritmo
62+
- Como funciona: Explicação detalhada do funcionamento.
63+
- Código de exemplo: Implementação do algoritmo em JavaScript.
64+
- Explicação do código: Descrição do que cada parte do código faz.
65+
- Complexidade de Tempo: Análise da complexidade temporal e, se aplicável, espacial.
66+
- Quando usar: Situações ideais para o uso do algoritmo.
67+
68+
### Exemplo de `README.md`
69+
70+
```markdown
71+
# Linear Search
72+
73+
A **Busca Linear** percorre todos os elementos de um array até encontrar o item desejado ou até verificar todos os elementos.
74+
75+
## Código de exemplo
76+
77+
const elements = [2, 8, 3, 1, 5];
78+
const elementToFind = 3;
79+
80+
function linearSearch(array, item) {
81+
for (let i = 0; i < array.length; i++) {
82+
if (array[i] === item) {
83+
return item;
84+
}
85+
}
86+
87+
return -1;
88+
}
89+
90+
### Complexidade de Tempo
91+
92+
A busca linear tem complexidade **O(n)**.
93+
94+
```
95+
96+
## Submetendo um Pull Request
97+
98+
1. Faça um **fork** do repositório.
99+
2. Crie um novo **branch** para sua feature ou correção (`git checkout -b feature/nome-da-feature`).
100+
3. Adicione e comite suas alterações.
101+
4. Envie um **pull request** com uma descrição clara do que foi alterado ou adicionado.
102+
103+
### **Exemplo de Pull Request**
104+
105+
#### Título do PR
106+
107+
```text
108+
Adicionar implementação do algoritmo Quick Sort
109+
```
110+
111+
#### Descrição do PR
112+
113+
```markdown
114+
### Descrição
115+
Este pull request adiciona a implementação do algoritmo **Quick Sort** na categoria de algoritmos de ordenação (`sorting`). O algoritmo foi implementado em JavaScript, seguindo as diretrizes de contribuição, e a documentação foi escrita em português, conforme solicitado.
116+
117+
### Mudanças principais:
118+
- Implementação do **Quick Sort** em `index.js`.
119+
- Adicionada documentação do algoritmo em `README.md` com a explicação de como o algoritmo funciona, sua complexidade temporal, e exemplos de uso.
120+
- Incluído um teste básico para validar o algoritmo com diferentes entradas.
121+
122+
### Arquivos adicionados:
123+
124+
algorithms/sorting/quick-sort/index.js
125+
algorithms/sorting/quick-sort/README.md
126+
127+
128+
### Como testar
129+
1. Execute o algoritmo com os seguintes dados de exemplo:
130+
const elements = [10, 5, 3, 7, 2, 8];
131+
const sortedArray = quickSort(elements);
132+
console.log(sortedArray); // Saída esperada: [2, 3, 5, 7, 8, 10]
133+
134+
2. Verifique se o algoritmo ordena corretamente diferentes arrays de números.
135+
136+
### Checklist
137+
138+
- [x] Segui as diretrizes de contribuição descritas em `CONTRIBUTING.md`.
139+
- [x] O código foi escrito em inglês.
140+
- [x] A documentação foi escrita em português.
141+
- [x] Testei minha implementação localmente para verificar a funcionalidade.
142+
143+
```
144+
145+
### Explicação de cada parte do PR
146+
147+
1. **Título do PR**: Deve ser descritivo e conciso, mencionando qual algoritmo foi adicionado ou modificado.
148+
149+
2. **Descrição do PR**:
150+
- **Descrição**: Um breve resumo sobre o que o Pull Request está fazendo, qual algoritmo foi adicionado e em qual categoria.
151+
- **Mudanças principais**: Lista das principais adições ou alterações, como implementação do algoritmo e documentação.
152+
- **Arquivos adicionados**: Caminho e nomes dos arquivos que foram incluídos no PR.
153+
- **Como testar**: Um exemplo de como executar o código adicionado para verificar se ele está funcionando corretamente.
154+
- **Checklist**: Um checklist para garantir que o contribuinte seguiu todas as etapas necessárias, como seguir o padrão de código e documentação.
155+
156+
Esse exemplo ajudará a padronizar os Pull Requests, facilitando a revisão e integração de novas contribuições no repositório.

0 commit comments

Comments
 (0)