От говнокода к Великому

twim32

Новичок
Доброго времени суток, форумчане!

Я не любитель писать на форумах, но я буду стараться :) И так, маленькая предистория:
Совсем недавно я стал познавать азы языка PHP. Худо-бедно, но выходит. Сверстал сайт, админку (пока без всякой безопасности от SQL-иньекций), сейчас добавляю потихоньку удобства. И чем больше я углубляюсь в свой сайт, тем больше ошибок я нахожу. Вопрос в другом: о командах РНР написанно не мало, а вот про структуру документа и прочее молчат. В данный момент я еще понимаю что, где и как написанно и как можно это дело исправить. А через месяц, три, год? Не думаю что смогу разобраться в собственном кошмаре.
Один из моих учителей (по типографии) говорил: "Ты должен писать конспекты так, чтобы ЛЮБОЙ, даже ничего не понимающий человек легко в них разбирался!". Именно этот метод написания кода хочу применить к будущему проекту и исправить старый.

Вот несколько умных советов которые я нашел. Буду рад услышать мнение профессионалов.

  1. РНР код должен всегда находиться выше HTML, и в HTML подставляются значения переменных, а не вычисления. Хотя в этом случае, мне в голову не приходит как написать foreach где вывод строк из хтмла.
  2. Писать комментарии к каждому действию так, как будто за спиной твой код читает маньяк-психопат с мачете в руке. И с каждым плохо сформулированным комментарием он всё ближе и ближе! Кстати, комменты должны быть на англ. языке.
  3. Отступы, отступы и еще раз отступы!!!
  4. Если присутствует комманда header, то она в любом случае должна быть самом начале. Функции типа include("somefile.php"); должны быть после неё и при этом комманды header не работают если их записать в фаил и вложить в документ через include.
  5. 5. Фаил c подключением к БД должен быть вынесен в определенную папку в которой нужно заблокировать обязательно доступ к ней же через .htaccess. (Хотя видел CMSки где в каждой папке просто лежит пустой index.php, чтобы предотвратить вывод фаилов в папке). Как вам такой вариант, господа?
  6. Если уж выводишь код с помощью mysql_fetch_array(); или mysql_fetch_object(); то будь добр, выбери одну и выводи только с ней. Они одинаковы по фунционалу, вот только вывод значений разный. Запутаешься!
  7. Кавычки можно ставить как хочется: echo '<a href=" '.row->link.' ">Ссылка</a>'; или echo "<a href=' ".row->link." '>Ссылка</a>"; ... НО!!! (опять это надоедливое "НО!!!") Хотеться должно именно так и никак иначе: echo '<a href=" '.row->link.' ">Ссылка</a>'; потому что 90% людей пишут именно так и привыкли к этому. Даже если тебе плевать на остальных, рано или поздно пожалеешь об этом: все примеры будут именно в таком формате и тебе самому придется переписывать кавычки, либо взрывать свой мозг.
  8. При создании таблиц в БД желательно добавлять префиксы к названиям колонок. Пример: таблица юзеров: (user_id, user_name, user_password); таблица товаров (product_id, product_name, product_price) иначе запутаться между именами или айдишниками можно лехко!
  9. Сделал дело - проверяй умело! Подключился к БД, сделал переменную, проверил. Вывел результаты, проверил есть ли значения у них... И так далее. Помогает избежать ступоров, когда у тебя документ размером с 10 солдатских портянок.
  10. Сначала рисуем шаблон, верстаем шаблон в HTML и CSS и только потом добавляем PHP. Верно?
Пока что всё. Многовато для первого раза... Наверное накопилось)
Жду дополнений и тапков. Только не кидайте в малиновый куст! :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Где ты вычитал эти "советы"?
 

twim32

Новичок
@c0dex, На просторах интернета. Парочку от себя добавил. По вашему мнению это бред?
 

Vladson

Сильнобухер

twim32

Новичок
Это не только бред, это вообще надо в юмор переносить...
Как всегда короче, сам нуб, а уже лезешь учить как надо )))
Мне самому интересно кого я собрался тут учить?))) Я прекрасно понимаю что тут сидят дядьки с таким стажем в РНР что мне дай бог здоровья понять хотя бы о чем они говорят. "Буду рад услышать мнение профессионалов." - я просто хотел узнать мнение людей которые уже давно занимаются разработкой.
Думал вы хоть скажете что можно намотать на ус, а что бред. Оказалось всё бред. Ну я рад что вас позабавил, уже не зря писал.
 

WMix

герр M:)ller
Партнер клуба
1 да (если о mvc), 2 нет (если процедура), 3 да (но не об этом), 4 нет (но смысловая нагрузка присутствует), 5 бред (пока понимаешь о чем), 6 определенно нет (и команды нижнего уровня), 7 да/нет (вообще о вью), 8 нет (по ситуации), 9 наоборот (unit->code), 10 нет, (кто прототипами, кто моделями думает)
 

Vladson

Сильнобухер
что можно намотать на ус, а что бред
Всё в первом посте бред. Всё.

№1 например. У настоящего профи, нет понятия HTML и РНР и прочее.
Есть код, есть код реализующий логику, есть код реализующий представление, есть те и другие части кода которые вообще на первый взгляд вуду-магия, а HTML может вообще не быть, да, даже на сайте можно обойтись без HTML (точнее он будет но в коде в явном виде его не будет, ни в начале, ни в конце)

Если руководитель проекта захочет HTML в конце, будет в конце, если нет то можно напихать в начало, и то и другое можно реализовать красиво и без говнокода.
 

twim32

Новичок
1 да (если о mvc), 2 нет (если процедура), 3 да (но не об этом), 4 нет (но смысловая нагрузка присутствует), 5 бред (пока понимаешь о чем), 6 определенно нет (и команды нижнего уровня), 7 да/нет (вообще о вью), 8 нет (по ситуации), 9 наоборот (unit->code), 10 нет, (кто прототипами, кто моделями думает)
Краткость - сестра таланта :) И на этом спасибо. Хотя... Чтобы я действительно понял зачем и почему, мне нужен опыт. А его у меня нет...

Всё в первом посте бред. Всё.
№1 например. У настоящего профи, нет понятия HTML и РНР и прочее.
Есть код, есть код реализующий логику, есть код реализующий представление, есть те и другие части кода которые вообще на первый взгляд вуду-магия, а HTML может вообще не быть, да, даже на сайте можно обойтись без HTML (точнее он будет но в коде в явном виде его не будет, ни в начале, ни в конце)
Если руководитель проекта захочет HTML в конце, будет в конце, если нет то можно напихать в начало, и то и другое можно реализовать красиво и без говнокода.
Руководителя нет... Вообще никого нет у кого можно было спросить. Я самоучка. HTML и CSS освоил благодаря сайтам и ютюбу. Работаю в типографии, а это сами понимаете... вообще не то пальто. Просто мне нравится сидеть вечерами после работы и разбираться в том, что для меня дикий лес. И когда что-то получается - ловлю кучу позитива. Вот и всё.

Я всё-таки извлёк один единственный урок: надо меньше залипать на туторах в ютюбе и читать много и очень много литературы по этому языку. В общем, всем спасибо!
 

Vladson

Сильнобухер
литературы по этому языку
Не по языку !!!

Язык это средство достижения цели, а программирование это нечто шире. Это и постановка целей, и выбор средств, и собственно путь к ним. Сначала ставите задачу, потом ищите как её решить, и потом решаете. Главное что делать нельзя это на слово верить всему что читаете на форумах или видите в видео на ютубах (в том числе и моим словам) ибо каждый нуб который ни черта не умеет, лезет учить других. Будьте выше этого, уважайте сами себя.
 

AmdY

Пью пиво
Команда форума
1) Найти книгу по php
2) Проверить год её издания
3) Прочитать книгу
4) Изучить symfony (можно другой фреймворк, но только если есть ментор с линейкой)

Кстати, может кто знает свежие книги для джуниоров?
 

Фанат

oncle terrible
Команда форума
Мне нравится пункт 9. На остальное, конечно, без слез не взглянешь.

1. В целом верно. foreach в хтмл писать можно.
2. В оригинальной цитате нет ни слова про комментарии. "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." В целом, умение писать комментарии - это искусство. Их не должно быть слишком много, но неочевидные моменты они должны описывать
3. верно
4. Надо не заучивать шаманские заклинания, а понять как работет пхп. Нет ни малейшей проблемы сделать хидер самой последней строчкой в скрипте, после десятка инклюдов. Вопрос тут не когда делать хидер, а когда начинать вывод. При нормальном разделении логики и представления вопрос с хидером вообще не стоит.
5. Опять шаманизм от непонимания, как что работает. Сделать обычный пхп файл и оставить его в покое
6. Этих функций не существует
7. противоречит п.1. Если у тебя весь вывод в хтмл, то каким боком тут echo? В любом случае это спор тупоконечников с остроконечниками. Если кавычки взрывают тебе мозг, иди работать дворником.
8. Открою страшную тайну. К имени поля можно обращаться через имя таблицы (user.id, user.name, user.password), (product.id, product.name, product.price) и при этом сохраняется возможность избегать этой писанины, когда она не нужна
9. Все правильно. Это основы отладки, без которых никуда.
10. Формально - бред. Но если ты плаваешь в хтмл и еще не совсем представляешь, как работает веб-сайт, то действительно - сначала лучше нарисовать и посмотреть как выглядит. Тут как с хидером - если понимаешь, что делаешь, то можно делать как угодно.
 

twim32

Новичок
Да, товарищи... Я поработал еще месяц с пхп и сам не понял какую ахинею я написал месяц тому назад. Аж стыдно! В любом случае, благодарю тех, кто смеялся и тех, кто высказал своё мнение по каждому пункту. Ведь благодаря первым я всерьез задумался над своей писаниной, а остальные внесли ясность в мою всё еще деревянную голову.
 
Сверху