|
|
|
| Как только я выучил основы PHP, у меня появилось очень много идей которые можно было бы воплотить. Я начал свою работу :)
Но программируя, я пишу код незная правильно ли я его пишу...
Как мне знать что мой код правильно написан? Как знать что он будет быстро работать? Как знать нет ли более выгодной реализации задачи? | |
|
|
|
|
|
|
|
|
для: vitali
(18.02.2008 в 13:11)
| | Спасибо! Почему я не заметил этой статьи... :)
Вот хотел спросить, как лучше писать строки, так:
echo "переменная = ".$var."<br>";
|
вот так:
echo "переменная = {$var}<br>";
|
или так:
echo 'переменная = '.$var.'<br>';
|
В первом случае строка записанная в двойные кавычки дополнительно обрабатывается, проверяя нет ли там переменной чтобы ее обработать.
Во-втором случае переменная в кавычках интерполируется, и втретьем - текст выводидся так как есть, и переменная выводится так как есть. Лично я привык все делать 3 способом, но строка получается хуже читаемой...Как лучше? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 13:21)
| | Чем меньше символов, тем лучше, поэтому для простых переменных, с точки зрения читабельности лучше писать так
<?php
echo "переменная = $var<br>";
?>
|
Если интерполируются сложная конструкция, например, элемент двумерного массива, то лучше писать следующим образом
<?php
echo "переменная = {$var[0][1]}<br>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.02.2008 в 13:44)
| | При всем уважении к товарищу cheops'у, хочу возразить. Считаю что правильно будет все же так
<?php
echo 'переменная = '.$var.'<br/>';
?>
|
или так
<?php
echo 'переменная = '.$var[0][1].'<br/>';
?>
|
Т.е. одинарные кавычки, двойные только если переменных относительно много. | |
|
|
|
|
|
|
|
для: Gemorroj
(18.02.2008 в 13:54)
| | Еще такой вопрос:
А количество коментариев не замедляет работу скрипта? Скажем если коментариев в программе больше чем самого кода и файл уже будет в два раза больше. Скорость меньше не будет? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 14:53)
| | Теоретически влияет, но очень очень мало. Фактически можно сказать не влияет. Комментарии следует писать. | |
|
|
|
|
|
|
|
для: Gemorroj
(18.02.2008 в 13:54)
| | А критерий правильности какой? | |
|
|
|
|
|
|
|
для: cheops
(19.02.2008 в 11:31)
| | Все тот же, читабельность и скорость работы. Возможно это обусловлено просто привычками, мои привычки толкают меня на написание именно таким способом. | |
|
|
|
|
|
|
|
для: cheops
(18.02.2008 в 13:44)
| | cheops, в вашей же книге читал, что строка заключенная в двойные кавычки подвергается дополнительной проверке на существованиев ней данных которые нужно обработать, т.е. таким образом затрачиваются лишние ресурсы...но если учитывать то, какое малое время на подобную обработку используется, то я думаю что значительного ускорния в работе программы использование одинарных кавычек не несет. Так как же лучше? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 14:05)
| | Знаете из песни - "только капля за каплей из крана вода". Учет подобных мелочей в конечном итоге может сэкономить немало ресуров. | |
|
|
|
|
|
|
|
для: Gemorroj
(18.02.2008 в 14:11)
| | C Вами полностью согласен, добавлю этот момент к своему хорошому стилю программирования :) | |
|
|
|
|
|
|
|
для: Gemorroj
(18.02.2008 в 14:11)
| | У меня подобная школа: 'переменная: '.$var.'<br>';-это самый быстрый способ из всех приведенных. Но не думаю,что это главное-есть и много других вещей,о которых нужно помнить-например,малопонятные названия,большие циклы,слишком много переменных,плохая обработка входящих данных,игнорирование принципов юзабилити... | |
|
|
|
|
|
|
|
для: Akdmeh
(18.02.2008 в 14:50)
| | Вот здесь уже интересно... :)
"малопонятные названия"
У меня бывают случаи, когда нужно именовать переменные (или ключи массива) в зависимости от раздела где эта переменная применяется.
Например, все переменные связанные с отправкой email сообщений. Я их именую так: $email_{переменная}. Лично для меня удобно, но потом возникают случаи, когда переменные делятся по разделам и подразделам и т.д. Т.е. мне приходится писать все эти префиксы перечисляя, например, $email_send_ok и т.д. Как быть в таком случае, когда таких префиксов собирается целая куча?
aaa | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 16:34)
| | $email['send']['ok']
$email_sent | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 14:05)
| | Если речь идёт о создании читабельного кода, то лучше пренебрегать скоростью выполнения программы. Читабельный код, содержит минимальное количество символов - просто переменную в строке зачастую проще воспринимать, чем переменную обрамлённую кавычками и точками. | |
|
|
|
|
|
|
|
для: cheops
(19.02.2008 в 11:30)
| | А вот мне как раз наоборот. Отдельностоящие переменные редактор подсвечивает синим, а в строке красным, как и всю строку. Ещё и одинарные кавычки проследить нужно, ведь в них переменная не интерполируется. Так что это спроный вопрос что читабельнее выглядит. | |
|
|
|
|
|
|
|
для: Саня
(19.02.2008 в 12:36)
| | Ок, всем спасибо!
насчет коментариев, то думаю я буду их писать как можно больше. Мне очень важно чтобы скорость работы была высокая, в то же время, я не хочу в будущем заново вспоминать то, что я раньше писал...
Вот еще хотел спросить, а как насчет большого количества переменных? В каждой книге говорится не быть жадными на количество, но а если этих переменных будет 10 тыс.? Скорость работы скрипта будет падать? | |
|
|
|
|
|
|
|
для: FireTiger
(19.02.2008 в 14:03)
| | Давайте не будем планировать даже одну тысячу - их столько не будет при правильном проектировании | |
|
|
|
|
|
|
|
для: bronenos
(19.02.2008 в 14:12)
| | А объекты не тормозят скорость работы? | |
|
|
|
|
|
|
|
для: FireTiger
(19.02.2008 в 18:25)
| | В PHP тормозят. | |
|
|
|
|
|
|
|
для: cheops
(20.02.2008 в 02:14)
| | Т.е. их нужно использовать в самом обрезаном виде, чем меньше тем лучше? | |
|
|
|
|
|
|
|
для: FireTiger
(20.02.2008 в 06:42)
| | Да нет, их как и везде следует использовать, когда это позволяет проще решить задачу, добить какой-то выгоды (сократить время разработки, уменьшить размер кода, увеличить повторное использование кода). Используя PHP вместо ассеблера или C вы расплачиваетесь скоростью, но вас это не волнует, так как скорость вашей разработки и количество ошибок в Web-приложении, а следовательно и его качество возрастает при таком переходе значительно. Если вы знаете зачем используете классы - это всегда выгодный обмен скорости на что-то ещё. Если вы не знаете зачем вы решили использовать объектно-ориентированный подход, даже если скорость не падает - использовать его не стоит :) | |
|
|
|
|
|
|
|
для: cheops
(20.02.2008 в 13:31)
| | Спасибо, я все понял, ооп стоит использовать когда есть возможность значительно упростить рзработку и сократить время. | |
|
|
|
|
|
|
|
для: cheops
(19.02.2008 в 11:30)
| | >Читабельный код, содержит минимальное количество символов
Это для кого как.
Буквально вчера меня попросили помочь поделить csv--файл на группы строк по категориям.
Я набросал фрагмент, а потом его пришлось искусственно раздувать мусором, чтобы подчеркнуть логику работы.
Вот три оформления в сущности одного и того же фрагмента,
который из csv-файла строит набор групп строк,
по критерию пустотой ячейки в первом столбце.
Фрагменты приведены в порядке регресса:
<?php
$csv = file("file.csv", 'r');
$list = array(); $idx = 0;
foreach($csv as $line)
$list[$line += $line[0] != ';'] = trim($line);
?>
|
<?php
$csv = file("file.csv", 'r');
$list = array(); $idx = 0;
foreach($csv as $line)
{
$line += $line[0] != ';';
$list[$idx] = trim($line);
}
?>
|
<?php
$csv = file("file.csv", 'r');
$list = array(); $idx = 0;
foreach($csv as $line)
{
if($line[0] != ';')
{
++$idx;
}
$list[$idx] = trim($line);
}
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.02.2008 в 14:25)
| | >Фрагменты приведены в порядке регресса
т.е. это лучший вариант?
<?php
$csv = file("file.csv", 'r');
$list = array(); $idx = 0;
foreach($csv as $line)
$list[$line += $line[0] != ';'] = trim($line);
?>
|
Прямо страшно даже, в одной теме возражу и cheops'у и Trianon'у =D
Ведь разработчики PHP советуют чаще использовать скобки, т.е.
в данном случае вот так
<?php
$csv = file("file.csv", 'r');
$list = array(); $idx = 0;
foreach($csv as $line) {
$list[$line += $line[0] != ';'] = trim($line);
}
?>
|
| |
|
|
|
|
|
|
|
для: Gemorroj
(19.02.2008 в 14:35)
| | >>Фрагменты приведены в порядке регресса
>т.е. это лучший вариант?
Т.е этот вариант набирался в редакторе.
А остальные строились путем перегруппировки строк и разбавления кода скобками.
> в данном случае вот так
Что - так?
И еще... Это Ваше личное возражение? Или возражение неких разработчиков PHP? | |
|
|
|
|
|
|
|
для: Trianon
(19.02.2008 в 15:16)
| | Естесственно это мое личное возражение, основанное на рекомендациях разработчиков интерпретатора.
>Что - так?
Скобки там в коде добавил. | |
|
|
|
|
|
|
|
для: Gemorroj
(19.02.2008 в 15:27)
| | Могли бы просто выбрать второй или третий вариант. Они там уже были. | |
|
|
|
|
|
|
|
для: Trianon
(19.02.2008 в 14:25)
| | В первом и втором вариантах опечатка?)
Имхо самый "приятный" это 3=) | |
|
|
|
|
|
|
|
для: Poison
(20.02.2008 в 08:17)
| | скорее во всех трех.
<?php
$csv = file("file.csv");
$list = array(); $idx = 0;
foreach($csv as $line)
$list[$idx += $line[0] != ';'][] = trim($line);
print_r($list);
?>
|
<?php
$csv = file("file.csv");
$list = array(); $idx = 0;
foreach($csv as $line)
{
$idx += $line[0] != ';';
$list[$idx][] = trim($line);
}
print_r($list);
?>
|
<?php
$csv = file("file.csv");
$list = array(); $idx = 0;
foreach($csv as $line)
{
if($line[0] != ';')
$idx++;
$list[$idx][] = trim($line);
}
print_r($list);
?>
|
| |
|
|
|