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

> interface, в чем польза?
TMake  
Дата
Цитировать сообщение

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 19 дней
Карма: 58




Цитата (twin @ 7.06.2016 - 18:39)
Моя точка зрения на кодинг - лучше день потерять, потом за пять минут долететь. Да, может и методом тыка. Да, может времени на чтение или написание доки уйдет на пару минут больше, чем на интерфейс. Но горы бесполезного кода, который годами алчно молотит в проекте, больно бъет по моему самолюбию. Я что, совсем кретин, что не могу писать без плетки? Почему за мою невнимательность и лень расплачивается потребитель моих услуг?

да зачем тебе эти интерфейсы? пили треш в одиночку. Без плетки тебе к сожалению не разобрать и не понять зачем нужно тратить время на написание интерфейсов.
Цитата (twin @ 7.06.2016 - 18:55)
А тесты на что?

Интерфейсы для потомков, что бы имлементированый класс не смог нагадить. А тесты не для всех указ.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
Дата
Цитировать сообщение

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



Indiana Jones
******

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




Цитата (twin @ 7.06.2016 - 14:55)
Цитата (Dezigo @ 7.06.2016 - 14:45)
не возможно предсказать, что твой класс которые ты добавил потом не сломается из за отсутствия метода

А тесты на что?

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

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



146%
******

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




twin
Цитата
на сколько бесполезная и даже вредная затея.

По сути любой лишний код вредная затея с точки зрения производительности.

Я по другому делаю, пишу без интерфейсов, а когда появляется еще одна реализация класса, тогда уж делаю интерфейс.
Самый простой пример.
Был класс Cache, он писал данные в файлы, понадобился класс MemCache с таким же api.
Из Cache сделал интерфейс, написал FileCache (бывший Cache), написал MemCache.
Приложение как использовала Cache, так и использует, только уже с той реализацией, какую я туда подсуну.

class News {
public funtion __construct (Cache $Cache) {}
}


new News($MemCache)


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (sg.com @ 7.06.2016 - 17:37)
Интерфейс же решает проблему таким образом, что ни одна издержка не будет упущена, при этом ни кто не вникал в суть бухгалтерии.
Напомню еще раз про юнит-тесты. По сути это тоже самое в плане проверки наличия методов, только запускается один раз, при разработке. Интерфейс же остается в коде навсегда, единожды выполнив полезную функцию. И запускается при каждом вызове, дергая лишний файл.

Вот если разработка ведется по принципу TDD, то смысл интерфейса вообще пропадает.

Цитата (chee @ 7.06.2016 - 18:48)
Вред интерфейсы могут приносить только неквалифицированным и некомпетентным разработчикам.
Вред они наносят не разработчикам, а потребителю проекта. Если есть резерв по ресурсу, допустим это какая-нибудь визитка для узкой аудитории, то конечно наплевать. А если сервера молотят на пределе от нагрузки, приходится задумываться о таких нюансах.

И еще, наоборот должна звучать фраза. Пользу интерфейсы приносят только
Цитата
неквалифицированным и некомпетентным разработчикам.
Тем, кого нужно держать за ручку, ибо он сам не в состояни посмотреть документацию.

Цитата (TMake @ 7.06.2016 - 18:52)
Интерфейсы для потомков, что бы имлементированый класс не смог нагадить. А тесты не для всех указ.
Ну так я о том и говорю. Если разработчики ленивы и некомпетентны, чтобы читать доки и использовать тесты, а так же если есть большая вероятность модификации кода в дальнейшем таковыми, то интерфейс может оказаться полезным. Это контракт, не более, как сказал chee. Нарушение контракта ведет к наказанию. Интерфейс, это унтерофицерская вдова. Но за эту некомпетентность разработчиков приходится расплачиваться заказчику.

Цитата (Dezigo @ 7.06.2016 - 18:59)
как бы не всегда есть тэсты, а если есть то они точно не всё покрывают.
Если так рассуждать, то можно и наоборот:
Цитата
как бы не всегда есть интерфейсы, а если есть, то они точно не все покрывают
В чем разница? И то и другое нужно писать до. И еще, а я вот возьму и не буду имплементировать свой клас с интерфейсом. Не всегда объект передается аргументм с проверкой. И что?

Тут все равно все зависит от самодисциплины и квалификации. Интерфейсы, это защита от уже совсем дурака.

Цитата (Arh @ 7.06.2016 - 19:20)
По сути любой лишний код вредная затея с точки зрения производительности.
Все верно. Потому я и не приемлю лишнего кода, стараюсь делать все оптимально в первую очередь с точки зрения потребления. А думать за дурака, это увольте.

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

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


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



Старик
***

Профиль
Группа: Пользователь
Сообщений: 121
Пользователь №: 42899
На форуме: 7 месяцев, 7 дней
Карма: 3




Цитата (twin @ 8.06.2016 - 04:05)

Цитата (sg.com @ 7.06.2016 - 17:37)
Интерфейс же решает проблему таким образом, что ни одна издержка не будет упущена, при этом ни кто не вникал в суть бухгалтерии.
Напомню еще раз про юнит-тесты. По сути это тоже самое в плане проверки наличия методов, только запускается один раз, при разработке. Интерфейс же остается в коде навсегда, единожды выполнив полезную функцию. И запускается при каждом вызове, дергая лишний файл.

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

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (sg.com @ 8.06.2016 - 04:46)
но плюс к этому использование констант

Об этом я и написал. Это пока единственное практическое применение. Больше похоже ничего интересного нет.


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



Indiana Jones
******

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




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

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

Цитата
И запускается при каждом вызове, дергая лишний файл.

Да успокойтесь вы уже с дёрганьем файла, у вас параной с ООП, классы в autoload и можно закешировать их.

Это не алгоритм писать, это целый проект, для всяких сайтов визиток - не рассматривается.

Если вы не понимаете interface, то не знаете что такое abstract class, свойственно проект ваш нечему на научил.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (Dezigo @ 8.06.2016 - 06:56)
Если вы не понимаете interface, то не знаете что такое abstract class

Причем тут абстрактный класс? Я уже ответил, повторю:
Цитата (twin @ 7.06.2016 - 14:39)
Это тоже из другой оперы. В абстракном классе есть функциональность, это полезно. В интерфейсе её нет. Это седло на корове.
А что такое интерфейс, я прекрасно понимаю. Наверное лучше вас, потому что задумываюсь над его пользой, а не строчу по учебнику.

Еще раз. Лично мне интерфейс не нужен. Я считаю его полезность преувеличенной, тесты гораздо полезнее. Что касается дерганий файлов, то тут дело принципа. Тут маленько послабление, там чуток и так сойдет, сям закроем глаза на производительность... В итоге имеем монстра, пожирателя ресурса.

Вам нужен - пользуйтесь ради Бога. Я же не агитирую. И меня не нужно агитировать. Я хотел узнать о его "недокументированных" возможностях, о тех, которые в учебниках не описывают. Только и всего.


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 19 дней
Карма: 58




Цитата (twin @ 8.06.2016 - 11:15)
В итоге имеем монстра, пожирателя ресурса.

Может тебе сменить язык в сторону Go?, там у тебя не будет вопросов про интерфейсы и проблем с растратой ресурсов.
Цитата (twin @ 8.06.2016 - 11:15)
Я считаю его полезность преувеличенной, тесты гораздо полезнее.

Тут тебя ни кто не будет переубеждать, можешь написать разрабам php, что они далекие от реалий и дали возможность делать бесполезные интерфейсы.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (TMake @ 8.06.2016 - 10:08)
Может тебе сменить язык в сторону Go

Меня вполне устраивает PHP. Просто я не люблю излишеств, которые к тому же направлены на поощрение лени и отсутствие самодисциплины.
Цитата (TMake @ 8.06.2016 - 10:08)
Тут тебя ни кто не будет переубеждать

Здрасти. Уже вторую страницу вы это делаете всем гуртом, не смотря на мои протесты, а по сути вопроса один chee только мнение высказал. Да и тот в своей манере.
Цитата (TMake @ 8.06.2016 - 10:08)
можешь написать разрабам php, что они далекие от реалий и дали возможность делать бесполезные интерфейсы.
Они очень близки к реалиям. Потому что реалии таковы, что на PHP пишут все, кому не лень. И что бы как то этот поток говнокода сдерживать и приходится сочинять такие вот намордники. В других языках эта проблема тоже есть.

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


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6204
Пользователь №: 5552
На форуме: 8 лет, 4 месяца, 28 дней
Карма: 162




Краткое содержание топика:

создаем простой прибор, например молоток. Создаем его только (подчеркиваю - только!) для забивания гвоздей. Люди радуются, используют молоток по назначению. Потом приходит крутой чувак, не ровня всем этим доморощенным и говорит: а вот молоток, если откинуть функцию забивания гвоздей - нахуа он вообще нужен? И вывод: молоток - куйня. Занавес, всем кланяться.


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

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Не так совсем biggrin.gif
Вот так:

Есть лес, есть дорога в обход с указателями, и есть через лес тропинка. Все идут по дороге, не смотря на то, что это долго. А тут приходит чувак и говорит. Я хожу по тропинке. Я знаю, что есть дорога, и что там указатели. Но мне не нужно это. Вы ходите, как хотите, только ответьте на вопрос. Там есть что-нибудь интересное, кроме того, что не заблудишься?

А ему -ты что!!! Как можно! Я вот ходил по тропинке, так чуть волки не сожрали! А если там медведь? А если ты вообще забудешь, где лево, где право?

Чувак такой - да какая вам разница. Я хочу дойти быстро, у меня есть компас и ружьё. И вообще, какое вам чё, как я хожу. Вы скажите, там есть у вас на что посмотреть, дабы ноги не бить напрасно?

А ему опять - ты лох! Ты не понял дзена хождения по асфальту! Дорога строится для потомков!

Ну и все в том же духе.

А что касается
Цитата (waldicom @ 8.06.2016 - 11:10)
только (подчеркиваю - только!)
, так вот ты не прав. Гораздо интереснее находить всякие приемчики, чем тупо кодить по шаблону. Допустим в учебниках написано, что доступ к приватному свойству невозможен. А на самом деле это не так. И иногда бывает полезным. Так и тут. Вот использовать интерфейс, как контейнер для констант - уже интереснее. А ты говоришь "только". smile.gif


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



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

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 7 лет, 11 месяцев, 19 дней
Карма: 58




Цитата (twin @ 8.06.2016 - 15:40)
А ему -ты что!!! Как можно! Я вот ходил по тропинке, так чуть волки не сожрали! А если там медведь? А если ты вообще забудешь, где лево, где право?

в таком примере интерфейс не поможет, т.к. кому он будет мешать либо руками расширят либо вообще уберут из имплеметации. Твой абстрактный пример совсем плох, ты как обычно пытаешься показать свое превосходство раздутыми щеками и походу тебя это возбуждает
waldicom очень адекватный пример написал.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

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



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

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

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (TMake @ 8.06.2016 - 14:30)
в таком примере интерфейс не поможет, т.к. кому он будет мешать либо руками расширят либо вообще уберут из имплеметации

Так вот именно. А для чего он тогда нужен, если все равно это остается на совести разраба? Если рассматривать его, как помошника, то тесты тут гораздо уместнее. Даже не юниты, если их писать лень. Вот такой к примеру, один на всё:
class TestInterface
{
protected $obj;

public function __construct($obj)
{
$reference = get_class_methods($this);
$methods = get_class_methods($obj);

foreach ($reference as $method) {
if (!in_array($method, $methods)) {
throw new Exception('Fatal error: Class '. get_class($obj)
.
' contains 1 abstract method and must therefore be declared abstract '
.'or implement the remaining methods ('. get_class($this) .'::'. $method .')');
}
}
}
}


Я даже текст сообщения оставил как у интерфейса :D

А дальше практически тот же синтаксис:
class ExampleInterface extends TestInterface
{
public function set(){}
}


Ну и проверяем перед пушем или в процессе
class Example
{
public function get(){}
}


new ExampleInterface(new Example);
В чем отличие? А я скажу - нету практически. За исключением того, что эта проверка проходит один раз, а интерфейс болтается постоянно.

Да, это примитивный пример. Разумеется возникнут сложности с множественным наследованием. Но давно уже придумано, как это обойти. Composite к примеру. Или компитибельность - тоже немного заморочиться и сэмулировать. Нужно просто подумать один раз и не мучать сервер.

Конечно, нафига греть голову, когда интерфейс даден. Пусть заказчик расхлебывает.

Еще раз повторяю. Интерфейсы для ленивых и недисциплинированных разработчиков. Не более того. Я себя к таким причислять отказываюсь. Вы как хотите.


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

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

Зачем ворошить старое, когда можно наворотить новое?

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

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



Старик
***

Профиль
Группа: Пользователь
Сообщений: 121
Пользователь №: 42899
На форуме: 7 месяцев, 7 дней
Карма: 3




Цитата (twin @ 8.06.2016 - 15:40)
А ему опять - ты лох! Ты не понял дзена хождения по асфальту! Дорога строится для потомков!

Ну и все в том же духе.

не хватает продолжения, может так:

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

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

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

Опции темыСтраницы: (4) 1 [2] 3 4  Ответ в темуСоздание новой темыСоздание опроса