Несколько логических вопросов программирования - PullRequest
5 голосов
/ 23 сентября 2010

Я недавно начал программировать, и это сообщество помогло мне понять многие вещи, о которых я не знал.Тем не менее, многие известные программисты проинструктировали меня о некоторых шаблонах, о том, как я должен кодировать и как я не должен писать коды.Хотя я с благодарностью принял их предложение, я многое не мог понять.

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

MySQL

  1. Почему многие кодеры давали мне большие пальцы, когда я использовал * в операторе выбора?Почему они предложили использовать entityname.tablename, даже если иногда мне нужны почти все данные из таблицы?

  2. Хорошо, если мой код часто посещает базу данных на одной странице, например, 5-8 запросов?Чтобы быть более точным на странице, я хотел бы обновить значение, вставить значение, подсчитать строки, суммировать значения и так далее.

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

Frameworks

Когда я начал изучать PHP, я мало знал о программировании и о веб-технологиях, хотя я изучал такие популярные компьютерные языки, какC, C ++, .NET, Java и т. Д. В моем колледже.Это был только формальный и теоретический предмет, который я выучил, и когда я понял, что хочу стать веб-разработчиком, интернет был моим лучшим другом, и сообщество помогло мне.

Теперь, когда я начал свой путь обучения программированию, я сам поставил перед собой некоторые цели и задачи, я хочу стать профессиональным PHP-разработчиком, я хочу освоить HTML, JS, CSS, MySQL и т. Д. Мой вопросвот

КАК МНЕ КАК МНЕ ДЛЯ УЧИТЕЛЕЙ?

Ответы [ 5 ]

7 голосов
/ 23 сентября 2010

MySQL

Использование * в порядке.Когда вы начинаете сильно усложнять запросы MySQL - объединять и сравнивать таблицы - тогда вы захотите использовать entityname.tablename, чтобы не запутаться.

Следующий вопрос слишком субъективен.Это зависит от вашего сервера и эффективности вашего скрипта.Это также зависит от того, сколько людей будет использовать скрипт.Очевидно, что, как и во всем, чем меньше вы его используете, тем лучше.Если вы можете сделать один SQL-запрос вместо 5, то сделайте это, но если у вас будет только несколько сотен человек, просматривающих ваш блог, я бы не стал слишком беспокоиться.То же самое с функциями.Очевидно, что гораздо лучше поместить все в функции.Это помогает в долгосрочной перспективе, потому что вам нужно будет только отредактировать скрипт в одном месте, чтобы внести изменения.Скажем так: если вы копируете и вставляете код, вы должны использовать функции.Но тогда, если ваш сценарий состоит всего из 1 файла, длиной 200 строк, я не буду беспокоиться, если вы не захотите.оценить полезность.Очевидно, что изучение таких вещей, как Zend или Mage, является мощной средой, которая поможет вам создавать гораздо более эффективные и сложные веб-проекты.Однако для учащихся это может сбить вас с толку.Я бы определенно сказал не пытаться изучать их, пока вы полностью не разберетесь в PHP.Надеюсь, тогда у вас будет достаточно глубокое понимание, что у вас не будет проблем, если вы столкнетесь с этим.Вы упускаете основной смысл языка, если вы изучаете основы.Например, вы не будете изучать javascript, если будете просто изучать jquery.Вы немного научитесь, но никогда не поймете этого полностью.

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

3 голосов
/ 23 сентября 2010

Достойные аргументы для неприязни к выделению всех в SQL: http://www.joelango.com/2007/04/30/why-you-should-never-use-select-star/

О количестве запросов: это вопрос производительности. Основное правило - оптимизировать, когда производительность действительно становится проблемой. Если вы работаете с сайтом, который обрабатывает тысячи запросов в минуту, возможно, вам придется начать беспокоиться. В противном случае, это просто не имеет значения.

Об фреймворках: если вы хотите изучить PHP на его основе, то пока избегайте фреймворков. В противном случае, если вы действительно хотите подключиться и добиться цели, начинать с фреймворка должно быть хорошо. Например, я сам не знаю JavaScript, но я отлично работаю с JQuery (библиотека / фреймворк JavaScript).

2 голосов
/ 23 сентября 2010

как и Томас Клейсон говорит, что использование * подходит для простых запросов, но когда у вас есть сложные операторы соединения, вы должны указать поля и дать таблицам имя (например, someTable как a) и использовать a.someField для организацииваш запрос.

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

Что, надеюсь, поможет мое скромное мнение, в отношении

1 голос
/ 23 сентября 2010
  1. При использовании * в операторе SELECT: хотя это совершенно допустимый синтаксис, его часто рекомендуется использовать по двум причинам.Один, скорость;два: качество кода.С * не видно, какие строки вы запрашиваете (и получаете) и в каком порядке;если база данных ALTERed и строки добавлены, вы также получаете их, и если порядок строк изменяется, результаты будут довольно неожиданными.Если вы укажете нужные строки, это приведет к более безопасному и быстрому коду.

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

Выполнение отдельных вызовов БД с помощью операторов SQL сильно замедлит обработку, поскольку каждый из них должен быть отправлен, получен, скомпилирован и интерпретирован, а результаты отправлены обратно - просто чтобы получить их снова в другом вызове.хранимые процедуры (или «пользовательские функции») более эффективны, а также намного безопаснее от атак, таких как инъекция.Если вы можете сделать их, не жертвуя гибкостью или другими нужными вам аспектами, сделайте это.Но не делайте этого, пока вы все еще находите свой путь - Преждевременная оптимизация - корень всего зла , говорит Он.

Рамки весьма полезны,но на самом деле не очень хорошая идея для учеников / начинающих.Они заставляют вас пропустить важные части того, что вы должны изучать, и ограничивают ваше мышление.Чтобы судить о преимуществах и недостатках фреймворков, выбирать фреймворки и преодолевать их недостатки, сначала вы должны хорошо знать основы.

Так что изучайте свои основы, и как только выкрепко держите их, вы можете начать использовать рамки.

1 голос
/ 23 сентября 2010

Хотя я согласен с Thomas re: frameworks, я должен не согласиться или хотя бы расширить то, что он говорит о MySQL.

Хотя в большинстве случаев технически нет ничего плохого в использовании * inЗапросы SELECT, расширение имен столбцов упрощает понимание оператора и повышает самодокументирование для других разработчиков, которые могут присутствовать в вашем коде.Они могут посмотреть на запрос и посмотреть, какими свойствами должен обладать объект строки.Кроме того, * также немного менее эффективно во время запроса.Это действительно не о чем беспокоиться, если вам не нужна только часть доступных столбцов.

Что касается нескольких запросов, это зависит.Если выполнение 10 SELECT для определенных элементов выполняется быстрее, чем выполнение 1 SELECT для нескольких элементов и их разбор, запустите 10 SELECT.Гораздо лучше выполнять несколько маленьких и быстрых запросов, чем один большой и медленный.Очевидно, что каждое приложение будет отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...