- 1
if (FALSE !== strpos($this->lin{$i},$this->o)) {
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+150.9
if (FALSE !== strpos($this->lin{$i},$this->o)) {
я б до такого сравнения даже в кошмарном сне бы не додумался.
guest 15.02.2009 14:50 # 0
Йода мастер писал код этот.
guest 16.02.2009 01:32 # +1
И что вас здесь смутило? Обычная техника предотвращения возникновения ошибок сравнения еще на стадии "компиляции".
guest 16.02.2009 10:30 # +1
Нормальная практика сравнения с выводом константы на первое место для предотвращения ошибок со сравнением.
guest 16.02.2009 11:21 # 0
Нормальная-то она нормальная, но выглядит всё равно жутко. o_O
guest 16.02.2009 13:03 # 0
хм. как по мне, так лучше ошибиться со знаком равно и потом поискать ошибку несколько минут, чем потом тратить время на разбор вот таких закорючек.
guest 16.02.2009 14:20 # 0
гм. Постоянно пишу подобное. Вот только что чиста на афтомате написал:
выходит тяжелое наследие Ц и гдб сыграло со мной злую шутку и я теперь говнокодер? Какая жалость.
guest 16.02.2009 16:22 # 0
нет, я не говорю что такой вариант плохой, просто в данном варианте не понимаю зачем так извращаться и мучить программистов, которые после будут разбираться в твоем коде, не проще написать вот так,
if ($this->lin{$i} == $this->o){
guest 16.02.2009 16:42 # 0
[quote= yubuy]нет, я не говорю что такой вариант плохой, просто в данном варианте не понимаю зачем так извращаться и мучить программистов, которые после будут разбираться в твоем коде, не проще написать вот так[/quote]
Не проще и даже НЕ правильно. Ваш пример работает на равенство, а исходный на поиск подстроки.
guest 16.02.2009 16:58 # 0
guest 16.02.2009 19:24 # 0
[quote=Иван]Не проще и даже НЕ правильно. Ваш пример работает на равенство, а исходный на поиск подстроки.[/quote]
вы думаете результат будет различаться если я попбробую, найти в строке длинной в 1 символ символ и если я сравню эту строку с символом?
guest 16.02.2009 19:25 # 0
[quote=Иван]Не проще и даже НЕ правильно. Ваш пример работает на равенство, а исходный на поиск подстроки.[/quote]
вы думаете результат в данном случае результат будет различаться если я попбробую, найти в строке длинной в 1 символ символ и если я сравню эту строку с символом?
guest 17.02.2009 08:24 # +2
Если $this->lin{$i} будет начинаться с $this->o, то strpos выдаст 0, а 0 равнозначен false в булевых проверках для пыха.
Вот и приходится использовать false !== strpos(a,b)...
И это стандартная практика.
guest 17.02.2009 10:49 # 0
[quote=yubuy]вы думаете результат в данном случае результат будет различаться если я попбробую, найти в строке длинной в 1 символ символ и если я сравню эту строку с символом?[/quote]
Нет контекста и я не телепат. Если предполагается, что величины будут всегда иметь одинаковую длину, то лучше заменить на равенство. Но приведенный пример НЕЛЬЗЯ заменить равенством.
guest 17.02.2009 17:34 # 0
Если $this->lin{$i} будет начинаться с $this->o, то strpos выдаст 0, а 0 равнозначен false в булевых проверках для пыха.[/quote]
я вс наверно огорчу.. для этого можно юзать оператор "===". либо !(условие)===true; хотя это то-же говнисто выглядит.
guest 17.02.2009 19:01 # 0
[quote]либо !(условие)===true[/quote]
Гениально!
А чем же, по вашему, хуже
[quote]FALSE !== (условие)[/quote]
из примера?
guest 23.02.2009 09:49 # +1
http://php.net/strpos
Ума хватает лишь на то, чтоб называть непонятое Вами говнокодом?
guest 03.03.2009 15:24 # 0
епмарек.
я абсолютно ничего не имею против таких конструкций как FALSE !== (условие) и т.д. но блин в данном варианте не проще вместо вот этого
if (FALSE !== strpos($this->lin{$i},$this->o)) {
написать $this->lin{$i} == $this-o?
guest 03.03.2009 15:29 # 0
еще раз объясню для тех неговнокодеров, которые поленись разобрать что делает этот код. ищется подстрока this->o в строке $this->lin{$i}. знаете что значит {$i} вытаскиваеся символ, ОДИН символ из $this->lin. Так на какой хер так сравнивать а? Это хороший код?
guest 15.03.2009 16:54 # 0
2 говнокодер yubuy:
Все поняли что ОДИН символ, и это бессмыслено, если операнды - строки. Но если нет, то начинаются различия. На "==" однозначно менять НЕЛЬЯ.
$a = '';
$b = 0;
if ($a{0} == $b) - сработает
if (FALSE !== strpos($a{0},$b)) - нет
Аналогично и другие варианты.
Вообще, тут лучше использовать "===" вместо "==", но все равно различия есть.
guest 31.07.2009 11:17 # 0
я в шоке
нет ну я конечно тоже пробегая беглым взглядом подумал что $this->lin{$i} это строка
но когда присмотрелся увидел скобки и понел что это всеголишь один символ
to #19 действительно говногость
перво наперво этот код выдает ошибку Notice
ну и нафига заморочки со strpos()