diff --git a/dev/cryptography/Скачать сертификат сайта.md b/dev/cryptography/Скачать сертификат сайта.md new file mode 100644 index 00000000..277cf759 --- /dev/null +++ b/dev/cryptography/Скачать сертификат сайта.md @@ -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]] +### Дополнительные материалы +- +### Дочерние заметки + diff --git a/dev/java/Голосарий Java.md b/dev/java/Голосарий Java.md index 06088b63..c8371b30 100644 --- a/dev/java/Голосарий Java.md +++ b/dev/java/Голосарий Java.md @@ -3,42 +3,45 @@ aliases: tags: - maturity/🌱 date: 2024-10-19 -zero-link: -parents: -linked: --- -**Code block (блок кода)**. Это фрагмент программы, заключенный между фигурными скобками `{}`. Он может быть частью метода, цикла, условия или других конструкций. В блоке кода содержатся операторы (statements), которые выполняются в порядке их написания. +#### Code block (блок кода) +Это фрагмент программы, заключенный между фигурными скобками `{}`. Он может быть частью метода, цикла, условия или других конструкций. В блоке кода содержатся операторы (statements), которые выполняются в порядке их написания. ![[../../meta/files/images/Pasted image 20241019092032.png]] - -**Statement (оператор, предложение, инструкция)**. Выполняет какое-то действие, но не возвращает значения. Оператор заканчивается точкой с запятой `;`, однако сам символ `;` не является частью выражения (expression). +#### Statement (оператор, предложение, инструкция) +Выполняет какое-то действие, но не возвращает значения. Оператор заканчивается точкой с запятой `;`, однако сам символ `;` не является частью выражения (expression). ![[../../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 20241019092501.png]] Например, в выражении `System.out.println()` квалификатором для метода `println` является `out`, а для `out` — `System`. - -**Declaration (объявление)**. Это процесс создания переменной, метода или другой сущности в программе с указанием её типа и имени. При объявлении переменной указывается её тип (например, `int`, `String`) и имя, но ей может не присваиваться значение сразу. +#### Переменная +это именованная область памяти, которая используется для хранения данных. Переменная может содержать различные типы данных, такие как числа, строки или объекты. Она позволяет программам запоминать значения и использовать их в дальнейшем. +#### Declaration (объявление) +Это процесс создания переменной, метода или другой сущности в программе с указанием её типа и имени. При объявлении переменной указывается её тип (например, `int`, `String`) и имя, но ей может не присваиваться значение сразу. Объявление сообщает компилятору, что данная переменная или метод существует и будет использоваться в дальнейшем. Объявление может сопровождаться **инициализацией** — присвоением переменной значения при её создании. @@ -53,6 +56,10 @@ void myMethod() { // тело метода } ``` +#### Область видимости +это часть программы, в которой переменная доступна для использования. Переменные видимы и могут быть использованы только в пределах той области, где они были объявлены. +#### Локальная переменная +это переменная, объявленная внутри метода или блока кода. Она существует только в пределах этого метода или блока и недоступна за его пределами. После завершения работы метода или блока локальная переменная удаляется из памяти. *** ## Мета информация diff --git a/dev/java/Куча.md b/dev/java/Куча.md new file mode 100644 index 00000000..53e519bf --- /dev/null +++ b/dev/java/Куча.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + + diff --git a/dev/java/Передача значений в метод в Java.md b/dev/java/Передача значений в метод в Java.md new file mode 100644 index 00000000..c3f8079f --- /dev/null +++ b/dev/java/Передача значений в метод в Java.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + + diff --git a/dev/java/Примитивный тип.md b/dev/java/Примитивный тип.md new file mode 100644 index 00000000..aaed29dc --- /dev/null +++ b/dev/java/Примитивный тип.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- [[Ссылочный тип|Ссылочный тип]] + +### Дочерние заметки + + diff --git a/dev/java/Ссылочный тип.md b/dev/java/Ссылочный тип.md new file mode 100644 index 00000000..551a0a1f --- /dev/null +++ b/dev/java/Ссылочный тип.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- [[Примитивный тип|Примитивный тип]] + +### Дочерние заметки + + diff --git a/dev/snippet/Добавление сертификата в JVM.md b/dev/snippet/Добавление сертификата в JVM.md new file mode 100644 index 00000000..507f70b4 --- /dev/null +++ b/dev/snippet/Добавление сертификата в JVM.md @@ -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]] +### Дополнительные материалы +- +### Дочерние заметки + diff --git a/dev/Не используйте var в Java.md b/dev/Не используйте var в Java.md new file mode 100644 index 00000000..68dfaf7a --- /dev/null +++ b/dev/Не используйте var в Java.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + + diff --git a/dev/Читаемый код.md b/dev/Читаемый код.md new file mode 100644 index 00000000..f851a846 --- /dev/null +++ b/dev/Читаемый код.md @@ -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]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + + diff --git a/meta/files/images/Pasted image 20241019192034.png b/meta/files/images/Pasted image 20241019192034.png new file mode 100644 index 00000000..6dddc201 Binary files /dev/null and b/meta/files/images/Pasted image 20241019192034.png differ diff --git a/meta/files/images/comp/Pasted image 20241019192034.png b/meta/files/images/comp/Pasted image 20241019192034.png new file mode 100644 index 00000000..625b2096 Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241019192034.png differ diff --git a/meta/files/images/comp/Pasted image 20241019192034.png.md5 b/meta/files/images/comp/Pasted image 20241019192034.png.md5 new file mode 100644 index 00000000..3f71b689 --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241019192034.png.md5 @@ -0,0 +1 @@ +a4349e620be07c2424843212bb5f573d diff --git a/meta/files/images/webp/Pasted image 20241019192034.webp b/meta/files/images/webp/Pasted image 20241019192034.webp new file mode 100644 index 00000000..a63ab53c Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241019192034.webp differ diff --git a/meta/files/images/webp/Pasted image 20241019192034.webp.md5 b/meta/files/images/webp/Pasted image 20241019192034.webp.md5 new file mode 100644 index 00000000..3f71b689 --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241019192034.webp.md5 @@ -0,0 +1 @@ +a4349e620be07c2424843212bb5f573d diff --git a/meta/zero/00 Java разработка.md b/meta/zero/00 Java разработка.md index 505d9798..65159dc0 100644 --- a/meta/zero/00 Java разработка.md +++ b/meta/zero/00 Java разработка.md @@ -8,6 +8,7 @@ title: Java разработка В коммуникациях и обучении всегда важно устранить или уменьшить [[../../../../_inbox/Семантический разрыв|семантический разрыв]] между людьми, поэтому рекомендую переодически обращаться к [[../../dev/java/Голосарий Java|голосарию Java]], чтобы использовать одни и те же термины и определения. Основные узлы: + - [Устройство Java](Устройство%20Java.md) - [[../../dev/java/Многопоточность в Java|Многопоточность в Java]] - Системы сборки @@ -20,6 +21,13 @@ title: Java разработка - [Hibernate](00%20Hibernate.md) - [[../../../../knowledge/dev/java/other/Jackson|Jackson]] - [Снипеты для Java](00%20Снипеты%20для%20Java.md) + +Обучение: +- [[../../dev/java/Голосарий Java|Голосарий Java]] +- Типы + - [[../../dev/java/Примитивный тип|Примитивный тип]] + - [[../../dev/java/Ссылочный тип|Ссылочный тип]] +- [[../../dev/java/Передача значений в метод в Java|Передача значений в метод в Java]] ## Версии Java - [[Java 1]] - [Java 7](Java%207.md) @@ -50,7 +58,7 @@ title: Java разработка - [Не используйте @Data](../../dev/java/Не%20используйте%20@Data.md) - [Возвращайте пустую коллекцию вместо null](../../dev/java/Возвращайте%20пустую%20коллекцию%20вместо%20null.md) - [[../../dev/java/Границы применимости Tuple и Pair в разработке|Границы применимости Tuple и Pair в разработке]] - +- [[../../dev/Не используйте var в Java|Не используйте var в Java]] ## Дополнительно - [Нативные сборки в Java](../../dev/java/Нативные%20сборки%20в%20Java.md) diff --git a/meta/zero/00 Снипеты для Java.md b/meta/zero/00 Снипеты для Java.md index 89c898d5..3fe668ea 100644 --- a/meta/zero/00 Снипеты для Java.md +++ b/meta/zero/00 Снипеты для Java.md @@ -6,17 +6,24 @@ zero-link: aliases: - Скрипты на Java --- -- [Парсинг URL c помощью регулярки](../../dev/snippet/Парсинг%20URL%20c%20помощью%20регулярки.md) -- [Сериализация и Десериализация даты в Jackson](../../dev/snippet/Сериализация%20и%20Десериализация%20даты%20в%20Jackson.md) -- [Создание linux сервиса для Java приложения](../../dev/snippet/Создание%20linux%20сервиса%20для%20Java%20приложения.md) -- [Игнорирование ошибок сертификата OkHttp3](../../dev/snippet/Игнорирование%20ошибок%20сертификата%20OkHttp3.md) -- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md) -- [Несколько подключений к базе H2](../../dev/snippet/Несколько%20подключений%20к%20базе%20H2.md) -- [Дебаг приложения на этапе компиляции IntelliJ IDEA](../../dev/snippet/Дебаг%20приложения%20на%20этапе%20компиляции%20IntelliJ%20IDEA.md) -- [Логирование SQL в Hibernate](../../dev/java/hibernate/Логирование%20SQL%20в%20Hibernate.md) -- [Бинарный поиск на Java](../../dev/java/Бинарный%20поиск%20на%20Java.md) -- [[../../dev/snippet/Проблема с Hibernate Reactive в Telegram SDK для Java|Проблема с Hibernate Reactive в Telegram SDK для Java]] -- [[../../dev/snippet/Реализация SHA-256 на Java|Реализация SHA-256 на Java]] -- [[../../../../_inbox/Реализация GZIP в Java|Реализация GZIP в Java]] -- [[../../dev/snippet/Реализация Base64 на Java|Реализация Base64 на Java]] -- [[../../dev/snippet/Преобразование Json из коллекции в Java объект при помощи Jackson|Преобразование Json из коллекции в Java объект при помощи Jackson]] \ No newline at end of file + + +- [[Реализация GZIP в Java]] +- [[MD5]] +- [[SHA-256]] +- [[Логирование SQL в Hibernate]] +- [[StartupEvent в Quarkus]] +- [[Бинарный поиск на Java]] +- [[Mock конфигурация Oauth2 для SpringBoot]] +- [[Дебаг приложения на этапе компиляции IntelliJ IDEA]] +- [[Игнорирование ошибок сертификата OkHttp3]] +- [[Несколько подключений к базе H2]] +- [[Парсинг URL c помощью регулярки]] +- [[Преобразование Json из коллекции в Java объект при помощи Jackson]] +- [[Проблема с Hibernate Reactive в Telegram SDK для Java]] +- [[Реализация Base64 на Java]] +- [[Реализация SHA-256 на Java]] +- [[Сериализация и Десериализация даты в Jackson]] +- [[Создание linux сервиса для Java приложения]] +- [[Добавление сертификата в JVM]] + diff --git a/productivity/Эффективная команда разработки.md b/productivity/Эффективная команда разработки.md new file mode 100644 index 00000000..cfa3a399 --- /dev/null +++ b/productivity/Эффективная команда разработки.md @@ -0,0 +1,32 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-10-20 +zero-link: +parents: +linked: +--- +В программной разработке часто упускается из виду один важный аспект: это командная работа. Написание кода — не просто индивидуальная деятельность, а коллективный процесс, требующий эффективного взаимодействия между всеми членами команды. В больших проектах успех невозможен, если каждый действует исключительно самостоятельно, не оглядываясь на коллег. + +Вот несколько ключевых принципов, которые помогут разработчикам осознать важность командного подхода и находить баланс между личной эффективностью и потребностями команды. +## Совместная работа +Результат работы — это общая ответственность. В одиночку создать успешный продукт сложно, так как успех зависит от слаженности всех элементов системы. Каждый участник команды должен осознавать, что его работа — это не просто код, а часть общей задачи. ==Успех проекта напрямую зависит от качества взаимодействия, координации и взаимопонимания между участниками.== +## Читаемость кода +- [[../dev/Читаемый код|Читаемый код]] +## Время на взаимодействие — залог успеха +Часто можно встретить мнение, что разработчики должны тратить 100% своего времени на написание кода. Однако успех больших проектов зависит от многих аспектов: ревью кода, обсуждения архитектурных решений, согласование подходов и документация. Эти процессы являются неотъемлемой частью командной работы и требуют выделения времени. Умение разработчика эффективно коммуницировать и обсуждать решения с коллегами столь же важно, как и умение писать код. + +*** +## Мета информация +**Область**:: [[../meta/zero/00 Командная продуктивность|00 Командная продуктивность]] +**Родитель**:: +**Источник**:: +**Создана**:: [[2024-10-20]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + +