Артём П.
124 сообщения
#16 лет назад
Здравствуйте.
Имеет ли вообще значени оформление php кода?
Или у каждого на свой вкус и это не влияет на профессионализм?
Гость
156 сообщений
#16 лет назад
Лучшая статья по этому поводу
Вадим Т.
3240 сообщений
#16 лет назад
ArtPetrov, здравствуйте.

Значение имеет. У каждого действительно свой вкус, это скоре к сожалению. На профессионализм влияет. На самом мало кто знает что такое "код профессионала", но зато каждый знает что такое ламерский код. Поэтому, прежде всего нужно избегать явного ламерства, неясности, дублирования кода, избыточности, отсутствия единого стиля, недокументированности, и т.д.

Пример неплохого профессионального хорошо документированного PHP кода можно видеть в большинстве модулей PEAR. Например, посмотрите в PEAR.php, и другие модули PEAR, входящие в поставку PHP 4.
Константин Т.
589 сообщений
#16 лет назад
>У каждого действительно свой вкус, это скоре к сожалению

Скорее, к счастью - иначе кто гарантирует, что только плохой вкус и останется?

Думаю, главное - писать понятный документированный код, и это не только к PHP относится. Остальное исправляется всякими бьютифайлерами (хотя программисты PHP не смогли пока написать приличного форматировщика, но когда-нибудь напишут, наверно).
Артём П.
124 сообщения
#16 лет назад
tvv, а это какой код? по 100 бальной системе. Желательно смотреть в PHP Expert Editor
Гость
156 сообщений
#16 лет назад
str_replace('"',"",str_replace("\\","",str_replace("\'","",str_replace("\"","",str_replace("'","",$subject)))));


Ууу =))
Артём П.
124 сообщения
#16 лет назад
AlekseySribnyj, что такое?
Станислав Малкин
1410 сообщений
#16 лет назад
Цитата ("ArtPetrov"):
tvv, а это какой код? по 100 бальной системе. Желательно смотреть в PHP Expert Editor


Баллов 50 - максимум я бы поставил.

Ошибки:

1) Мешанина хтмл кода с PHP
2) Процедурный стиль (не совсем ошибка, но я бы это все дело в один класс сформировал)
3) В одном месте Вы используете $_SERVER в другом - $HTTP_SERVER_VARS, что мне совсем не понятно. Использовали бы уже что-то одно (я бы использовал $_SERVER).
4) Не понятный отступ перед { - либо ее пишите вот так: function blabla() {, либо уже переносите просто на новую строку. Не понятно, зачем Вы делаете перенос и потом еще отступ. Это в принципе тоже не ошибка - это скорее стандарты кодирования.
5) Нет защиты от XSS - атак

Можно продолжать, но дальше уже совсем мелочи и мое ИМХО остается..
Гость
156 сообщений
#16 лет назад
ArtPetrov, Зачем столько раз вызывать эту функцию, если ее же можно вызвать для массива?
str_replace(array('"',"\\","\'","\"","'"),$key);

Или еще лучше регуляркой через preg_replace
Вадим Т.
3240 сообщений
#16 лет назад
Цитата ("ArtPetrov"):
tvv, а это какой код? по 100 бальной системе. Желательно смотреть в PHP Expert Editor

ArtPetrov, это код зеленого новичка, даже оценивать нет никакого желания. Например что я там увидел:
- мешанина кода и контента
- сплошной хардкодинг, вплоть до кода и E-mail адреса, и т.д.
- избыточные и не наглядные языковые конструкции
- дублирование кода, например, копи-паст в блоке "Обработка переменных для использования в отправке"
- проблемы безопасности, ничто не мешает хакеру использовать этот скрипт на сайте Вашего заказчика в дорвей для рассылки спама
- далее, скрипт просто не работает, обратите внимание на $body = ... $_POST) почему тут E-mail, а не body, как должно быть по логике? далее, ниже по коду используется переменная $bodys, которая до этого нигде не определена и т.д. даже нет желания разбираться.
- отсутствие единого стиля, например одни функции пишутся с заглавными буквами как AddSlashes, другие - htmlspecialchars, и т.д.
- ненужные избыточные комментарии в коде без которых можно обойтись, да еще и на русском языке, а вот нужных комментариев, описывающих что делает скрипт, какие входные параметры, какие ограничения и т.д. там нет.

Ставлю -1 балл. То есть, работать программисту, который пишет такой код, на реальных коммерческих проектах пока что противопоказано. Только перед заказчиками позорить и себя, и других фрилансеров на Weblancer.net. Учиться, учиться, и еще раз учиться.
Станислав Малкин
1410 сообщений
#16 лет назад
AlekseySribnyj, не лучше. Регулярка даст тормоз в ~ 20%, чем str_replace
Гость
156 сообщений
#16 лет назад
Я вот тоже думал написать по поводу хтмл в коде. Но. Что обычно делаете вы, господа программисты, когда надо вывести например ссылку? Влючаете ее в пхп? Конечно если в проекте юзается какой нибудь шаблнизатор, то можно эту ссылку вынести в шаблон. А если не используется?
Станислав Малкин
1410 сообщений
#16 лет назад
Цитата ("AlekseySribnyj"):
Я вот тоже думал написать по поводу хтмл в коде. Но. Что обычно делаете вы, господа программисты, когда надо вывести например ссылку? Влючаете ее в пхп? Конечно если в проекте юзается какой нибудь шаблнизатор, то можно эту ссылку вынести в шаблон. А если не используется?


Если не используется - то его надо написать.
Вадим Т.
3240 сообщений
#16 лет назад
Цитата ("ArtLab"):
AlekseySribnyj, не лучше. Регулярка даст тормоз в ~ 20%, чем str_replace

ArtLab, в данном случае (и других подобных случаях) этот тормоз с регекспом можно проигнорировать. Так как данная операция со строками операция не выполняется в цикле миллион раз в секунду, а используется при отправке E-mail, и эти потерянные микросекунды - ничто по сравнению со временем отправки самого письма, когда вызывается функция mail().

А вот то что регексп будет намного нагляднее, его проще понимать с первого взгляда другим людям, проще отлаживать, дополнять и т.д., в конце концов - его быстрее написать - это намного более весовые плюсы, чем минус от микросекундных потерь перфоманса.
Артём П.
124 сообщения
#16 лет назад
tvv, и что Вы посоветуете почитать?
Вадим Т.
3240 сообщений
#16 лет назад
Цитата ("AlekseySribnyj"):
Я вот тоже думал написать по поводу хтмл в коде. Но. Что обычно делаете вы, господа программисты, когда надо вывести например ссылку? Влючаете ее в пхп? Конечно если в проекте юзается какой нибудь шаблнизатор, то можно эту ссылку вынести в шаблон. А если не используется?

Тогда эту ссылку нужно вынести в конфигурационный файл, или, если такого в проекте нет (хотя, наверное, отсутствие конфига возможно только если проект из одного скрипта), то в константы.
Станислав Малкин
1410 сообщений
#16 лет назад
Цитата ("tvv"):
Цитата ("ArtLab"):
AlekseySribnyj, не лучше. Регулярка даст тормоз в ~ 20%, чем str_replace

ArtLab, в данном случае (и других подобных случаях) этот тормоз с регекспом можно проигнорировать. Так как данная операция со строками операция не выполняется в цикле миллион раз в секунду, а используется при отправке E-mail, и эти потерянные микросекунды - ничто по сравнению со временем отправки самого письма, когда вызывается функция mail().

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


Можно спорить конечно - я говорил не о "наглядности", а о производительности. В любом случае - в этом коде - лучше заменить на preg_replace, а вообще я максимально стараюсь использовать str_replace, где это возможно.
Вадим Т.
3240 сообщений
#16 лет назад
Цитата ("ArtPetrov"):
tvv, и что Вы посоветуете почитать?

Тут читать - не перечитать... Главная проблема, что большинство литературы написано авторами-ламерами, обычно с целью заработать денег на продажах книг. Даже если в авторах стоят известные спецы, например создатели языков программирования из USA, все равно почти всегда эти книги делают не они, а какие-то дешевые офшорные писаки, обычно из Индии, или студенты, которым читаются лекции по программизму. Или же, как часто бывает, спецам-гуру обычно банально нет времени на такие книги, их имена просто покупают издательства, чтобы повысить продажи ламерских книг. Я сам когда был студентом лет 15 назад, участвовал в написании таких книг, которые издавались от имени профессоров, и я тогда писал тоже ламерский код, всему свое время.

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

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

Далее, принципиально важно читать первоисточники. Для языков программирования и технологий - это первичные мануалы от разработчиков, спецификации, RFC и т.д. Никакие книги, их "разжевывающие", не заменят этого.
Вадим Т.
3240 сообщений
#16 лет назад
Цитата ("ArtLab"):
Можно спорить конечно - я говорил не о "наглядности", а о производительности. В любом случае - в этом коде - лучше заменить на preg_replace, а вообще я максимально стараюсь использовать str_replace, где это возможно.

Никто же не спорит что str_replace использовать предпочтительнее чем preg_replace, потому что оно быстрее работает, это само собой понятно. Но когда вырастает цепочка из нескольких str_replace, это уже явно сигнал что что-то тут не так, и нужно использовать другой подход.
Станислав Малкин
1410 сообщений
#16 лет назад
Цитата ("tvv"):
Цитата ("ArtPetrov"):
tvv, и что Вы посоветуете почитать?

Тут читать - не перечитать... Главная проблема, что большинство литературы написано авторами-ламерами, обычно с целью заработать денег на продажах книг. Даже если в авторах стоят известные спецы, например создатели языков программирования из USA, все равно почти всегда эти книги делают не они, а какие-то дешевые офшорные писаки, обычно из Индии, или студенты, которым читаются лекции по программизму. Или же, как часто бывает, спецам-гуру обычно банально нет времени на такие книги, их имена просто покупают издательства, чтобы повысить продажи ламерских книг. Я сам когда был студентом лет 15 назад, участвовал в написании таких книг, которые издавались от имени профессоров, и я тогда писал тоже ламерский код, всему свое время.


В последнее время все-таки появились не плохие книги по PHP5. Например:

1) Енди Гутманс "PHP 5. Профессиональное программирование" - лучшее из того, что я видел по PHP.
2) Зив Зураски "PHP 5. Библиотека профессионала"
3) Можно так же почитать Д.Котерова "PHP5"

Например в книге Гутманса есть описание и применение основных паттернов программирования - синглтон, фабрика, обсервер, стратегия и их реализация на языке PHP5, затронуты аспекты проиводительности (ZPC), тестирования (Apache Benchmark, Siege), профилирования (APD, XDebug), проектирования высокопроизводительных приложений, кеширование, оптимизации кода (через написание микротестов) и прочие, так же есть введение в написание расширений для пхп.

Книга Гутманса - действительно вещь, которую должен иметь каждый профессиональный программист на PHP5 или тот, кто только еще хочет им стать.

Мне книга очень понравилась - всем советую.

Для тех, кто не в курсе - Зив Зураски и Енди Гутманс - основатели компании Zend (по две буквы с их имен), создатели PHP4 & PHP5.