Не пойму, в чем удобство такого метода написания кода

fixxxer

К.О.
Партнер клуба
Switch позволяет засунуть в кейсы всякую нахрен там не нужную логику, в варианте 2 это невозможно ;)

А в остальном - один хрен. Читабельность на мой взгляд одинакова.

В описании паттерна, конечно switch. Рассказать почему или сами догадаетесь? :D Эти две конструкции тупо идентичны.
 

korchasa

LIMB infected
vovanium
Иногда да. Но не в данном случае. Тут switch вообще непонятно зачем. Примем автор полагает, что волшебный $this->action чем-то отличается от волшебного $this->$method, или SomeCommand->run().

-~{}~ 28.10.10 16:59:

s/непонятно зачем/непонятно, чем лучше/
 

vovanium

Новичок
fixxxer
Ну например тем что switch может использоваться не только для того чтобы банально вызвать одну функцию/метод :) Мне частенько приходится использовать switch в различных автоматах, и думаю что так значительно быстрее работает, и дебагить автомат проще.
 

Активист

Активист
Команда форума
Структура паттерна Strategy далека от реализации этого г.кода, (Strategy, Context, ConcreteStrategy X + на каждый класс по интерфесу) и в контексте этой задачи его применение не целесообразно, и вообще, паттерны приспособленцы используются не часто.
 

itprog

Cruftsman
Активист
> Засунуть эту бесовскую книгу в печь. Требую цитаты и автора.
ну, из того что я помню Роберт Мартин, Clean Code
Lines should not be 150 characters long. Functions should not be 100 lines long.
Functions should hardly ever be 20 lines long.
плюс еще можно применить правило 7+-2

и вообще, это ни куда не приведет, все что говорят другие для тебя бред. ты считаешь свой код идеальным, когда ты его написал и даже не пробовал рефакторить ($this->data['level0']..) об этом говорят
 

Активист

Активист
Команда форума
itprog
Экономически нецелесообразно его рефакторить.

> Functions should not be 100 lines long
хм? 20?


> Lines should not be 150 characters long
У меня 250 влазит на монитор, что мне делать?

> Functions should hardly ever be 20 lines long.
Все я умру.

[неудачное высказывание] Роберта Мартина засчитано, он нашел своего читателя.

> ты считаешь свой код идеальным
Нет. Он полон ошибок и далек от идельного, об этом я уже скзал, что здесь главная цель - обмен опытом.

Я бы посмотрел на автора сего [неудачного высказывания], если бы он хоть раз рисовал с использованем фрактальной геометрии, что и послужило кстати, толчком к изучению программирования и математики, когда я впервые увидел код из 30 строк в qbasic ресующих 3D объекты за считанные секунды на 286.

-~{}~ 28.10.10 22:56:

Эх... Было же время когда я программировал.. ((
 

fixxxer

К.О.
Партнер клуба
Автоматы из свитчей только простые если. Иначе превращается в write only - фиг поймешь что делают через полгода. По хорошему картами надо.
 

itprog

Cruftsman
Активист
неаргументированные оскорбления и называние чужого мнения бредом это и есть обмен опытом для тебя?

Ну да, куда там Роберту до тебя, он то подумаешь с 1970 года разработчик, владелец компании, которая занимается консультациями в области ПО. Роберту, книги которого часто цитирует и рекомендует Фаулер. Фрактальная геометрия это сильнее.

> У меня 250 влазит на монитор, что мне делать?
уменьшить шрифт пробовал? все 300 влезет. Просто такой код никто читать не будет уже.

> Экономически нецелесообразно его рефакторить.
это полезно для себя, чтобы развиваться как профессиональный программист
 

Adelf

Administrator
Команда форума
vovanium
Комментарии - это дезодорант. обязательно к использованию, но душа все равно не заменят :)
Сорри за аналогию. Эт все Фаулер с Беком.

fixxxer
Дай линк на карты на всякий случай.
 

Фанат

oncle terrible
Команда форума
Прошу всех придерживаться парламентских выражений, и переживать за то, чтобы эта дискуссия не скатилась во флейм, так же, как за это переживаю я.
Спасибо.
 

A1x

Новичок
Активист
> Lines should not be 150 characters long
У меня 250 влазит на монитор, что мне делать?
а если бы у тебя на монитор влазило примерно >9000 символов - где-то на каком символе ты бы решил что строка уже достаточно длинная и пора ее переносить? :)
 

Вурдалак

Продвинутый новичок
Уже давно ввели пространства имён, поэтому от имён вроде Module_Advert_Model_Advert можно было бы избавиться.
 

Духовность™

Продвинутый новичок
мне лень все переписывать. а Module_Advert_Model_Advert теперь у меня вызывается так:

PHP:
self::getMapper('Advert/Advert')->findBy(..);
и соответственно статическое свойство-коллекция мапперов.
 

Активист

Активист
Команда форума
> чтобы развиваться как профессиональный программист
Простите, конечно, но как бы я не любил PHP и сколько я бы на неv не писал, но PHP не позволяет развиваться мне как программисту, это кодинг в основном, всего три действия - получить от юзера данные, обработать, сохранить/загрузить, отдать HTML код, как программист я развивался даже в школе, когда писал на asm, qbasic etc.

> Роберту до тебя
Знаешь, вот сказал он "рекомендовано использовать в функции не более 20 строк", ты не считаешь это бредом? Это либо написано очень тупым людям, которые и кодерами не могут называться и не понимают смысл функции, на подобие Code Monkey. Если моя функция требует большего числа строк (например, таблицы соотсветсвия, хеши), что мне убиться об стену? Это просто бред. Для человека, который с трудом юзает интернет и захотевший сделать хоум пейдж, это информация возможно будет полезна, но для программиста это само собой разумеющее.

Да по поводу учителей (писателей) - фраза "Не умеешь работать иди учи" - справедлива очень часто.

> 1970 года разработчик
Сколько времени утекло.

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

В общем, не считаю эту информацию полезной, для "Коддинг для чайников" если только.

-~{}~ 29.10.10 00:24:

Вон, у triumvirat вполне хороший читабельный стиль, есть строки выше 150 символов, включая табуляции, что ему теперь уродовать свой стиль таким образом, что бы не более 150, что тогда получится?
 

cDLEON

Онанист РНРСlub
Активист
ПХП здесь не при чём. Если ты пишешь с использованием готовых библиотек, ты и не научишься ни чему. В случае с высокоуровневым ПХП - где нет ни сборки мусора, ни жесткой типизации(т.е. нет факторов ограничивающих программиста в плане архитектуры) - это просто более заметно.
 

Активист

Активист
Команда форума
С меня +1 к карме, если кто-нибудь вот из этой функции сделает ее в 20 строк длинной не более 150.

Код:
DATA      SEGMENT   PARA 'DATA'
SINES  DW  0,175,349,523,698,872     ;0-5
       DW  1045,1219,1392,1564,1736  ;6-10
       DW  1908,2079,2250,2419,2588  ;11-15
       DW  2756,2924,3090,3256,3420  ;16-20
       DW  3584,3746,3907,4067,4226  ;21-25
       DW  4384,4540,4695,4848,5000  ;26-30
       DW  5150,5299,5446,5592,5736  ;31-35
       DW  5878,6018,6157,6293,6428  ;36-40
       DW  6561,6691,6820,6947,7071  ;41-45
       DW  7193,7313,7431,7547,7660  ;46-50
       DW  7771,7880,7986,8090,8191  ;51-55
       DW  8290,8387,8480,8572,8660  ;56-60
       DW  8746,8829,8910,8988,9063  ;61-65
       DW  9135,9205,9272,9336,9397  ;66-70
       DW  9455,9511,9563,9613,9659  ;71-75
       DW  9703,9744,9781,9816,9848  ;76-80
       DW  9877,9903,9926,9945,9962  ;81-85
       DW  9976,9986,9994,9998,10000 ;86-90
DATA      ENDS
OUR_CODE  SEGMENT   PARA 'CODE'
          PUBLIC    FSINE
FSINE PROC      FAR
          ASSUME    CS:OUR_CODE,DS:DATA
          PUSH      DS
          PUSH      AX
          PUSH      CX
          MOV       BX,DATA
          MOV       DS,BX
          SUB       CX,CX 
          CMP       AX,181
          JB        SIN_POS
          MOV       CX,8000H
          SUB       AX,180 
SIN_POS:  CMP       AX,91
          JB        GET_SIN 
          NEG       AX  
          ADD       AX,180
GET_SIN:  MOV       BX,AX
          SHL       BX,1
          MOV       BX,SINES[BX]
          OR        BX,CX 
          POP       CX
          POP       AX
          POP       DS
          RET             
FSINE ENDP
OUR_CODE  ENDS
          END   FSINE
-~{}~ 29.10.10 00:45:

cDLEON
Я ж говорю, я люблю PHP, но не чувствую себя программистом.

-~{}~ 29.10.10 00:46:

Что поделаешь, выскоуровневое программирование...
 
Сверху