java update
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-10-20 20:19:00 +03:00
parent ab46572c61
commit 83f1e16f77
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
17 changed files with 366 additions and 35 deletions

View File

@ -0,0 +1,26 @@
---
tags:
- maturity/🌱
date:
- - 2024-01-10
zero-link: []
parents:
---
```shell
openssl s_client -showcerts -connect www.example.com:443
```
Эта команда выведет сертификат в консоль. Далее нужно скопировать все, что между `-----BEGIN CERTIFICATE-----` и `-----END CERTIFICATE-----` включая эти строки.
Скопированные данные вставить в текстовый документ и сохранить с расширением `*.cer`.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Криптография|00 Криптография]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**:: [[2024-01-10]]
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -3,42 +3,45 @@ aliases:
tags: tags:
- maturity/🌱 - maturity/🌱
date: 2024-10-19 date: 2024-10-19
zero-link:
parents:
linked:
--- ---
**Code block (блок кода)**. Это фрагмент программы, заключенный между фигурными скобками `{}`. Он может быть частью метода, цикла, условия или других конструкций. В блоке кода содержатся операторы (statements), которые выполняются в порядке их написания. #### Code block (блок кода)
Это фрагмент программы, заключенный между фигурными скобками `{}`. Он может быть частью метода, цикла, условия или других конструкций. В блоке кода содержатся операторы (statements), которые выполняются в порядке их написания.
![[../../meta/files/images/Pasted image 20241019092032.png]] ![[../../meta/files/images/Pasted image 20241019092032.png]]
#### Statement (оператор, предложение, инструкция)
**Statement (оператор, предложение, инструкция)**. Выполняет какое-то действие, но не возвращает значения. Оператор заканчивается точкой с запятой `;`, однако сам символ `;` не является частью выражения (expression). Выполняет какое-то действие, но не возвращает значения. Оператор заканчивается точкой с запятой `;`, однако сам символ `;` не является частью выражения (expression).
![[../../meta/files/images/Pasted image 20241019092300.png]] ![[../../meta/files/images/Pasted image 20241019092300.png]]
#### Expression (выражение)
**Expression (выражение)** Выражение — это часть кода, которая вычисляет **значение**. Оно может включать переменные, константы, операторы и вызовы методов.
Выражение — это часть кода, которая вычисляет значение. Оно может включать переменные, константы, операторы и вызовы методов.
Выражение может быть использовано как часть оператора или в других контекстах, например, внутри условий. Выражение может быть использовано как часть оператора или в других контекстах, например, внутри условий.
#### Значение
Это результат вычисления выражения (исключая выражения с типом `void`). Значения могут быть сохранены в переменные, переданы в методы в качестве **аргументов**, а также приняты методами в виде **параметров**. При передаче значения в метод оно копируется - [[Передача значений в метод в Java]].
**Имя метода**. Имя метода идентифицирует конкретную функцию или действие, которое выполняет метод. Важно отметить, что само значение **нельзя изменить**, однако переменной, которая хранит это значение, можно присвоить новое значение.
#### Имя метода
**Аргументы метода.** В Java метод всегда имеет список аргументов, даже если они отсутствуют. В таком случае используются пустые скобки `()`. Имя метода идентифицирует конкретную функцию или действие, которое выполняет метод.
#### Аргументы метода
В Java метод всегда имеет список аргументов, даже если они отсутствуют. В таком случае используются пустые скобки `()`.
![[../../meta/files/images/Pasted image 20241019093016.png]] ![[../../meta/files/images/Pasted image 20241019093016.png]]
#### Параметры метода
**Параметры метода.** Параметры метода — это переменные, указанные в скобках при его объявлении. Эти параметры получают значения при вызове метода. Параметры метода — это переменные, указанные в скобках при его объявлении. Эти параметры получают значения при вызове метода.
Есть есть для того, кто вызывает метод передаваемые значения называются аргументами, а уже в самом методе аргументы называются параметрами. Есть есть для того, кто вызывает метод передаваемые значения называются аргументами, а уже в самом методе аргументы называются параметрами.
#### Сигнатура метода
**Сигнатура метода.** Сигнатура метода включает его имя и список аргументов, но не возвращаемый тип. Это ключевой элемент для различения методов с одинаковыми именами, но разными параметрами. Сигнатура метода включает его имя и список аргументов, но не возвращаемый тип. Это ключевой элемент для различения методов с одинаковыми именами, но разными параметрами.
#### Квалификатор
**Квалификатор.** Это часть выражения слева от точки, указывающая на объект или класс, через который вызывается метод или поле. Квалификатор может быть необязательным и иногда отсутствовать. Это часть выражения слева от точки, указывающая на объект или класс, через который вызывается метод или поле. Квалификатор может быть необязательным и иногда отсутствовать.
![[../../meta/files/images/Pasted image 20241019092501.png]] ![[../../meta/files/images/Pasted image 20241019092501.png]]
Например, в выражении `System.out.println()` квалификатором для метода `println` является `out`, а для `out``System`. Например, в выражении `System.out.println()` квалификатором для метода `println` является `out`, а для `out``System`.
#### Переменная
**Declaration (объявление)**. Это процесс создания переменной, метода или другой сущности в программе с указанием её типа и имени. При объявлении переменной указывается её тип (например, `int`, `String`) и имя, но ей может не присваиваться значение сразу. это именованная область памяти, которая используется для хранения данных. Переменная может содержать различные типы данных, такие как числа, строки или объекты. Она позволяет программам запоминать значения и использовать их в дальнейшем.
#### Declaration (объявление)
Это процесс создания переменной, метода или другой сущности в программе с указанием её типа и имени. При объявлении переменной указывается её тип (например, `int`, `String`) и имя, но ей может не присваиваться значение сразу.
Объявление сообщает компилятору, что данная переменная или метод существует и будет использоваться в дальнейшем. Объявление может сопровождаться **инициализацией** — присвоением переменной значения при её создании. Объявление сообщает компилятору, что данная переменная или метод существует и будет использоваться в дальнейшем. Объявление может сопровождаться **инициализацией** — присвоением переменной значения при её создании.
@ -53,6 +56,10 @@ void myMethod() {
// тело метода // тело метода
} }
``` ```
#### Область видимости
это часть программы, в которой переменная доступна для использования. Переменные видимы и могут быть использованы только в пределах той области, где они были объявлены.
#### Локальная переменная
это переменная, объявленная внутри метода или блока кода. Она существует только в пределах этого метода или блока и недоступна за его пределами. После завершения работы метода или блока локальная переменная удаляется из памяти.
*** ***
## Мета информация ## Мета информация

36
dev/java/Куча.md Normal file
View File

@ -0,0 +1,36 @@
---
aliases:
- куче
- кучей
tags:
- maturity/🌱
date: 2024-10-19
zero-link:
parents:
linked:
---
Куча — это область памяти, используемая для динамического распределения во время выполнения программы. В отличие от стека, ==данные в куче могут существовать дольше, чем отдельные вызовы функций, а объёмы памяти, выделяемой в куче, обычно гораздо больше, чем в стеке.==
Куча идеально подходит для хранения данных, которые должны существовать дольше времени выполнения функции, или для работы с большими объёмами данных. Однако работа с кучей требует тщательного управления: ==если объекты не удаляются, когда они больше не нужны, это может привести к утечке памяти==, что, в свою очередь, может вызвать исчерпание доступной памяти.
Куча в Java — это область памяти, где создаются все объекты. Когда вы создаёте объект с помощью оператора `new`, он размещается в куче. Основное отличие стека и кучи в Java от их общего представления связано с автоматическим управлением памятью. В Java не нужно явно освобождать память в куче, так как этим занимается [[gc/Garbage Collector|сборщик мусора]].
Для наглядности представим стек и кучу. Серые объекты потеряли свою связь со стеком, и их нужно удалить, чтобы освободить память для новых объектов.
![[../../meta/files/images/Pasted image 20241019192034.png]]
> [!NOTE]
> Объекты могут содержать методы, а методы — локальные переменные. Эти локальные переменные хранятся в стеке потока, даже если сам объект, которому принадлежат методы, находится в куче.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**:: [[../../../../knowledge/dev/java/Устройство Java|Устройство Java]]
**Источник**::
**Создана**:: [[2024-10-19]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,48 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-10-19
---
Важно понимать, как происходит передача данных в методы. При передаче [[Примитивный тип|примитивных типов]] в метод, копируется **значение** переменной. Это значит, что ==любые изменения, которые вы делаете с переменной внутри метода, не влияют на оригинальную переменную.==
Однако, при передаче [[Ссылочный тип|ссылочных типов]] копируется значение ссылки на объект, а не сам объект. Это значит, что ==если изменить содержимое объекта через эту ссылку, изменения отразятся и на оригинальном объекте==.
Это часто становится причиной ошибок у новичков, поэтому представьте, что [[Примитивный тип|примитивные типы]] — это как копирование листа бумаги: вы даете кому-то копию, и он может писать на ней, но оригинал останется нетронутым. А [[Ссылочный тип|ссылочные типы]] — это как передача адреса на дом: если кто-то приедет по адресу и изменит что-то в доме, оригинальный дом изменится, даже если у каждого будет только этот “адрес”.
```java
public class Example {
public static void main(String[] args) {
int primitive = 5;
modifyPrimitive(primitive);
System.out.println("После изменения примитива: " + primitive); // Выведет 5
int[] reference = {1, 2, 3};
modifyReference(reference);
System.out.println("После изменения ссылочного типа: " + reference[0]); // Выведет 100
}
public static void modifyPrimitive(int number) {
number = 10; // Изменение копии примитива, оригинал не затронут
}
public static void modifyReference(int[] array) {
array[0] = 100; // Изменение объекта по ссылке, оригинальный массив изменится
}
}
```
- В примере с примитивным типом (int), значение переменной primitive не изменяется, потому что в метод передаётся копия значения.
- В примере с массивом (ссылочный тип), изменяется оригинальный объект, так как в метод передается ссылка на массив, и мы изменяем содержимое этого объекта через ссылку.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-19]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,28 @@
---
aliases:
- примитивных типов
- примитивные типы
tags:
- maturity/🌱
date: 2024-10-19
zero-link:
parents:
linked:
---
- Логические: boolean - true, false
- Целочисленные: byte, short, int, long - 42, -1
- Дробные: float, double - 3.141, NaN
- Символьные (UTF-16): CHAR
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-19]]
**Автор**::
### Дополнительные материалы
- [[Ссылочный тип|Ссылочный тип]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,32 @@
---
aliases:
- ссылочных типов
- ссылочные типы
tags:
- maturity/🌱
date: 2024-10-19
zero-link:
parents:
linked:
---
Ссылочные типы позволяют работать с пользовательскими типами данных, такими как объекты классов. Однако, важно понимать, что ==переменная ссылочного типа не хранит сами данные объекта. Вместо этого переменная хранит **ссылку** на объект==, который находится в области памяти, называемой [[Куча|кучей]] (heap).
Когда вы объявляете переменную ссылочного типа, например:
```java
MyClass obj = new MyClass();
```
Переменная `obj` ==не содержит сам объект класса `MyClass`, а лишь хранит адрес этого объекта в памяти==. То есть, в самой переменной хранится ссылка на объект, а не его данные. Все операции с такой переменной выполняются через эту ссылку.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-19]]
**Автор**::
### Дополнительные материалы
- [[Примитивный тип|Примитивный тип]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,34 @@
---
tags:
- maturity/🌱
date:
- - 2024-01-10
---
Первым делом необходимо [скачать сертификат сайта](../cryptography/Скачать%20сертификат%20сайта.md).
Теперь используя `keytool` добавим сертификат в JVM.
```shell
keytool -importcert -file cert_name.cer -keystore keystore_path -storepass "changeit" -noprompt -alias "alias_cert"
```
Где
- `cert_name.cer` - имя сертификата
- `keystore_path` - путь до хранилища сертификатов в JVM
- Пример: `jdk_path/lib/security/cacerts`
- `alias_cert` - алиас для сертификата
> [!WARNING]
> Возможно потребуется выход из системы, чтобы применились изменения.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Снипеты для Java|00 Снипеты для Java]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**:: [[2024-01-10]]
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,34 @@
---
aliases:
tags:
- maturity/🌱
- content/opinion
date: 2024-10-20
zero-link:
parents:
linked:
---
Использование var, введенное в [[../../../knowledge/dev/java/Java 10|Java 10]], может на первый взгляд показаться удобным инструментом для сокращения объема кода. Однако есть и проблемы:
Одним из основных недостатков использования `var` является то, что он скрывает тип переменной, что приводит к пониженной [[Читаемый код|читаемости кода]], особенно на этапе ревью. В коде, который разработчик может читать через несколько месяцев или передать другим коллегам, ==отсутствие явного типа затрудняет понимание происходящего==.
Например, следующий код не даёт никакой информации о том, что такое `result` и что возвращает метод `process()`.
```java
var result = process();
```
Это может привести к путанице, особенно если метод возвращает обобщённый тип или коллекцию. Без явного указания типов разработчикам придётся тратить дополнительное время на выяснение, что происходит.
***
## Мета информация
**Область**:: [[../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-20]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -0,0 +1,37 @@
---
aliases:
- читаемость кода
- читаемости кода
tags:
- maturity/🌱
- content/opinion
date: 2024-10-20
zero-link:
parents:
linked:
---
Код — это не только набор инструкций для машины, но и средство общения между разработчиками. Большую часть времени программисты проводят, читая чужой код, поэтому ==каждый фрагмент кода должен быть понятен не только автору, но и другим членам команды==. Удобство чтения и понимания кода коллегами — один из ключевых факторов успешной [[../productivity/Эффективная команда разработки|командной работы]]. Это требует от разработчиков внимательного подхода к написанию кода: важно писать не только для себя, но и для своих коллег.
Если ваш код понятен только вам и не может быть поддержан другими, это сигнал того, что вы недостаточно эффективный разработчик.
**Рекомендации**:
- **Пишите просто и ясно**. Используйте понятные и распространённые конструкции языка, которые легко читаются и понимаются коллегами.
- **Не усложняйте**. Не стремитесь использовать сложные или малоизвестные возможности языка, если они не приносят очевидной пользы. Простота всегда предпочтительнее.
- **Комментируйте важные моменты**. Там, где логика может быть неочевидной, добавьте комментарии, которые объясняют цель или обоснование ваших решений.
- **Следуйте соглашениям по стилю**. Соблюдайте единые стандарты кодирования, принятые в команде, будь то соглашения о стиле, именовании или форматировании.
- **Используйте осмысленные имена**. Переменные, функции и классы должны иметь названия, которые чётко отражают их назначение. Избегайте сокращений, если они могут быть непонятны другим.
- **Проводите регулярные ревью кода**. Обратная связь от коллег помогает выявить возможные сложности в понимании кода и улучшить его качество.
***
## Мета информация
**Область**:: [[../meta/zero/00 Разработка|00 Разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-20]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

View File

@ -0,0 +1 @@
a4349e620be07c2424843212bb5f573d

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

View File

@ -0,0 +1 @@
a4349e620be07c2424843212bb5f573d

View File

@ -8,6 +8,7 @@ title: Java разработка
В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения. В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения.
Основные узлы: Основные узлы:
- [Устройство Java](Устройство%20Java.md) - [Устройство Java](Устройство%20Java.md)
- [[../../dev/java/Многопоточность в Java|Многопоточность в Java]] - [[../../dev/java/Многопоточность в Java|Многопоточность в Java]]
- Системы сборки - Системы сборки
@ -20,6 +21,13 @@ title: Java разработка
- [Hibernate](00%20Hibernate.md) - [Hibernate](00%20Hibernate.md)
- [[../../../../knowledge/dev/java/other/Jackson|Jackson]] - [[../../../../knowledge/dev/java/other/Jackson|Jackson]]
- [Снипеты для Java](00%20Снипеты%20для%20Java.md) - [Снипеты для Java](00%20Снипеты%20для%20Java.md)
Обучение:
- [[../../dev/java/Голосарий Java|Голосарий Java]]
- Типы
- [[../../dev/java/Примитивный тип|Примитивный тип]]
- [[../../dev/java/Ссылочный тип|Ссылочный тип]]
- [[../../dev/java/Передача значений в метод в Java|Передача значений в метод в Java]]
## Версии Java ## Версии Java
- [[Java 1]] - [[Java 1]]
- [Java 7](Java%207.md) - [Java 7](Java%207.md)
@ -50,7 +58,7 @@ title: Java разработка
- [Не используйте @Data](../../dev/java/Не%20используйте%20@Data.md) - [Не используйте @Data](../../dev/java/Не%20используйте%20@Data.md)
- [Возвращайте пустую коллекцию вместо null](../../dev/java/Возвращайте%20пустую%20коллекцию%20вместо%20null.md) - [Возвращайте пустую коллекцию вместо null](../../dev/java/Возвращайте%20пустую%20коллекцию%20вместо%20null.md)
- [[../../dev/java/Границы применимости Tuple и Pair в разработке|Границы применимости Tuple и Pair в разработке]] - [[../../dev/java/Границы применимости Tuple и Pair в разработке|Границы применимости Tuple и Pair в разработке]]
- [[../../dev/Не используйте var в Java|Не используйте var в Java]]
## Дополнительно ## Дополнительно
- [Нативные сборки в Java](../../dev/java/Нативные%20сборки%20в%20Java.md) - [Нативные сборки в Java](../../dev/java/Нативные%20сборки%20в%20Java.md)

View File

@ -6,17 +6,24 @@ zero-link:
aliases: aliases:
- Скрипты на Java - Скрипты на Java
--- ---
- [Парсинг URL c помощью регулярки](../../dev/snippet/Парсинг%20URL%20c%20помощью%20регулярки.md) <!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
- [Сериализация и Десериализация даты в Jackson](../../dev/snippet/Сериализация%20и%20Десериализация%20даты%20в%20Jackson.md) <!-- SerializedQuery: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
- [Создание linux сервиса для Java приложения](../../dev/snippet/Создание%20linux%20сервиса%20для%20Java%20приложения.md) - [[Реализация GZIP в Java]]
- [Игнорирование ошибок сертификата OkHttp3](../../dev/snippet/Игнорирование%20ошибок%20сертификата%20OkHttp3.md) - [[MD5]]
- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md) - [[SHA-256]]
- [Несколько подключений к базе H2](../../dev/snippet/Несколько%20подключений%20к%20базе%20H2.md) - [[Логирование SQL в Hibernate]]
- [Дебаг приложения на этапе компиляции IntelliJ IDEA](../../dev/snippet/Дебаг%20приложения%20на%20этапе%20компиляции%20IntelliJ%20IDEA.md) - [[StartupEvent в Quarkus]]
- [Логирование SQL в Hibernate](../../dev/java/hibernate/Логирование%20SQL%20в%20Hibernate.md) - [[Бинарный поиск на Java]]
- [Бинарный поиск на Java](../../dev/java/Бинарный%20поиск%20на%20Java.md) - [[Mock конфигурация Oauth2 для SpringBoot]]
- [[../../dev/snippet/Проблема с Hibernate Reactive в Telegram SDK для Java|Проблема с Hibernate Reactive в Telegram SDK для Java]] - [[Дебаг приложения на этапе компиляции IntelliJ IDEA]]
- [[../../dev/snippet/Реализация SHA-256 на Java|Реализация SHA-256 на Java]] - [[Игнорирование ошибок сертификата OkHttp3]]
- [[../../../../_inbox/Реализация GZIP в Java|Реализация GZIP в Java]] - [[Несколько подключений к базе H2]]
- [[../../dev/snippet/Реализация Base64 на Java|Реализация Base64 на Java]] - [[Парсинг URL c помощью регулярки]]
- [[../../dev/snippet/Преобразование Json из коллекции в Java объект при помощи Jackson|Преобразование Json из коллекции в Java объект при помощи Jackson]] - [[Преобразование Json из коллекции в Java объект при помощи Jackson]]
- [[Проблема с Hibernate Reactive в Telegram SDK для Java]]
- [[Реализация Base64 на Java]]
- [[Реализация SHA-256 на Java]]
- [[Сериализация и Десериализация даты в Jackson]]
- [[Создание linux сервиса для Java приложения]]
- [[Добавление сертификата в JVM]]
<!-- SerializedQuery END -->

View File

@ -0,0 +1,32 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-10-20
zero-link:
parents:
linked:
---
В программной разработке часто упускается из виду один важный аспект: это командная работа. Написание кода — не просто индивидуальная деятельность, а коллективный процесс, требующий эффективного взаимодействия между всеми членами команды. В больших проектах успех невозможен, если каждый действует исключительно самостоятельно, не оглядываясь на коллег.
Вот несколько ключевых принципов, которые помогут разработчикам осознать важность командного подхода и находить баланс между личной эффективностью и потребностями команды.
## Совместная работа
Результат работы — это общая ответственность. В одиночку создать успешный продукт сложно, так как успех зависит от слаженности всех элементов системы. Каждый участник команды должен осознавать, что его работа — это не просто код, а часть общей задачи. ==Успех проекта напрямую зависит от качества взаимодействия, координации и взаимопонимания между участниками.==
## Читаемость кода
- [[../dev/Читаемый код|Читаемый код]]
## Время на взаимодействие — залог успеха
Часто можно встретить мнение, что разработчики должны тратить 100% своего времени на написание кода. Однако успех больших проектов зависит от многих аспектов: ревью кода, обсуждения архитектурных решений, согласование подходов и документация. Эти процессы являются неотъемлемой частью командной работы и требуют выделения времени. Умение разработчика эффективно коммуницировать и обсуждать решения с коллегами столь же важно, как и умение писать код.
***
## Мета информация
**Область**:: [[../meta/zero/00 Командная продуктивность|00 Командная продуктивность]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-10-20]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->