За последние 24 часа нас посетили 57223 программиста и 1803 робота. Сейчас ищут 918 программистов ...

Срач из темы про шаблонизаторы(отделено akrinel).

Тема в разделе "Прочее", создана пользователем Simpliest, 17 апр 2010.

Статус темы:
Закрыта.
  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Simpliest
    Я прекрасно понимаю, что тебе _нечего_ сказать по-существу кода, из-за которого ты развел этот срач. Тебе надо было принципиально дать критическую оценку, и сейчас ты просто настаиваешь на своей правоте. Тот код, который ты приводил "выше по теме", был основан на моем коде, на которов впоследствии основан последний. Придирка к именам приатных методов - это в высшей степени бессмысленаня критика. Константы используются часто для задания какой-нибудь конфигурации.
     
  2. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    Солидарен с Simpliest, это говнокод по нескольким пречинам:

    - конфигурационные данные выносятся в конфигурационные файлы, а не объявляются константами в классах.
    - названия классов, методов и переменных должны быть самоописывающими самих себя
    - должно присутсвовать хоть какое-либо форматирование кода
    - класс должен являться автономной частью системы, поэтому не должно присутвовать никаких "echo" и глобальных переменных. Получили данные на входе -> обработали -> отдали на выход.
    - забудь про "волшебные методы", такой же дурной тон как и использование суперглобальных переменных.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Т.е. даже их ты затролливаешь до смерти?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Вот, это уже гораздо лучше.
    - на счет конфигурации - согласен, но в рамках моей задачи это излишне.
    - Опять повторюсь, что речь идет о двух приватных методах. Названия этих методов не могут никого запутать, они состоят из нескольких строк кода, по которому суть понятна лучше, чем по любому названию. Да и вызываются они в коде по 3 раза.
    - Код вообще-то отформатирован полностью o_0
    - шаблонизатор как раз нужен для генерации представления. По-моему, echo логичнее в нем, чем в контроллере. В крайнем случае, собрать вывод не сложно.
    - волшебные методы - это круто :cool:
     
  5. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    Приватные методы или нет, никто не даёт гарантии, что рефакторить код не придётся в дальнейшем другим людям. У программиста должна выработаться привычка давать корретные названия, потом самому будет приятней смотреть свой старый код.

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

    Насчёт форматирования, не припомню ниодного стиля, позволяющего писать названия классов с маленькой буквы и где названия переменных начинаются со знака "_".
     
  6. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    ИМХО есть шаблонизатор, а есть некая "OutputStrategy" которая и рулит выводом, заголовками и проч.
    Впрочем это скорее дело вкуса :)
     
  7. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Я тебе и так достаточно много сказал. То что ты не смог это прочитать - твои проблемы.
    Это шедевр
    PHP:
    1. <?php
    2. const D = 1;
    3. If (D ==1) {}
    По остальному вопросов нет, поскольку претензии к коду у меня аналогичные.
    А вот магические методы на мой взгляд вполне допустимы они обеспечивают гибкость и удобство написания.
    А, ну и форматирование - непринципиально.
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Заметьте, ни одного замечания по сути алгоритма.
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Volt(220)
    • Во-первых, принцип достаточно стандартен. Несколько глупо делать замечания по сути ложки - не находишь? :)
    • Во-вторых, к предыдущему варианту кода претензий практически не было, за исключением непонятного final и стремных манипуляций в __get.
    • В-третьих, из-за говнокода добираться до сути - крайне сложно :)
      Оно конечно может и в навозе золото бывает, но ковыряться там не каждому охота. Верно?
     
  10. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Simpliest
    Суть ложки - переносить что-либо в себе.
    Ложки они разные... Большие, маленькие, тяжелые, легкие, разной формы, с дырками и т.п. (я имею ввиду ту часть что не является ручкой). У меня вообще есть ложка где эта часть развернута на 90 градусов. Эти характеристики напрямую влияют на способность ложки соответствовать своей сути (слишком тяжелой нельзя пользоваться, слишком маленькая не поместит все что надо и т.д.).
    В то же время исполнение ручки не столь важно. Да ложку будет не удобно держать или она будет не столь красива, но ей можно будет пользоваться.


    Возможно слово суть не совсем точно. Однако, я думаю, смысл того, что я хотел сказать, в предыдущем комментарии понятен.
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Volt(220)
    Попытка оправдать товарища - вполне очевидна. Остальное для меня весьма туманно :)

    Обсуждать какой размер ложки нужен, сколько в ней должно быть дырок, нужна ли повязочка(и какая именно) в виде кеширования - не вижу смысла. Зависит от владельца и конкретных задач.
    Обсуждать же наличие двух ложек на одном конце ручки, да еще с какими-то шипами - крайне затруднительно в виду общей нелицеприятности продукта.

    То что ты называешь сутью - является конкретной имплементацией (для чая, для супа и т.д.) и слишком индивидуально.
    Суть ложки в том, что черпать суп/чай и т.д. лучше именно ей, а не вилкой.


    А прежде чем обсуждать логические просчеты в построении, автору бы недурно исправить архитектурные ошибки (в виде настроек через константы) и предоставить документацию или написать самодокументированный код (кстати, если бы он это сделал то сразу бы самостоятельно выловил ряд ошибок).

    Ты готов вместо автора доказывать неговнокодность его творчества?
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Simpliest
    ничего не смог конкретного нагуглить по "самодокументирующийся код",(кроме приколов на хабре) это как?просто понятный по прочтению?
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Простой, понятный. Хорошо оформленный.

    С "говорящими" названиями методов, функций и переменных (примеры можешь посмотреть в любом крупном современном фреймворке)
    т.е. getc, getcc, getccc - неприемлимо.

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

    избыточные комментарии - не поощряются
    PHP:
    1. <?php
    2. // увеличиваем $i на единицу
    3. $i++
     
  14. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Padaboo
    Вероятно, тут имеется в виду то, что в Java называется JavaDoc.
    По-моему, в пхп это по анологии называется PHPDoc
    Тексты скриптов документируются специальным образом (с пом. коментариев), что потом простым нажатием кнопки генерится хтмл-документация. Для примера можешь глянуть, как оформлены сорцы ZendFramework, и сгенеренная на основе них документация.
    Очень удобно.
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это плюс, значит код воспринимается уже не как алгоритм, а как решение!
     
  16. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Дурак?

     
  17. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Попытка оправдать вторична.
    Первична, попытка направить разговор на обсуждение проблем логики.
    Хотя, возможно, я лишь хочу в это верить...

    В том вопрос: насколько данная ложка справляется с возложенными на нее задачами. Считая ложкой, сначала, само кеширование, а затем, весь шаблонизатор. Да я понял, что ответ ниже. =)

    Сложно доказать неговнокодность некачественного кода. Я лишь считаю что степень говнокодности этого кода не слишком велика.

    offtop:
    Я тоже сначала хотел написать "черпать"...
    Если ложкой можно зачерпнуть, но нельзя перенести и съесть, то зачем нам такая ложка.
    Кстати да, если можно перенести, но нельзя зачерпнуть... или можно зачерпнуть перенести, но нельзя съесть...
     
  18. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    NotaBene:
    У слова "суть" есть deprecated значение - это глагол "быть" во множественном числе.
    Узнал об этом от преподавателя по вышке на первом курсе)
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    у меня другое мнение.
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну развели. пусть использует если хочет, потом сам перепишет ещё не раз.
    это я от себя добавил.
     
  21. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Это бесполезно, поскольку автору не нужно. У него
    Есть такая категория людей, которая любит сидеть в своем д...ме. И никогда не попытается взлететь из-за страха высоты.

    Если хочешь, можешь попробовать привести его код в надлежащий вид и сам увидишь ошибки в логике.
    Он ведь даже не понимает в чем проблемы.

    От сравнения степеней - увольте :)

    Ок, не черпать, а есть. Устроит?
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Да блин. Переименовать методы или вынести конфигурацию в файл или задавать ее методами - это минута делов, че ты хотел чтобы я по твоему замечанию побежал это исправлять и постить заново? Меня интересовал алгоритм, т.к. сериализацию контента я пока не встречал, и сам в нем недочетов не нашел. По алгоритму высказались два человека, в обоих случаях (проверка большой вложености, сравнение с другим алгоритмом) проблем не выявилось. Или ты хочешь сказать, что щас перемиеную методы и уберу константы, и внезапно всплывут недочеты?
     
  23. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Действительно. Так кое-что виднее.
    Но знание того что ошибки там есть и сам процесс улучшения кода мне дали больше информации, чем улучшенный код.
    Только остается вопрос все ли я увидел, что увидел ты?

    Примерно так и происходит...

    Почему метод flush, по-разному выводит результат в файл и на экран?
     
  24. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Весь алгоритм это сериализация контента? Бгг...
    Говнокодеры, такие говнокодеры...

    Обязательно всплывут потому что они там есть. А если сам не увидишь, то обратись к Volt(220) он тебе подскажет.
    Ну или можешь еще флоппика помучать, может он добрый будет и объяснить тебе непутевому.
     
  25. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Честно говоря - это странно :)

    А вот это на самом деле важно. Поскольку даже попытка правильно и понятно назвать метод может подсказать что тут ошибка.
     
Статус темы:
Закрыта.