Как стать автором
Обновить
8
0
Александр @torf

PHP программист

Отправить сообщение
всегда приятно услышать мнение профессионала
Ну-ну, я вот сейчас в университете учусь, так нам каждый семестр преподают программирование разные доценты (по их словам, супер крутые программисты, подготовившие кучу Стивов Джобсов, Полов Аленнов, Марков Цукербергов и т.д.). На деле же эти люди пишут такую, прошу прощения, херню, что хочется вскрыться и прыгнуть в окно. За три года обучения программированию в университете, я не научился ничему новому, ничего из того, чего бы я не смог почитать в мануале или в любой книжке для нубов.
То есть — когда в логике нет ненужных конструкций / операторов — это теперь называется говнокодом? Куда катится мир…

Может мы ещё обойдёмся без ООП, будем везде статические методы писать для «единообразия и читабельности», а лучше, пожалуй, вообще обойтись без условий и циклов, зачем писать говнокод, если можно 5 строк раздуть на 500.

UPD. Леонид Аркадьевич расстроен текущим положением дел.
ну человека, который не знает что делает return и при написании каждого оператора / функции лезет в php.net за справкой — естественно запутывает
Да это вам, дружок, нужно слезть с говноучебников типа «Котеров — PHP 5 в подлиннике»
Почему нельзя ставить два return? Кто-нибудь может адекватно объяснить? Конкретно с аргументацией, а не «не ставь два return — это плохо»… Что плохо? PHP — это не C++, тут народ ещё говорит о каких-то type hinting'ах. В чём проблема — берите C и будет вам контроль типов.
Тоже, я смотрю много «профессионалов» и «знатоков своего дела», которые считают, что Singleton это плохо, отвратительно и вообще от него мир рушится, но нигде я не увидел ни одного конкретного аргумента / упоминания / примечания, почему Singleton так ужасен…

«Писать иф/елсе без фигурных скобок — зло». Вот оно как? Ну, понимаете, речь идёт уже о неспособности читать нормальный код. Если вы не различаете, что выполняется в условии, а что вне его, то я могу только посочувствовать.
<?php
if($something)
    DoSomething();
DoFinally();
?>
Я убрал, возвращет false. ЧЯДНТ?
<?php
$a=7;
if($a==5)
    return true;
return false;
?>
Вот, наконец-то. Под цифрой 2 — то, что нужно, единственное — скобки бы фигурные убрал, вот пунктик у меня =)
<?php
$a=7;
if($a==5)
    return true;
else
    return false;
?>

Ммм, вы действительно считаете, что здесь необходимо ключевое слово else? Попробуйте его убрать — увидите, ничего фатального не произойдёт, только код станет короче.
Мне тоже не хочется дискутировать с человеком, который придумывает сам себе вопросы, сам же на них отвечает в комментарии под совершенно другой задачей.

1. Что значит ломает? С каких это пор мне нельзя использовать ссылки в foreach? Зачем мне unset? Я же дальше нигде не использую $v… О, Боже, я же не просил раздувать из учебного примера машину Голдберга. Вопрос был совершенно в другом, а не в «Найдите все уязвимости, сверстайте шаблон и научите скрипт заваривать кофе по утрам».
А я бы расстреливал людей, которые пишут пробелы после каждого знака и обрамляют фигурными скобками всё, что угодно, даже если в условии (или цикле) выполняется всего одно выражение.

Про удаление ветки else — никто не заикался. Была речь о слове else. Чем читаете вы и люди ниже — я не знаю.
Я не понимаю к чему эти комментарии и зачем вы приводите к булеву типу $something..., но допустим $something — SimpleXml Object?
Я сражён и вашим комментарием и теми что, ниже…
Вам не кажется, что $something и true чем-то отличаются? Если мне не нужно возвращать $something, а я хочу именно true, то что?

Народ, вы либо устали, либо серьёзно считаете, что писать else после return это нормально? Какой смысл ставить else, если return возвращает результат и код дальше не исполняется?
Хорошо, попробую объяснить по-другому. Вот, к примеру, задачка:
Есть массив с элементами вида somethingN.ending, т.е:
<?php
$arr=[
    'something1.ending',
    'something2.ending',
    'something3.ending',
    #To be continued ...
];
?>

Предположим, нам надо убрать у всех элементов окончание (т.е. '.ending')
Исходя из вашей логики, вместо
<?php
foreach($arr as &$v)
  $v=basename($v,'.ending');
?>

Следует писать так:
<?php
foreach($arr as &$v)
  $v=substr($v,0,strrpos($v,'.ending'));
?>

У нас соревнование? Чем больше ненужных функций использовано, тем круче программист?

Ещё из того же жанра мне нравится:
<?php
if($something)
    return true;
else
    return false;
?>

Казалось бы, зачем тут else?

То есть, я хочу сказать, что незнание возможностей из коробки и желание втиснуть побольше воды в код, — в основном, порождает говнокод. Незнание возможностей языка — это не есть хорошо.
в C++ есть STL. Я не думаю, что ребята, программирующие на С++, в каждой программе вручную пишут стеки / списки / карты и т.п. Но, конечно, это моё личное убеждение
Забыли про функцию array_column().
Более того, «пердеть» — это скорее всего глагол-исключение (в плане спряжения). Вот смотрите. Пердеть в инфинитиве заканчивается на "-еть", что характерно для первого спряжения, а множественное число: пердят — уже на "-ят", что характерно для глаголов второго спряжения. Соответственно гордым глаголом «пердеть» — можно смело дополнить ряд исключений, таких как видеть, висеть, галдеть, глядеть, гореть, греметь, гудеть и т.д.
А если вообще конкретизировать, начните чтение с различий между ключевыми словами self и static
Уважаемые хабра-минусующие, поясните свою позицию, пожалуйста. Что вам не понравилось — материал статьи, форма изложения, оформление. Это мой первый пост и если я и сделал какие-то ошибки, вы не молчите, я не экстрасенс, не хочется упасть лицом в лужу в следующий раз.
Вы зря иронизируете. Я хотел просто более понятным, «человеческим» языком, объяснить, как это выглядит и с чем можно провести аналогию. Видимо, я потерпел в этом полный крах. Помню в то время, когда заинтересовался языком C++, я открыл книгу Джесса Либерти — «C++ за 21 день». Так вот там, автор, для наглядности, абстрактный класс сравнивает со словом «автомобиль» в целом, обычный класс, который наследуется, от выше упомянутого абстрактного, сравнивает с маркой машины, а объект — с конкретным, выпущенным на конвейере. (Пишу по памяти, если немного приврал — уж простите, но суть от этого не меняется). Где-то ещё видел как классы сравнивали со зверями. В общем, по-моему, такие аналогии даже полезны, поскольку помогают понять основные моменты ООП-парадигмы, основная суть в которой, если вы не забыли, это описание классов (описание методов, обозначение свойств, полиморфизм и инкапсуляция) и манипулирование с экземплярами этих классов.
<?php
class A {
    public static function Method($value)
	{
		static $v;
			$v=$v ? : $value;
		echo'Я метод класса '.get_called_class().' $v='.$v.'<br>'.PHP_EOL;
    }
}

class B extends A{}
class C extends A{}

B::Method(5);
C::Method(8);
?>


Метод не один. Поймите. Как бы вам объяснить. Ну вот откройте документ любой у себя на компьютере, например в формате .docx. Теперь возьмите и распечатайте две копии на принтере. А теперь возьмите и напишите ручкой на одном из распечатанных документов «PHP». Теперь переведите взгляд на второй распечатанный документ. Там появилось слово «PHP»?
Так вот, документ на компьютере — это класс A, две копии, распечатанные на принтере, это классы B и C.

Так и тут, методы B::i() и C::i() — это два образца основанные на одном прототипе. Но друг от друга они не зависят.

Информация

В рейтинге
Не участвует
Откуда
Кубинка, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность