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

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

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



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

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

Трезвый :
6 лет, 4 месяца, 29 дней


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

Всвязи с этим вопрос.

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

А вот как еще можно его использовать?


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

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

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

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

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




******

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

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


user posted image


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

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



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

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




Цитата (twin @ 7.06.2016 - 15:46)
В чем может быть полезность интерфейсов? Основное предназначение (контракт) опускаем сразу, это даже обсуждать не хочется, на сколько бесполезная и даже вредная затея.

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

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



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

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

Трезвый :
6 лет, 4 месяца, 29 дней


Invis1ble
Я серьёзно спрашивал, что тебе все трололо чудится.

Ну к примеру возможно изменить поведение объекта, если он не выполняет требование интерфейса? Я не знаю, а мало ли...

Цитата (TMake @ 7.06.2016 - 12:45)
Вот и закончилась дискуссия, в мануале вроде все корректно расписано для чего он нужен.
Для чего он нужен, я прекрасно знаю. Потому и говорю, от него вреда гораздо больше, чем пользы, если использовать в классическм виде. Мне интересны "незадокументированные" возможности. Есть ли они.

Вот один раскопал - константы. Еще есть, кто знает?


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

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

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

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

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



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1720
Пользователь №: 16955
На форуме: 8 лет, 2 месяца, 27 дней
Карма: 96




Сообщений: 15168
Группа: Администратор

user posted image


--------------------
Programming: Private lessons via skype £45/h

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

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



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

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




Цитата (twin @ 7.06.2016 - 17:03)
Вот один раскопал - константы. Еще есть, кто знает?

Может стоит перечитать доку?
user posted imageВидно
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

Трезвый :
6 лет, 4 месяца, 29 дней


Oyeme
Что ты голову повесил? :D
Я же предупредил сразу, мне не интересно свойство интефейса, как контракта. Кому интересно - юзайте, кто ж против.

Свою позицию могу объяснить, что бы не считали меня лохом, а себя гуру.

Вот пример:
interface contract
{
public function get();
}

class Example implements contract
{
public function method()
{
// do something
}
}


new Example;
В таком виде он выкинет фатал:
Цитата
Fatal error: Class Example contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (contract::get)
Ну понятно, не компатибелен с интерфейсом. Вот радость то, теперь можно открыть интерфейс и посмотреть, чего же там должно быть. Да, наверное немного экономится времени на разработку.

А теперь так:
class Example 
{
public function method()
{
// do something
}
}


(new Example)->get();
Тоже фатал:
Цитата
Fatal error: Call to undefined method Example::get()
Разница только в том, что в первом случае не нужно вызывать метод. Но если проект покрыт тестами, он однозначно будет вызван.

А теперь сравните экономию времени при разработке и экономию ресурса при боевой работе. Сколько лишних, абсолютно бесполезных обращений к ФС.

Я понимаю, вам плевать на ресурс. Но мне вот нет. Потому я сразу и попросил не лезть с нравоучениями. Меня совсем другое интересует.

Цитата (TMake @ 7.06.2016 - 13:30)
Может стоит перечитать доку?

Да успокойся ты. Я не то имел ввиду вовсе. То, что он может содержать константы - никакой не секрет. А вот использовать его не совсем профильно, а как конфигурационный файл, может оказаться интересно.

Может еще чего есть?


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

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

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

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2788
Пользователь №: 24406
На форуме: 6 лет, 7 месяцев, 6 дней
Карма: 180




Цитата (twin @ 7.06.2016 - 13:46)
Тоже фатал:

Это называется методом "тыка". В сложной взаимосвязи неизбежно будут ошибки (различные состояния).

class Example 
{
public $property;

public function method()
{
if($this->property == 2){
$this->otherMethod();
}
}


public function otherMethod()
{

}
}


(new Example)->get();


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

interface ExampleInterface{
public method();

public otherMethod();
}

interface OtherInterface{

}


class Example implements ExampleInterface, OtherInterface
{
public $property;

public function method()
{
if($this->property == 2){
$this->otherMethod();
}
}


public function otherMethod()
{

}
}


class SomeClass
{
public function __construct(ExampleInterface $example){

}
}


class OtherClass
{
public function __construct(OtherInterface $example){

}
}


$example = new Example();
$someClass = new SomeClass($example);
$otherClass = new OtherClass($example);


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
Дата
Цитировать сообщение

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



Indiana Jones
******

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




Возьмём простой пример фабрика, где может возврощаться разный тип класса.
Есть 3 класса

interface I {
get()
}

class A implements I {
get()
}
class B implement I {
get()
}
class C implements I {

}





Если в одном из классов не будет метода get(), то будет ошибка в интерфейсках.

1. Interface гарантирует что классы которые его реализуют будут иметь такие методы, либо тогда класс not valid.
2. Тип интерфеса можно передать как аргумент, это даёт гарантию что такие методы есть во всех классах, которые его реализуют.

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

public test(I $test) {

}

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

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



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

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

Трезвый :
6 лет, 4 месяца, 29 дней


Мужуки, ну зачем вы опять прописные истины. Это в любом учебнике прописано. Я для себя вижу больше минусов, чем плюсов.
Цитата (T1grOK @ 7.06.2016 - 14:11)
Это называется методом "тыка". В сложной взаимосвязи неизбежно будут ошибки (различные состояния).
Я же написал, это решается тестами.
Цитата (T1grOK @ 7.06.2016 - 14:11)
Интерфейс подразумевает, что ты сразу знаешь, что нужно реализовать.
С этим вполне справляется документация.

Dezigo
Ну а ты вообще как на зачете, пересказ учебника. Сто раз повторил, это все известно и не интересно.
Цитата (Dezigo @ 7.06.2016 - 14:25)
И вопрос которые любой обязан ответить - какое отличие интерфейса от абстрактного класса?

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

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

Это ИМХО, вы пишите, как хотите. Меня вообще не это интересует.


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

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

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

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

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



Indiana Jones
******

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




Пример, код с которым я работаю весит 700 мб, пример - сделать резервацию пациента можно - 8-ми способами, с разных точках системы. - процессc занимает от 3 во 10 шагов.
и логика может быть разная для разных клиентов, а их более 70.

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

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

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



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

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

Трезвый :
6 лет, 4 месяца, 29 дней


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

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


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

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

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

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

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



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

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




А разве 69 дней после первого апреля такие шутки не считаются деб... эммм... ну не совсем умными?


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

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



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 159
Пользователь №: 42899
На форуме: 1 год, 25 дней
Карма: 3




Цитата (twin @ 7.06.2016 - 15:46)
В чем может быть полезность интерфейсов? Основное предназначение (контракт) опускаем сразу, это даже обсуждать не хочется, на сколько бесполезная и даже вредная затея.


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

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

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

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

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

Это сообщение отредактировал sg.com - 7.06.2016 - 22:07
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

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



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

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




Интерфейсы нужны разработчикам, а не коду. Это контракты и ничего больше. Вред интерфейсы могут приносить только неквалифицированным и некомпетентным разработчикам.


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

Мой блог
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 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса