Цитата (twin @ 31.10.2014 - 13:34) |
Гы. Вот колесо от моей машины, переделайте так, чтобы двиготель не троил.
Как можно переделать кусок кода, выдранный из контекста...
|
понятно, я не был о ваших навыках лучшего мнения, вы подтвердили мои выводы.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
Цитата |
ООП, функционалка или императивка и тд должны и просто обязаны следовать SOLID, я сейчас нахожусь в лагерее ООП и хочу еще заглянуть в функциональный, и общение с разными программистами приводит к одному SOLID GRASP KISS DRY DDD и не менее, то что написано было про мальчика это откровенное говно, оно не подходит под Single Responsibility principle , вы в своем классе заставляете всех подрят все делать, 1 класс = 1 ответственность |
ты можешь, как то объяснить, что ты написал? Я без сарказма. Что это за слова?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
S.Chushkin
31.10.2014 - 14:25
Цитата (twin @ 31.10.2014 - 14:00) |
Тут с какой стороны посмотреть. Если класс Girl умеет и писить и какать, у него тоже несколько ответственностей? Нет, он производит объект одного типа. Только девочку. Тут первичен объект, от того и ООП.
У меня класс умеет заставлять разные сущности только писить. Тоже одна ответственность. Просто я создаю не объекты, а действия. |
А вот тут я с Вами согласен. Дело не в методах программирования, а в мышлении. Если разраб умеет мыслить категориями ООП, то разработка для него проста, легка, понятна, прозрачна и пр. Если же не умеет, то метод сложен и непонятен и другие методы кажутся ему превосходящими ООП. Как собственно и наоборот.
Выше абсолютно правильно сказали, -
каждая задача требует своего подхода и инструмента. Это одна из аксиом в разработке.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
bestxp
31.10.2014 - 14:28
SOLID это принципы качественной архитектуры любого приложения, следование им ты будешь иметь чистый код, понятную архитектуру
GRASP качественные метрики хорошей архитектуры связность связанность и тд
KISS это принцип Keep It Simple Stupid ( делай это проще, тупица ) изначально не нужна излишняя сложность, эволюционируй, но делай все проще
DRY это Dont Repeat Yourself не повторяйся, пиши код который можно повторно использовать, а не копипастить
DDD - методологий посторения приложений основа которой это выделение предметной области и отделение бизнес логики от инфраструктуры, обычно разработка идет через TDD
TDD - Test Driven Development сначала был тест, потом был код для теста, то есть пишется некий код который может и не работать, но отображает то что на входе и что в результате на выходе, потом пишется логика так что бы тест заработал
Цитата |
А вот тут я с Вами согласен. Дело не в методах программирования, а в мышлении. Если разраб умеет мыслить категориями ООП, то разработка для него проста, легка, понятна, прозрачна и пр. Если же не умеет, то метод сложен и непонятен и другие методы кажутся ему превосходящими ООП. Как собственно и наоборот. |
S.Chushkin
Скажите, вот если б вам показали скрипт, который ссылается на методы и классы, которые вы не видите, вы бы смогли определить логика скрипта правильная или нет?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Спасибо, bestxp!
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Цитата (slobotsky.denis @ 31.10.2014 - 05:40) |
Arh Не, не принимается. Во-первых, Вы забыли про автоматический слив. Исправьте, пожалуйста. От того, как Вы исправите, будут зависеть мои дальнейшие аргументы. |
В принципе inpost ответил, хотя это можно и без классов сделать (можно не значит нужно).
Так то всё логично, меня больше интересует зачем использовать абстрактный класс в этом примере, да и не только в этом.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Цитата (Arh @ 31.10.2014 - 10:37) |
Так то всё логично, меня больше интересует зачем использовать абстрактный класс в этом примере, да и не только в этом. |
Конкретно в этом примере он исполняет функцию интерфейса, следит за тем, чтобы во всех классах потомках был обязательно реализован метод pee().
А вообще в нем можно расположить свои методы, которые будут видны в потомках. Кроме того, можно из потомка воздействовать на этот класс. Полиморфизм получается. А если бочку катить, то контейнерные перевозки уже.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
S.Chushkin
31.10.2014 - 16:15
Цитата (ABC @ 31.10.2014 - 14:29) |
S.Chushkin Скажите, вот если б вам показали скрипт, который ссылается на методы и классы, которые вы не видите, вы бы смогли определить логика скрипта правильная или нет? |
В общем случае, ответ на Ваш вопрос: нет,
правильность логики не смог бы.
А вот качество кода в пределах куска - это возможно, более менее.
Если это по поводу куска кода от chee, то:
- это не ООП, это процедурный код (независимо от наличия ссылок на объекты)
- ясность/прозрачность кода ниже среднего
- читаемость кода средняя
- понятность/читаемость логики ниже среднего
- стилистика/формат кода среднее
Я бы оценил этот кусок как среднего или чуть ниже среднего качества. Т.е. для корпоративного проекта ("своего" проекта) это вполне нормальный/приемлимый кусок, а для массовых продуктов надо править.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Цитата (S.Chushkin @ 31.10.2014 - 16:15) |
- это не ООП, это процедурный код (независимо от наличия ссылок на объекты) |
ваш объектый код в студию..
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Я понимаю что происходит, я не понимаю зачем. То есть вместо того, что бы нарисовать архитектуру класса, в своей тетрадке-черновике, мы этот черновик переносим в проект, просто смысла не вижу.
Одно дело наследование, решили создать человека, сделали класс human, сделали необходимые методы (ходить, бегать, прыгать, испражняться, говорить) и вот в нашей игре есть человечек, которого мы тестируем, улучшаем, добавляем новые методы.
Потом пришло время разделить персонажей на мужчин и женщин, создаём два наследника men и women, и меняем методы "говорить" (женский/мужской голос) и "испражняться" (сидя/стоя), всё круто, они также бегают, прыгают, но говорят по разному. Исправляя анимацию бега в родительском классе, мы исправляем сразу всех персонажей, круто, удобно.
Но какой смысл создавать черновик. Тот же класс human, только он ничего не делает, просто говорит, что человек должен бегать, прыгать и говорить. Во первых я и так это знаю, у меня рядом в ТЗ это написано, во вторых я не уверен что завтра мне не понадобиться еще один метод "лазить по деревьям" и вместо того, что бы добавить метод "лазить" в родительский класс, мне придётся добавить его в интерфейс, потом в каждом дочернем классе реализовать копипастом один и тот же метод.
Цитата |
Кроме того, можно из потомка воздействовать на этот класс. Полиморфизм получается. |
Это как?
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
slobotsky.denis
31.10.2014 - 17:39
Цитата (S.Chushkin @ 31.10.2014 - 16:15) |
Т.е. для корпоративного проекта ("своего" проекта) это вполне нормальный/приемлимый кусок, а для массовых продуктов надо править. |
Для своего, то есть проекта, разрабатываемого одним программистом для своих личных целей без планов привлечения в будущем другим разработчиков, приемлем.
Для корпоративного - нет. Если программист уже не позиционирует себя как юниора (и получает соответствующую не юниорскую зп), штрафовать за такой код надо. Ибо он реально наносит убытки заказчику в плане увеличения времени разработки при привлечении новых разработчиков.
У
Inpost и то намного более читаемый и менее избыточный пример, хоть и не лишённый своих недостатков.
_____________
PHP: The Right WayБесплатное обучение Symfony2Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
inpost
31.10.2014 - 17:43
slobotsky.denisКонкретика. Сформулируй недостатки примера.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
slobotsky.denis
31.10.2014 - 17:50
ArhНе путайте абстрактные классы и интерфейсы.
Касаемо интерфейсов, погуглите на
эту и
эту темы. Возможно, поймёте. Если совсем ничего не поймёте, забейте, значит пока что оно Вам не нужно.
_____________
PHP: The Right WayБесплатное обучение Symfony2Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
slobotsky.denis
Я не путаю, я спрашиваю и про то и про это. Спасибо почитаю.
В предыдущем сообщении писал про интерфейсы, читал различные примеры, и ваш пример тоже непонятен, для чего создан лишний бессмысленный класс.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.