Monee
Daniil LashinКогда я первый раз читал контр-обзор кода Monee от @borodutch мне показалось, что автор чем-то очень сильно обижен. Может так, а может просто его подвел непрофессиональный однобокий взгляд. Как бы то ни было - перейдем к обзору.
TLTR
Автор "контр-обзора" даже не разбирается в стеке. Настолько, что не смог запустить элементарное Laravel приложение.
Весь "ужас" сводится к отсутствию комментариев в коде, Readme и другим подобным вещам.
Нет ни одного комментария по безопасности кода.
Но если у автора будут конкретные предложения, а не бурлящее желание как можно сильнее обосрать проект - милости просим делать пулл реквесты.
"Ну-ну, PHP в 2017 году."
Я не буду спрашивать автора почему он не в курсе прогресса языка за последние несколько лет.
Я не буду спрашивать почему он не в курсе, что на связке PHP+Laravel можно запустить любой продукт в несколько раз быстрее, чем на любом другом языке.
Я не буду спрашивать почему он не в курсе, что контрибьютеров на эту связку найти гораздо проще, чем на любую другую.
Я лишь скажу одно: пора вылезти из своей уютной норки и глянуть на мир. Там произошло много всего интересного.
Однако, я был бы рад конструктивным комментариям. А именно - что можно было бы сделать проще, безопаснее и главное - удобнее для пользователей на другом языке программирования.
Beautifier'ы
Я даже не буду брать денег за урок, но приложу ссылку на стандарты кода:
Код был неоднократно реформатирован средствами IDE. Где там автор нашел неформатированный код - 🤷♂️
Общий contribution и ветки git
Главная цель того, что мы выложили код - поиск уязвимостей сообществом. Мы никак не сможем доказать, что на серверах крутится именно этот код, но нам это и не нужно. Для особых параноиков мы сделали вторую версию бота: @Monee_bot.
Проект разрабатывался на закрытом репозитории в Bitbucket. Он несколько раз полностью менял свой функционал. После подготовки мы мигрировали репозиторий без истории коммитов, чтобы не портить общий вид проекта.
Файлы идентификации репозитория и Readme
???
Такое чувство, что мы выложили какой-то пакет для массового использования. Мы выложили код, чтобы сообщество смогло проверить его на уязвимость. И судя по идиотским комментариям вроде "А у вас тут комментария для метода нет!!1" – проверка идет успешно :)
Singleton и Gitignore
Если бы автор разбирался в теме он бы заметил, что эти строчки, как и все .gitignore в проекте – стандартная часть самого популярного фреймворка (на минуточку – более 33 тысяч звезд на github). Если автор хочет поспорить (и проиграть в споре) по поводу их необходимости - милости просим обращаться к главному разработчику: https://twitter.com/taylorotwell.
А до того как это делать советую освежить в памяти принципы работы PHP.
Модели данных
Судя по тому, что из моделей данных в репозитории только User — разработчик не умеет в хранение и передачу информации.
Я бы посмотрел и посмеялся, как автор разнес бы данные о пользователе: а именно его id в Telegram, имени и адреса Ethereum в разные модели. Мы делали максимально простой кошелек, а не долгострой.
Общая целостность кода
То, что код сейчас ни в каком виде запустить не получится, и то, что большинство файлов проекта пустые или содержат 1-2 функции
Мы планировали, что код будут смотреть те, кто хоть немного разбирается в стеке. Но спасибо за обзор.