Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (12) [1] 2 3 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> хочу научится ООП, научите ООП
PHPLIVE  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 85
Пользователь №: 32932
На форуме: 5 лет, 1 месяц, 11 дней
Карма: -3




Читал во многих книгах про ооп, на многих ресурсах в голове каша помогите разобраться с нуля, а то пишу в процедурном стиле.
А хочется уметь читать php библиотеки, подключить их. Вообщем без наставника тяжело.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2068
Пользователь №: 36605
На форуме: 4 года, 6 месяцев, 2 дня
Карма: 113




почитай сначала про SOLID принципы =)
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 2047
Пользователь №: 38654
На форуме: 3 года, 7 месяцев, 15 дней
Карма: 47




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

1. Надо начать в текущем или новом приложении, строить уровень абстракции, который будет объектым, но внутри будет содержать функции. Просто берешь функции группируешь в классы, методы у класса вызываешь не статически, а динамически, то есть сначала инстанс класса создаешь, а потом у него вызываешь методы. Это научит тебя инкапсуляции
2. Заменить все сложные ассоциативные массивы на DTO объекты. Это такие объекты которые имеют сеттеры и гетторы, в которые пихаешь данные. Делать в пределах построенного уровня абстракции из 1 пункта. Также переписать методы где передается больше 3 параметров на DTO, что бы вместо 4 параметров передавался объект, в котором структура была описана. Этот пункт научит тебя давать типы данным в твоём приложении.
3. Постепенно начинать переписывать свой код с использованием паттернов, но это только после первого и второго пункта. Потому что если ты выполнишь первые два пункта, то паттерны ты просто вынужден будешь применять даже не осознавая это.

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


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

Мой блог | SetCMS
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 2047
Пользователь №: 38654
На форуме: 3 года, 7 месяцев, 15 дней
Карма: 47




Ах да, я тут переписываю систему https://bitbucket.org/cheevauva/setcms, которая написана была на функциях и использовала файлы, так вот там будет ООП. Можешь следить за комитами, код там довольно простой.


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

Мой блог | SetCMS
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 24 дня


Офигеть, как объяснили. Кашу в голове в стройный ряд алгоритмов переиначили...

Круть.

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

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

Абстракции, уровни, слои и всякая ересь. Усложнить, дабы никто ничего не понял.

В двух словах ООП объяснить конечно довольно сложно, но основы на столько просты, что если ты реально умеешь прогать процедурно, то остальное такой пшик...

Двай попробую в двух словах.

Хочется умножить два на два. Да берем и умножаем:

$result = 2 * 2;


Но нет, так не годится. А вдруг захочется не на 2 а на 5 умножить?

Вводим переменную.

$var = 2;
$result = 2 * $var;


А вдруг не 2 нужно... Давай еще одну

$var = 2;
$yet = 2;
$result = $yet * $var;


А если много где?

$var = 2;
$yet = 2;
function vau($var, $yet)
{
return $yet * $var;
}
$result = vau($var, $yet);


А если вдруг захочется в разных местах такую функцию? Класс!!!

$var = 2;
$yet = 2;
class Ogogo
{
public function vau($var, $yet)
{
return $yet * $var;
}
}

$ogogo = new Ogogo;
$result = $ogogo->vau($var, $yet);


Эволюция.

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

Нужно только назвать действия более понятно. Нужно умножить одно число на другое - да нет проблем.

$calculator = new Calculator;
$result = $calculator->multiply(2, 2);


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

Это и есть ООП. А всё остальное - от лукавого. Придумки оверинжениров. :)

Если хочешь научиться ООП ради ООП - ну что ж, еще одним программистом меньше. :(
Я советую не торопится. Иначе попадешь в рабство фастфуда. ООП нужно пробовать издалека, веточкой, а не жрать полной ложкой, потому что так разрекламировано.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15409
Пользователь №: 4190
На форуме: 9 лет, 6 месяцев, 12 дней
Карма: 470




Я знал, что Николай не пройдет мимо темы smile.gif

И я присоединюсь к его совету о том, что не надо торопиться.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1361
Пользователь №: 41686
На форуме: 2 года, 9 дней
Карма: 25




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

Самое сложное в ООП это переключить мозги. Начать умозрительно видеть парадигму, подобно тому как из шума получается 3D картинка, если специальным образом изменить взгляд. https://s-media-cache-ak0.pinimg.com/736x/8...en-pictures.jpg

chee дал очень хорошие советы, но от себя добавлю, что паттерны всё же нужно изучать отдельно, можно сразу же начать с них, будет не понятно зачем их юзать, но они будут осаживаться в голове. Чего категорически делать нельзя, так это применять их бездумно. Где и когда заюзать со временем придет само и сомнений не вызовет. =) Но к этому моменту нужно знать что применять. До простых паттернов можно додуматься самому, но далеко не до всех и не сразу.

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

Еще очень полезно для начинающего ООП-шника почитать про антипаттерны. Некоторые из них я бы рекомендовал по первости использовать как абсолютные заптерительные правила. Особенно BaseBean, Сall super, God object, Object cesspool. Такая тактика поможет остаться в нужном русле, даже если некоторым из них строго следовать (в определенных редких случаях) не стоит. То есть совсем уж не забывать, что подходы должны помогать, а не мешать.

Ну и, конечно, не забывать, что ООП в целом это не о машинной производительности, а про удобство программирования и про экономию гораздо более дорогостоящего ресурса - времени программиста.


--------------------
5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6098
Пользователь №: 18498
На форуме: 8 лет, 21 день
Карма: 256




Цитата (chee @ 2.08.2017 - 18:01)
Ах да, я тут переписываю систему https://bitbucket.org/cheevauva/setcms, которая написана была на функциях и использовала файлы, так вот там будет ООП. Можешь следить за комитами, код там довольно простой.

Почему тесты не пишешь?


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 2047
Пользователь №: 38654
На форуме: 3 года, 7 месяцев, 15 дней
Карма: 47




Michael, я в творческом полёте rolleyes.gif Мне пока, что нужно слепить новую архитектуру, которая не будет конфликтовать со старым кодом. А уже потом покрывать тестами и рефакторинг проводить можно.

Но это всё отговорки, просто в этом я не силён. И пока что не знаю, что имеет смысл тестировать, а что не имеет.


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

Мой блог | SetCMS
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6098
Пользователь №: 18498
На форуме: 8 лет, 21 день
Карма: 256




Цитата (chee @ 3.08.2017 - 06:42)
Michael, я в творческом полёте  rolleyes.gif Мне пока, что нужно слепить новую архитектуру, которая не будет конфликтовать со старым кодом. А уже потом покрывать тестами и рефакторинг проводить можно.

Но это всё отговорки, просто в этом я не силён. И пока что не знаю, что имеет смысл тестировать, а что не имеет.

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

Это из данного вебинара на 7 часов.

Кто знает, может как раз у тебя и получится покрыть систему чистыми модульными тестами по максимуму. Я с yii2 в основном пока работаю, поэтому увы тут такое невозможно. И все из-за архитектуры.


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 2047
Пользователь №: 38654
На форуме: 3 года, 7 месяцев, 15 дней
Карма: 47




Цитата (Michael @ 3.08.2017 - 10:23)
Потому что тесты - это как раз об архитектуре.

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

Ну и конечно, что даст написание тестов этому проекту. Например, если я заморочусь, что это даст? Ты обратишь внимание и напишешь для неё модуль?


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

Мой блог | SetCMS
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6098
Пользователь №: 18498
На форуме: 8 лет, 21 день
Карма: 256




Цитата (chee @ 3.08.2017 - 08:34)
Ну и конечно, что даст написание тестов этому проекту. Например, если я заморочусь, что это даст? Ты обратишь внимание и напишешь для неё модуль?

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


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2407
Пользователь №: 26852
На форуме: 6 лет, 5 месяцев, 2 дня
Карма: 131




Ron оффтоп rolleyes.gif
Скрытый текст
Зачетная картинка теннисиста ))

PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 24 дня


Цитата (Ron @ 2.08.2017 - 20:46)
Если человек подошел к пониманию необходимости ООП, значит созрел. Пришло его время пересаживаться от детского стола к взрослому.

Классное сравнение. smile.gif Я сейчас внука воспитываю, точно подмечено. Чтобы заставить кушать, нужно примерно так и сказать - ты же взрослый мальчик! Садись за взрослый стол, бери большую ложку и кушай. Смех в том, что он от этого взрослым не станет. Только может почуствует себя тковым, будет хвастаться перед сверстниками - я большой! Со взрослыми дядьками за одним столом кушал!

Дело в том, что в подавляющем большинстве случаев сайтостроения, каноническое ООП не нужно вовсе. И изучать его нужно осторожно, не кидаясь в омут с головой. Потребность в паттернах придет с опытом. И потребность именно в тех, которые реально полезны в данный момент. А не потребность налепить 36 паттернов в 12 строках кода (пример из жизни, описан Фаулером). Причем учить их теоретически вообще нет смысла - только время тратить.

Вот как часто используется патерн Flyweight? Или Servant? Или Visitor? Да и многие еще настолько специфичны, что может ниогда в жизни и не понадобятся.

Я говорил - в подавляющем большинстве случаев сайтостроения (на фрилансе особенно) совершенно не требуется всё это ООП. Единственное, что важно - можно сморщить репу, мол я со взрослыми дядьками за одним столом кушаю.
Цитата (Ron @ 2.08.2017 - 20:46)
Даже опытным программистам рекомендуется время от времени повторять паттерны, потому что редкоиспользуемые забываются.
Вот именно. Они забываются, потому что не нужны никому, и не применяются даже опытными программистами. Посмотреть для ознакомления (палочкой потыкать) можно, но тратить время на доскональное изучение, да и на постоянное повторение еще... Мсье знает толк в извращениях.

Есть конечно отдельные интузиасты, для которых важен не результат, а сам принцип написания кода. ООП ради ООП. Для них не важна оптимальность, прозрачность, ремонтопригодность. Для них ООП - смысл жизни. И главный девиз - чтобы всем другим было понятно. Но пердимонокль в том, что те, кому это понятно, это далеко не все. И в итоге с таким кодом может работать небольшая группка посвященных, весьма дорогостоящих программистов. Хотя декларировалось, что "железо дешевле программиста". Как говаривал Черномырдин - хотелось как лучше, получилось как всегда.

Цитата (Ron @ 2.08.2017 - 20:46)
Еще очень полезно для начинающего ООП-шника почитать про антипаттерны.
Вот это другое дело. Только причем тут ООПэшники? Антипаттерны полезно знать любому программисту. Как впрочем и другие принципы (SOLID, KISS, DRY и так далее) которые применимы совершенно не обязательно только с ООП.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 2047
Пользователь №: 38654
На форуме: 3 года, 7 месяцев, 15 дней
Карма: 47




twin, соглашусь что на фрилансе не нужен ООП, фриланс рынок России это помойка там кроме джумл и вордпрессов ничего нет.

Цитата (twin @ 4.08.2017 - 07:42)
И в итоге с таким кодом может работать небольшая группка посвященных, весьма дорогостоящих программистов.

Это называется высокий порог вхождения, дорогостоимость вытекает из него и из-за востребованости это технологии. Смысл приводить это как довод против ООП, это плюс. Плюс понимание ООП это универсальная вещь, которую можно транслировать на другой язык. А процедурку на php, как опыт для другого языка ты транслируешь.

Ну да ладно, не хочу начинать это бессмысленный разговор.



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

Мой блог | SetCMS
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (12) [1] 2 3 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса