Ответ
Процесс был формализован через GitHub Pull Requests (PR) и включал четкие этапы.
1. Подготовка PR (Автор):
- Маленький размер: PR охватывал одну задачу, идеально до 300-500 строк.
- Четкое описание: Что сделано, как тестировалось, ссылка на задачу.
- Визуализация: При необходимости — скриншоты или видео изменений.
- Назначение ревьюверов: Использование
@mentionдля 1-2 ключевых разработчиков.
2. Проведение ревью (Ревьювер):
- Срок: Старались проверить в течение 24 часов.
- Фокус на:
- Архитектура: Соответствие паттернам (MVVM, VIPER), отсутствие сильных связей.
- Качество кода: Следование SOLID, DRY, читаемость.
- Гайдлайны: Соблюдение Swift Style Guide команды.
- Безопасность: Возможные утечки памяти, race conditions, обработка ошибок.
- Тестируемость: Удобно ли покрыть код unit-тестами.
- Формат обратной связи: Конструктивные комментарии прямо в коде.
3. Пример комментария:
// Вместо императивного подхода:
var validItems: [Item] = []
for item in array {
if item.isValid {
validItems.append(item)
}
}
// Лучше использовать функциональный:
let validItems = array.filter { $0.isValid }
// Короче, выразительнее и избегает мутации переменной.
4. Культура общения:
- Критика кода, а не человека.
- Использование "мы" и вопросов ("Как думаешь, можно ли здесь применить...?").
- Обязательный апрув от минимум одного ревьювера перед мержем.
Такой процесс повышал качество кода, делился знаниями и поддерживал здоровую атмосферу.
Ответ 18+ 🔞
Да ты послушай, как у нас тут всё по-взрослому было, аж дух захватывает! Весь этот цирк с конями, простите, процесс, был заформализован через эти ваши GitHub Pull Requests, или попросту PR. И там, блядь, не просто так, а с чёткими этапами, как в хорошем спектакле.
1. Подготовка PR (Это когда автор, то есть ты, готовишься к выступлению):
- Размерчик поменьше: Один PR — одна задача, идеально, чтобы там до 300-500 строк кода было. Не надо, сука, вываливать овердохуища изменений, чтобы ревьювер с ума сошел, пытаясь понять, где тут баг, а где просто опечатка.
- Объясни, что ты натворил: Чётко распиши, что сделал, как тестировал, и дай ссылку на задачу. А то бывало, присылают — «пофиксил баг», и всё. Какой баг, мать твою? В рот меня чих-пых!
- Картинки для бестолковых: Если интерфейс менял — скриншоты или видео в студию! Чтобы не гадать, как эта кнопка теперь выглядит.
- Кого позвать на разбор полётов: Тыкай
@mentionна 1-2 ключевых разработчиков, которые в теме. Не всех подряд, а то опять пидары налетят, начнут умничать.
2. Проведение ревью (А вот тут ревьювер включает режим «въёбистого зануды»):
- Не тяни резину: Постарайся глянуть в течение 24 часов. Не будь мудаком, который две недели код в апруве держит.
- На что смотрим, ёпта:
- Архитектура: Соответствует ли нашим паттернам (MVVM там, VIPER)? Нет ли сильных связей, где один модуль за другого держится, как манда с ушами?
- Качество кода: SOLID, DRY или сплошной WET (We Enjoy Typing)? Код читаемый или похож на шифровку для своих?
- Гайдлайны: Следуем ли нашему внутреннему Swift Style Guide, или каждый пишет, как бог на душу положит?
- Безопасность: Нет ли утечек памяти, race conditions или обработки ошибок по принципу «авось пронесёт»?
- Тестируемость: Удобно ли этот код будет покрыть юнит-тестами, или он такой монолитный, что к нему и подступиться страшно?
3. Пример, как надо комментить (а не просто «фигня, переделывай»): Вот смотри, вместо того чтобы писать императивно, как в каменном веке:
var validItems: [Item] = []
for item in array {
if item.isValid {
validItems.append(item)
}
}
Лучше, блядь, использовать функциональный подход:
let validItems = array.filter { $0.isValid }
Короче, выразительнее, и не мутируешь переменную, как последний варвар. Вот так и учим друг друга, а не просто ебём мозг.
4. А самое главное — культура общения, ёбана!
- Критикуем код, а не человека. Не «ты — криворукий дебил», а «здесь, возможно, стоит переписать вот так».
- Используем «мы» и вопросы: «Как думаешь, можно ли здесь применить фильтр?» Звучит куда лучше, чем указующий перст.
- Обязательный апрув от минимум одного ревьювера перед мержем. Никакого самоуправства! Иначе потом разгребать пиздец, который ты в мастер залил.
Вот такой, блядь, процесс. Он и код делал качественнее, и знания по команде распространял, и атмосферу здоровую поддерживал. А то без него — одни распиздяйства, ей-богу.