Требуется Code Review

CoolKid

Новичок
Господа, есть вот такой класс https://gist.github.com/anonymous/b03b0aa8e23cd245cee9
Прошу провести код-ревью и проверить на соответствие PSR`ам (1 и 2)
Особенно интересуют переносы и пустые строки перед return в различных ситуациях и замыкания в качестве параметров.
ПСР`ы читал и не один раз, но все таки есть сомнения
 

CoolKid

Новичок
Я какбэ в курсе про эту замечательную утилиту.
Про осмысленность содержания я не спрашивал и в особенности тебя.

P.S. Вопрос к админам: а можно в интерфейс создания сообщения добавить галочку "Запретить Упырям и Вурдалакам комментировать топик"?
 

AnrDaemon

Продвинутый новичок
Выбери какой-то один способ расстановки скобок. Предпочтительно тот, при котором не приходится искать ответную скобку по всему тексту.
 

AnrDaemon

Продвинутый новичок
PHP:
    protected function instantiate($alias, $arguments = array())
    {
        if (Lib::chkArr($arguments)) {
            return call_user_func_array($this->binds[$alias]['entity'], $arguments);
        } else {
            return call_user_func_array($this->binds[$alias]['entity'], $this->binds[$alias]['arguments']);
        }
    }
 

hell0w0rd

Продвинутый новичок
А зачем кому-то делать бесплатно ту работу, которую может сделать программа? Есть phpcs, php-cs-fixer, phpstorm - берешь и проверяешь/фиксишь
 

CoolKid

Новичок
Неужели не найдется человека который бесплатно, без рассуждений и размышлений, без упреков итд просто скажет "вот здесь нужен перенос, а вот здесь скобка не на той строчке"
Я большего и не прошу

Что касается утилит по автоформаттингу, либо я не умею ими пользоваться, либо они не работают, ибо после php-cs-fixer мне приходится многое руками править
 

Вурдалак

Продвинутый новичок
Если приходится править после, то это называется баг. Ты не маленькая девочка, умей репортить.
 

CoolKid

Новичок
Да не, скорее всего у меня просто "психические отклонения", программы работают правильно, а меня глючит как будто бы нет.
 

Redjik

Джедай-мастер
не, ну на самом деле, перевод надо немного на другом уровне впиливать
 

CoolKid

Новичок
не, ну на самом деле, перевод надо немного на другом уровне впиливать
Почему? Где написано что нужно на другом уровне?
Тем более что в данном случае класс Lang больше используется как ресурс текстовых строк чтобы не зашивать их в код, нежели для перевода
 

Вурдалак

Продвинутый новичок
Исключения нужны программистам, а не пользователям. Если бы это не нужно было для перевода, ты бы и не называл это Lang::, не изди нам тут. Отделение строк от кода тут вообще не несёт никакого смысла, это часть API класса.
 

AmdY

Пью пиво
Команда форума
Замени префикс F на полноценный неймспейс.
($alias, $entity=null, $arguments=array()) пробелы вокруг равно и пора бы уже использовать короткий синтаксис для массивов.

А вообще, это яркий представитель подхода Silent Hill, лишниt исключений с которыми справился бы сам php,
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L147
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L151
а вот где они нужны, то там тишина.
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L128
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L77 и сразу же попытка игнорирования неверных данных https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L80
 

CoolKid

Новичок
пора бы уже использовать короткий синтаксис для массивов.
Если бы они поддерживались в 5.3 ...

По поводу замечаний по исключениям: а если стоит задача показывать в режиме дебага текст исключения на родном программисту языке?
Я понимаю, все должны знать английский и все такое, но тем не менее существует группа разработчиков быдлокодеров, которые не знают ангельского.
Вы скажите что это не люди и на них ориентироваться не надо?
Возможно, но у меня другое мнение и другая задача.
Пользователям исключения показаны не будут ни русские ни английские, вместо этого будет стандартная плашка "Произошла ошибка бла-бла" и то, только в случае, если исключение не будет обработано.




А вообще, это яркий представитель подхода Silent Hill, лишниt исключений с которыми справился бы сам php,
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L147
https://gist.github.com/anonymous/b03b0aa8e23cd245cee9#file-fcontainer-class-php-L151
Собственно изначально их там и не было, они появились позже при внедрения класса Lang и опять же для получения сообщения об ошибке на выбранном языке, а не стандартного PHP-ного


По поводу
PHP:
 if (!$this->isBindExists($alias)) {
$this->addBind($alias, $entity, $arguments);
}
Здесь исключение не нужно, здесь проверяется существует ли уже связка, и если нет - то она создается
Если же связка существует - не происходит ничего. Можно было бы выбрасывать исключение типа bind_already_exists, но я посчитал что это лишнее


Что касается
PHP:
 protected function instantiate($alias, $arguments = array())
{
if (Lib::chkArr($arguments)) {
return call_user_func_array($this->binds[$alias]['entity'], $arguments);
} else {
return call_user_func_array($this->binds[$alias]['entity'], $this->binds[$alias]['arguments']);
}
}
Здесь происходит проверка на то, был ли передан массив аргументов для передачи конструктору или нет. Lib::chkArr($arguments) == if (is_array($arguments) && count($arguments) > 0)

Если массив параметров был передан - вызывается замыкание с переданными параметрами, если же нет - параметры берутся из привязки.
Зачем здесь исключение?

подхода Silent Hill
Не смотрел и не играл =)
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
Вы скажите что это не люди и на них ориентироваться не надо?
Вообще-то да. Но окей, пиши исключения сразу на русском, какие проблемы? Или сейчас скажешь, что у вас работают те, кто русского не знает?
 
Сверху