ООП : опрос + флуд

syfisher

TDD infected!!
Автор оригинала: betik
For ($i=0; $i<10; $i++) DidNothing();

Function DidNothing()
{
global $i; /*имхо оч. удобно*/

$i++;
if($i=1) echo "one";
else echo "not one";

}
А что нельзя DidNothid($i) сделать? Если такой подход, как ты указал применять - то правда - повеситься можно.

Мало того, скорее всего при таком подходе можно будет запросто нарваться на конфликт имен в одном пространстве имен и искать багу неделями.

Если уж пользоваться глобальными переменными, то только для получения каких-либо часто используемых сервисов (которые тоже легко заимлементить в виде отдельных функций). То есть getI() как кратний вариант. В ООП туже роль может выполнять Registry.

-~{}~ 28.04.05 12:54:

Автор оригинала: fixxxer
Всё ясно. Комментарии излишни.
:D
 

betik

Новичок
fixxer, а что не так?
Каким образом ещё ты можешь решить проблему????
Да никаким!
Так ты имеешь 100% гарантию, что ты будешь использовать внутреннюю переменную $i ( если !!!!_СПЕЦИАЛЬНО_!!!! не напишешь global)... Сколько бы гемора было если бы было не так? Особенно чужие ф-ии в свой код вставлять?..

-~{}~ 28.04.05 10:13:

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

betik

Новичок
=) не понял ты меня =)
Я хочу использровать внутреннюю переменную $i. И глобала там не должно было быть, я его для иллюстрации вплёл.
Мне на внешнюю $i вообще наплевать. А когда глобал $i - наплевать не получается наплевать. А если было бы global $i по умолчанию - то /*имхо не оч. удобно*/ было бы =)

Пример дурацкий...... получился.
 

Brezee

Новичок
Пишу
2. И структурный и объектный

II. Флуд
исходя из потребностей web, больше получаеться структурного.
 

Crazy

Developer
Автор оригинала: betik
Так давайте откинем доводы о моей глобальной тупости, ок?
Я уже назвал тебя тупым?

For ($i=0; $i<10; $i++) DidNothing();

Function DidNothing()
{
global $i; /*имхо оч. удобно*/

$i++;
if($i=1) echo "one";
else echo "not one";

}
Всего один вопрос: ты действительно ТАК пишешь программы?
 

Screjet

Новичок
Есть мнение, что автор топика не только ничего не ведает об ООП (что простительно), но и не в курсе что такое процедурное программирование (что не простительно).

"Сколько пропало хороших механиков, врачей, композиторов.." (с)Crazy

betik
Одумайся пока не поздно, может ты выбрал не ту профессию?
 

itprog

Cruftsman
Есть мнение, что автор топика не только ничего не ведает об ООП (что простительно), но и не в курсе что такое процедурное программирование (что не простительно).
Простите, но вы можете сказать что такое ООП? По-моему четкого определения ООП дать нельзя, каждый это понимает по-разному.

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

Crazy

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

Screjet

Новичок
itprog
В книгах описаны классические подходы. Это не стили. Но для начала нужно овладеть классическими приемами. Прочитав умную книгу ты удивишься тому, что все твои выдуманные парадигмы, рожденные опытом, давным давно устали пережевывать.
 

betik

Новичок
Нет, я так не пишу. Это всего лишь просто пример, причём неудачный.
А что вы ТАКОГО в нём увидили?

Приведите УДАЧНЫЙ пример.
 

Crazy

Developer
Автор оригинала: betik
Это всего лишь просто пример, причём неудачный.
Ok. Давай другой.

Приведите УДАЧНЫЙ пример.
Не понял. Ты хочешь, чтобы МЫ привели удачный пример техники, которую МЫ считаем вредной, а ТЫ -- полезной?

Оригинально.
 

betik

Новичок
Crazy. Я не считаю полезным использование global, я говорю о том, что это очень хорошо, что так сделано. Если бы не было указано global $i в привед. ф-ии, то мы 100% знали бы, что используется внутр. переменная ф-ии ($i) . И наоборот, если мы указываем global $i то мы заведомо знаем, что мы используем внешнюю $i! !!!. Этим примером я пытался показать полезность global в данном ракурсе!

-~{}~ 28.04.05 14:33:

Кстати, вдогонку... Какими такими "качествами" надо обладать, дя того чтобы "быть программистом" ?
 

Crazy

Developer
Тебе уже показали, как переписывается твой пример без global вообще. В этом случае еще большая ясность.

Итак, ждать от тебя пример, который ты сам считаешь правильным?

-~{}~ 28.04.05 17:35:

Автор оригинала: betik
Кстати, вдогонку... Какими такими "качествами" надо обладать, дя того чтобы "быть программистом" ?
Последовательным мышлением. В первую очередь.
 

Alexandre

PHPПенсионер
1. Вы пишите только струтурный код
2. И структурный и объектный
3. Всюду объекты
4. some more

II. Флуд
Где нужно, а где не нужно использовать ООП?
я за 2
в простых скриптах использую пхп
но при реализации что-то серьездного использую ООП

теперь, как просил бетик, немного Флуда:

признаюсь, что часть топика я не читал, по этому возможно мою мысль уже повторяли:

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

ООП быстро проникло в winAPI (про историю др ОС я не знаю) и системы IDE разработок ( Типа ДевСтудио или Дельфи ) и работа Пользователя стала заключаться в реализации одного единственного класса. Правильно ли это с точки зрения эффективности кода??

со временем ООП стало завоевывать и WEB

конечно есть свои плюсы.
Класс mail мне заменяет сразу 5 разных функций работы с мылом. Хотя можно объявить файл mail.php и положить туда эти пять функций. отличий особых нет.

На эту тему был флуд, что эффективнее, использованиеклассов или просто функций? К единому мнению так и не пришли.

если я гружу класс из пяти функций, а использую из него только одну, то он у меня памяти в пять раз съедается больше.
возможно я и не прав.

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

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

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

betik

Новичок
...Честно говоря я global передаю функциям $dbprefix - префикс таблиц БД... Да и то только из-за лени.

Я же не спорю, что пример приведённый выше (более правильный) чем-то плох? Я же спорю с тем, что global это есть плохо... ИМХО это не плохо. Плохо бы было если было бы наоборот =\. И я не понимаю с чем вы не согласны, господа.
 

fixxxer

К.О.
Партнер клуба
Автоматический доступ к глобальным переменным изнутри функции, как это сделано в Си - да, было бы хуже. Если ты об этом.
 

Crazy

Developer
Автор оригинала: Alexandre
ООП было изобретено для того, чтоб строить программу из много раз повторяющихся и похожих кусков кода.
Опа. А модульное, в таком случае, зачем? :)

-~{}~ 28.04.05 18:16:

Автор оригинала: betik
Да, об этом.
Об использовании КЛЮЧЕВОГО СЛОВА?
 
Сверху