[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните в чем преимущества ООП?
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
chee
Цитата (twin @ 31.10.2014 - 13:34)
Гы. Вот колесо от моей машины, переделайте так, чтобы двиготель не троил.

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

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
GET
bestxp
Цитата
ООП, функционалка или императивка и тд должны и просто обязаны следовать SOLID, я сейчас нахожусь в лагерее ООП и хочу еще заглянуть в функциональный, и общение с разными программистами приводит к одному SOLID GRASP KISS DRY DDD и не менее, то что написано было про мальчика это откровенное говно, оно не подходит под Single Responsibility principle , вы в своем классе заставляете всех подрят все делать, 1 класс = 1 ответственность


ты можешь, как то объяснить, что ты написал? Я без сарказма. Что это за слова?


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
S.Chushkin
Цитата (twin @ 31.10.2014 - 14:00)
Тут с какой стороны посмотреть. Если класс Girl умеет и писить и какать, у него тоже несколько ответственностей? Нет, он производит объект одного типа. Только девочку. Тут первичен объект, от того и ООП.

У меня класс умеет заставлять разные сущности только писить. Тоже одна ответственность. Просто я создаю не объекты, а действия.

А вот тут я с Вами согласен. Дело не в методах программирования, а в мышлении. Если разраб умеет мыслить категориями ООП, то разработка для него проста, легка, понятна, прозрачна и пр. Если же не умеет, то метод сложен и непонятен и другие методы кажутся ему превосходящими ООП. Как собственно и наоборот.
Выше абсолютно правильно сказали, - каждая задача требует своего подхода и инструмента. Это одна из аксиом в разработке.


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
bestxp
SOLID это принципы качественной архитектуры любого приложения, следование им ты будешь иметь чистый код, понятную архитектуру
GRASP качественные метрики хорошей архитектуры связность связанность и тд
KISS это принцип Keep It Simple Stupid ( делай это проще, тупица ) изначально не нужна излишняя сложность, эволюционируй, но делай все проще
DRY это Dont Repeat Yourself не повторяйся, пиши код который можно повторно использовать, а не копипастить
DDD - методологий посторения приложений основа которой это выделение предметной области и отделение бизнес логики от инфраструктуры, обычно разработка идет через TDD
TDD - Test Driven Development сначала был тест, потом был код для теста, то есть пишется некий код который может и не работать, но отображает то что на входе и что в результате на выходе, потом пишется логика так что бы тест заработал
GET
Цитата
А вот тут я с Вами согласен. Дело не в методах программирования, а в мышлении. Если разраб умеет мыслить категориями ООП, то разработка для него проста, легка, понятна, прозрачна и пр. Если же не умеет, то метод сложен и непонятен и другие методы кажутся ему превосходящими ООП. Как собственно и наоборот.

S.Chushkin
Скажите, вот если б вам показали скрипт, который ссылается на методы и классы, которые вы не видите, вы бы смогли определить логика скрипта правильная или нет?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Спасибо, bestxp!

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Arh
Цитата (slobotsky.denis @ 31.10.2014 - 05:40)
Arh
Не, не принимается. Во-первых, Вы забыли про автоматический слив. Исправьте, пожалуйста. От того, как Вы исправите, будут зависеть мои дальнейшие аргументы.

В принципе inpost ответил, хотя это можно и без классов сделать (можно не значит нужно).

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Arh @ 31.10.2014 - 10:37)

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

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

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

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

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

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

user posted image
S.Chushkin
Цитата (ABC @ 31.10.2014 - 14:29)
S.Chushkin
Скажите, вот если б вам показали скрипт, который ссылается на методы и классы, которые вы не видите, вы бы смогли определить логика скрипта правильная или нет?

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

Если это по поводу куска кода от chee, то:
- это не ООП, это процедурный код (независимо от наличия ссылок на объекты)
- ясность/прозрачность кода ниже среднего
- читаемость кода средняя
- понятность/читаемость логики ниже среднего
- стилистика/формат кода среднее
Я бы оценил этот кусок как среднего или чуть ниже среднего качества. Т.е. для корпоративного проекта ("своего" проекта) это вполне нормальный/приемлимый кусок, а для массовых продуктов надо править.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
chee
Цитата (S.Chushkin @ 31.10.2014 - 16:15)
- это не ООП, это процедурный код (независимо от наличия ссылок на объекты)

ваш объектый код в студию..

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

Одно дело наследование, решили создать человека, сделали класс human, сделали необходимые методы (ходить, бегать, прыгать, испражняться, говорить) и вот в нашей игре есть человечек, которого мы тестируем, улучшаем, добавляем новые методы.
Потом пришло время разделить персонажей на мужчин и женщин, создаём два наследника men и women, и меняем методы "говорить" (женский/мужской голос) и "испражняться" (сидя/стоя), всё круто, они также бегают, прыгают, но говорят по разному. Исправляя анимацию бега в родительском классе, мы исправляем сразу всех персонажей, круто, удобно.

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

Цитата
Кроме того, можно из потомка воздействовать на этот класс. Полиморфизм получается.


Это как?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
slobotsky.denis
Цитата (S.Chushkin @ 31.10.2014 - 16:15)
Т.е. для корпоративного проекта ("своего" проекта) это вполне нормальный/приемлимый кусок, а для массовых продуктов надо править.

Для своего, то есть проекта, разрабатываемого одним программистом для своих личных целей без планов привлечения в будущем другим разработчиков, приемлем.
Для корпоративного - нет. Если программист уже не позиционирует себя как юниора (и получает соответствующую не юниорскую зп), штрафовать за такой код надо. Ибо он реально наносит убытки заказчику в плане увеличения времени разработки при привлечении новых разработчиков.
У Inpost и то намного более читаемый и менее избыточный пример, хоть и не лишённый своих недостатков.

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
inpost
slobotsky.denis
Конкретика. Сформулируй недостатки примера.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
slobotsky.denis
Arh
Не путайте абстрактные классы и интерфейсы.
Касаемо интерфейсов, погуглите на эту и эту темы. Возможно, поймёте. Если совсем ничего не поймёте, забейте, значит пока что оно Вам не нужно.

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Arh
slobotsky.denis
Я не путаю, я спрашиваю и про то и про это. Спасибо почитаю.
В предыдущем сообщении писал про интерфейсы, читал различные примеры, и ваш пример тоже непонятен, для чего создан лишний бессмысленный класс.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.