Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ShulV authored Dec 3, 2023
1 parent c7df273 commit 21ebd99
Showing 1 changed file with 47 additions and 24 deletions.
71 changes: 47 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
<a href="https://github.com/ShulV/Xmap/blob/main/README_en.md">Английская версия</a>
# :world_map: Xmap (Карта мест)
## :question: Небольшая помощь для разработчиков
### :point_right: Как открыть Swagger документацию:
http://localhost:8080/swagger-ui/index.html
### Как получить коллекцию для Postman:
Скачайте последнюю версию с https://github.com/ShulV/Xmap/tree/main/postman и импортируйте в Postman.
### Как инициализировать базу данных (PostgreSQL):

<h1>🗺️ Xmap (Карта мест)</h1>

<h2>❓ Небольшая помощь для разработчиков</h2>

<h3>👉 Как открыть Swagger документацию:</h3>
<p>http://localhost:8080/swagger-ui/index.html</p>

<h3>👉 Как получить коллекцию для Postman:</h3>
<p>Скачайте последнюю версию с https://github.com/ShulV/Xmap/tree/main/postman и импортируйте в Postman.</p>

<h3>👉 Как инициализировать базу данных (PostgreSQL):</h3>
<ul>
<li>Создайте все таблицы, индексы, функции и т.д., также вставьте основные справочники: https://github.com/ShulV/Xmap/blob/main/sql/generate_DB.sql</li>
<li>Вставьте справочники для стран/регионов/городов: https://github.com/ShulV/Xmap/blob/main/sql/insert_cities_regions_countries.sql</li>
<li>Вставьте пользователя и некоторые реальные споты: https://github.com/ShulV/Xmap/blob/main/sql/additional_insert_scripts.sql</li>
</ul>

### Как просмотреть модель базы данных:
Скачайте и откройте в специальных UML-инструментах: https://github.com/ShulV/Xmap/blob/main/uml/relation_model.csv
Разработчики должны держать эту модель в актуальном состоянии или добавлять в репо новые её версии, указывая в названии дату изменения.
<h3>👉 Как просмотреть модель базы данных:</h3>
<p>Скачайте и откройте в специальных UML-инструментах: https://github.com/ShulV/Xmap/blob/main/uml/relation_model.csv</p>
<p>Разработчики должны держать эту модель в актуальном состоянии или добавлять в репо новые её версии, указывая в названии дату изменения.</p>

### Как писать логи:
<h3>👉 Как писать логи:</h3>
<ul>
<li>Используйте snake_case для переменных</li>
<li>Записывайте переменные в квадратных скобках ('[', ']')</li>
Expand All @@ -28,31 +33,49 @@ http://localhost:8080/swagger-ui/index.html
logger.atInfo().log("Информация об изображении создана: [image_info_id = '{}']", imageInfo.getId());
```

### Код стайл:
Максимальное количество символов в строке - 130. По дефолту IntelliJ IDEA устанавливает ограничительную линию на 120 (перенастроить).
<h3>👉 Код стайл:</h3>
<p>Максимальное количество символов в строке - 130. По дефолту IntelliJ IDEA устанавливает ограничительную линию на 120 (перенастроить).</p>

<h4>Как называть ключи JSON:</h4>
<p>(snake_case)</p>

#### Как называть ключи JSON:
(snake_case)
```javascript
"some_key_name" : "value"
```
P.S. Многие библиотеки JSON (в Spring Framework), такие как Jackson, поддерживают формат camelCase из коробки.

Но было решено, что snake_case более удобен для чтения.
<p>Многие библиотеки JSON (в Spring Framework), такие как Jackson, поддерживают формат camelCase из коробки.</p>
<p>Но было решено, что snake_case более удобен для чтения.</p>

<h4>Как называть ключи в структурах данных например в HashMap ("key_name", "value"):</h4>
<p>snake_case</p>

```java
Map<String, String>; someMap = new HashMap<>();
someMap.put("key_name_in_snake_case", "value");
```

<h4>Как называть пути роутов (эндпоинтов):</h4>
<p>kebab-case</p>

```java
@RequestMapping("/api/v1/image-service") //для всего контроллера

@PostMapping("/spot-image/{id}") //для метода
```

### Размеры методов и классов:
<h4>Размеры методов и классов:</h4>
<p>Максимальная длина методов - 100 строк. Максимальная длина класса - 1000 строк.</p>
<p>Если размер метода или класса превышает эти значения, новая бизнес-логика может быть добавлена только в виде вызовов методов других функций.</p>
<p>Но лучше внимательно рефакторить!</p>

### Структура пакетов:
Когда появляется более одного контроллера, сервиса, репозитория, модели, DTO и т.д., мы объединяем их в один пакет.
<h4>Структура пакетов:</h4>
<p>Когда появляется более одного контроллера, сервиса, репозитория, модели, DTO и т.д., мы объединяем их в один пакет.</p>

### Внедрение зависимостей с использованием Lombok:
Используйте @RequiredArgsConstructor и только его. 1 конструктор для внедрения зависимостей (без аннотации @Autowired).
Lombok сгенерирует конструктор, который принимает все необходимые зависимости, помеченные из переменных final или @NonNull.
<h3>👉 Внедрение зависимостей с использованием Lombok:</h3>
<p>Используйте @RequiredArgsConstructor и только его. 1 конструктор для внедрения зависимостей (без аннотации @Autowired).</p>
<p>Lombok сгенерирует конструктор, который принимает все необходимые зависимости, помеченные из переменных final или @NonNull.</p>

## :question: Некторые пока что нерешенные проблемы приложения:
<h2>❓ Некоторые пока что нерешенные проблемы приложения:</h2>
<ul>
<li>Проблема Hibernate N+1</li>
</ul>

0 comments on commit 21ebd99

Please sign in to comment.