Макс из Софи – Telegram
Макс из Софи
9.96K subscribers
1.25K photos
55 videos
7 files
913 links
Автоматизировал поиск работы - https://sofi-assistant.com/landing/

Написать мне в лс: @maxim_primak

№ 4988474654
Download Telegram
Итоги первой код-ревью сессии. 🚀

🙏 Ребят, хотел бы поблагодарить всех, кто принял участие в нашей сессии.

Отдельное спасибо Rustam и Wterh, что первыми прислали свои коммиты на ревью. Также огромный респект тем, кто уделил свое время и оставил ребятам ревью на их код. Надеюсь, что это было полезно для всех.

В общей сложности около 20 человек оставили более 103 комментариев, просто анрил!

Лично я остался очень доволен тем, как все прошло. Думаю мы получили максимально возможное количества фидбэка.

✌️Вот список всех, кто оставил свои комментарии

Pingvi
nilBora
karabash22
inspierens
ObuhovToplyvoApp
R1KO
maxprimak
SnusnumrConceit
AndreyGel
AndreyZakhvatoshin
yakoffka
muyassarov
LeftTwixWand
andrew-demb
lis-dev
QoreCode
valeriy-bendatiy-toplyvo
Ckoetael
UshakovOleg

ℹ️ Чуть позже я выложу два поста с итогами и разбором комментариев по каждому из коммитов.

🔥 Накидайте, пожалуйста, свою реакцию ниже, чтобы я понимал, насколько вам зашел подобный формат, и в правильном ли направлении мы двигаемся!
👉 Коммит #1

💬 Основной посыл комментариев:

1. Валидация.
Иметь более полную и точную валидацию реквеста, чтобы избежать непредвиденных ошибок.

2. Использование встроенных функций Laravel.
RouteBinding, $request->validated(), protected $casts и $perPage в модели, return withSuccess() и тд.

3. Обработка ошибок.
Добавление кастомных Exceptions позволит точно понять юзеру, что именно пошло не так.

4. Локализация.
Использование Localization в Laravel позволит удобнее использовать и хранить переводы.

5. Стили.
Придерживаться одной стилистики написания кода (пробелы, отступы, и тд.).

6. Уменьшить объем коммитов.
1 Коммит = 1 фитча. Такой подход позволит быстрее релизить функции и упростит процесс code review.

7. Сервисы.
Добавление отдельных сервисов и вынесение некоторой логики из контроллеров.

🏆 Хотел бы выделить следующих ревьюеров:

1. nilBora - за комментарий набравший 7 👍
2. SnusnumrConceit - за очень информативные и подробные комментарии.
3. R1KO - за активность и количество комментариев.
👍1
👉 Коммит #2

💬 Основной посыл комментариев

1. Разделить код.
Большой метод сложен для понимания. Лучше разделить его на несколько небольших функций.

2. Точные параметры функции.
В функцию лучше передавать конкретные параметры, с которыми она взаимодествует.

3. Одна обязанность метода.
Каждый метод должен отвечать за одну конкретную функцию. Метод getLinks должен возвращать ссылки, а не искать их.

4. Точный результат работы метода.
Метод должен возвращать результат одного типа. Boolean/int/void и тд.

5. Код не должен повторяться.
Если один и тот же код встречается несколько раз, то значит его нужно выделить в отдельный метод.

6. Декларирование переменной.
Задавай переменные непосредственно перед их использованием, а не в начале метода.

7. Стиль и читаемость.
Понятные комментарии, там где они нужны. Точное название переменных и функций.

🏆 Хотел бы выделить следующих ревьюеров

1. lis-dev - за структурированные комментарии с ссылками.
2. QoreCode - за большой объем подробных комментариев с примерами.
Как часто стоит проводить код-ревью сессии?
Anonymous Poll
36%
Два раза в неделю
55%
Раз в неделю
7%
Два раза в месяц
3%
Раз в месяц
Были ли комментарии от ревьюеров вам полезны?
Anonymous Poll
59%
Да
10%
Нет
32%
Я их не видел
Крутые новости! 🔥

📊 Мы вводим свою рейтиноговую систему.

Ревьюеры теперь смогут видеть свой рейтинг и свое место в общем списке. В таблицу ревьюеры будут попадать автоматически после того, как оставят свой первый комментарий.

🧮 Как будет считаться рейтинг?

Рейтинг = кол-во сессий + кол-во коммитов + кол-во комментариев + кол-во лайков - кол-во дизлайков + (отмечен админов x 5).

Таким образом, если вы приняли участие в 2 сессиях, оставили ревью на 5 коммитов, написали 12 комментариев, получили 25 лайков и 3 дизлайка и были выделены 2 раза админом канала, то ваш рейтинг будет равен 51.

2 + 5 + 12 + 25 - 3 + (2 x 5) = 51

🏆 Что дает рейтинг?

Мы сделаем общий призовой фонд, в который я раз в месяц буду закидывать 25$, и каждый из вас сможет также пополнять этот фонд в течение месяца. В конце месяца ревьюер, занявший первое место в ежемесячном рейтинге, заберет призовой фонд.

Ежемесячный рейтинг будет обнуляться в начале каждого месяца.

Чем выше будет ежемесячный фонд, тем лучше будет качество ревью.
Мы ищем код на ревью!💡

Друзья, теперь у вас появилась отличная возможность анонимно прислать свой код на ревью.

Мы добавили специальную форму, на которой вы можете оставлять свои заявки на ревью кода. В форме вы можете выбрать один из двух способов отправки репозитория на ревью:

1. Публично 🧑- мы выкладываем ссылку на коммит вашего репозитория на гитхабе. Все участники ревью сессии смогут видеть автора кода.

2. Анонимно 🦸‍♂️ - мы выкладываем ваш код с акканута CodeReview на гитхабе. Участники не смогут увидеть автора этого кода.

Для следующей код-ревью сессии мы выберем несколько языков, чтобы всем было интересно!

Присылайте все, что есть! 🕺
Плохие новости! 😔

❗️Около 500 человек уже увидело последний пост, через который каждый может оставить заявку на ревью кода. Проблема в том, что из этих 500 человек, свой код прислало лишь 2 разработчика. Это около 0.4% от всех, кто увидел этот пост. Это даже меньше, чем на первую ревью сессию, несмотря на то, что мы добавили возможность анонимно прислать свой код, а также увидели, что первая код-ревью сессия показала себя с хорошой стороны.

👉 Ситуация, мягко говоря, не радужная, и чтобы у нас была возможность как-то на это повлиять, нам нужно точно понять, почему люди не присылают свои коммиты.

⬇️ Внизу вы найдете опросник, который поможет нам понять точную картину, из-за чего у нас так мало коммитов. Если вы ревьюер, который хочет помогать другим, то выберете «Мне не нужен фидбэк, я хочу ревьюить.», а если же вы хотите получить фидбэк, но еще ничего не прислали, то укажите почему.
Код-ревью сессия #2🧑‍💻

А вот и вторая ревью сессия подлетела!

👉 Пулл-реквест #1
#python

Откроет нашу сессию пулл-реквест на Python от saintbyte. Простая тулза для сбора вакансий из RSS ленты хабр карьеры.

👉 Коммит #2
#typenoscript #angular

Коммит прислал нам mbogomazov. Он написал игру «крестики-нолики» на Angular.

👉 Пулл-реквест #3
#java

TimurBaldin прислал нам целый пулл-реквест на Java. Проект для генерации тестовых данных для ручного и автоматизированного тестирования.

👉 Коммит #4
#php

И последний небольшой коммит от andreaskosten на PHP. Класс DB реализует посредством гарантированно единственного экземпляра подключение к БД mysql через юзера с указанным набором привилегий.

Все вопросы по ходу сессии можете задавать в нашем чате.

У нас есть 72 часа, погнали!

#код_ревью_сессия
❗️Напоминаю, что ревью сессия в самом разгаре.

👨‍💻В коммите на PHP вы уже вряд ли найдете местечко, но вот на других коммитах еще очень много пространства для творчества. Товарищи питонисты, джависты и фронтендеры, накидайте свой фидбэк на коммиты в предыдущем посте, а также не забудьте поставить 👍 под полезными комментариями.

📊 А в субботу вечером мы подведем результаты сессии, сделаем краткую выжимку, а также обновим нашу таблицу топ-ревьюеров.

#код_ревью_сессия
Итоги сессии #2

Прошло 72 часа с начала второй код-ревью сессии, и можно подвести итоги.

👍 Я вижу, как пополняется наш состав ревьюеров - это не может не радовать! Но еще приятнее - видеть позитивные отзывы людей, которые присылают нам свои коммиты. Это значит, что фидбэк, который вы им даете, имеет для них большое значение!

🪚 Это только начало, и нам еще многое предстоит сделать.

Если говорить о недочетах, сейчас у нас образовалось большое PHP комьюнити, которому уже явно не хватает свободного места на одном коммите. Это значит, что на следующую ревью сессию мы возьмем как минимум два коммита на PHP.

Второй момент - соотношение PHP ревьюеров с ревьюерами на других языках. Нам явно стоит поработать над расширением Python, Java, и фронтенд комьюнити. Этим я и займусь на следующей неделе.

Таблица топ-ревьюеров уже обновлена, а завтра я выложу небольшую выжимку по коммитам.

💙 Надеюсь, что вторая сессия понравилась вам не меньше первой, и от себя хочу поблагодарить всех, кто принимает в этом участие!
💬 Основной посыл комментариев

👉 пулл-реквест #1
#python

1. Стукрута проекта
Лучше всего создать папку src, разбить логику по моделям, и сервисам и вынести все из корневой папки.

2. Доработать модели
Вынести BaseModel в отдельный файл. В Vacancy добавить employment type с EnumField.

3. Нейминг
Избавиться от Helpers, чтобы поднять читаемость кода.

👉 коммит #2
#typenoscript #angular

1. Задать точный тип возврата функции
Функция calculateWinner вернет X | O | null.

2. Избегать повторяемость кода
X и O используется в нескольких местах. Лучше вынести в качестве констант.

3. Неявное приведение объекта к boolean
Вместо проверки if(Winner) => isWinnerExists, и вместо this.squares[idx] => используй includes.

4. Избегать логических ошибок
makeMove будет вызывать calculateWinner, даже если ничего не изменилось.

🏆 Хотел бы выделить следующих ревьюеров

fallncrlss - за информативный и структурированный комментарий для python.
QoreCode - за большой объем полезных комментариев для TypeScript
💬 Основной посыл комментариев

👉 пулл-реквест #3
#java

1. Отдавать предпочтение примитивным типам данных
Если нам не требются свойства или методы таких класов как Boolean или, например, Integer, вместо них имеет смысл использовать примитивные типы данных boolean и int.

2. Использовать Lombok
Эта библиотека содержит много аннотаций, которые упростят написание конструкторов, геттеров, сеттеров (и не только их).

3. Не забывать о проверках на null
NullPointerException - распространенная ошибка. Следует написать проверки на получение данных из DB и проверять полученные значения на null.

4. Обращать внимание на нейминг
Такие названия классов как Start, AppException или BaseResponse не совсем раскрывают свою суть. Следует подумать над более удачными альтернативами.

🏆 Автор кода выделил следующих ревьюеров

1. driversti
2. lixach93
💬 Основной посыл комментариев

👉 коммит #4
#php

1. Использование getter и setter
$pdo изменить с public на private или protected, и работать с ним в других классах только через getter и setter.

2. Типизация параметров
Использовать типизацию везде, где это возможно.

3. Строгое сравнение
Старайтесь придерживаться строго сравнения ===.

4. Использование встроенных функций
Например вместо !isset лучше использовать метод empty.

5. Использование отдельного файла для настроек
Не надо хардокдить настройки подключения к DB в функции. Лучше вынести все параметры в отдельный env файл.

6. Проверка уровня доступа
Вместо строк SIUD лучше использовать числовые значения. И вместо if используйте elseif или switch.

🏆 Автор кода выделил следующих ревьюеров

1. SnusnumrConceit
2. R1KO
3. lis-dev