Pull to refresh
35
0
Send message
что если реализация одна или что без интерфейса тоже заработает, то он не нужен — бред.
Почему?

Вам здесь еще никто и не сказал, что их надо лепить везде подряд.


Да все только про это и говорят. Я пишу, что интерфейс нужен вовсе не везде а только там, где он нужен, а мне отвечают, что я не прав. Вы же программист? Утверждение обратное «Интерфейс нужен не везде» — это «Интерфейс нужен везде». И при этом все отмечают, что у них как бы не все классы под интерфейсами, но я все равно не прав.
Э…
Открываем microsoft. Членами класса являются 1,2,3,… Переменных нет, но есть поля класса, которые содержат переменные класса. Идем дальше на страницу полей
Поля объявляются в блоке класса путем указания уровня доступа поля, за которым следует тип поля, а затем имя поля.

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

Я не понимаю, зачем это все здесь обсуждать. Очевидно у вас тоже не уверенные знания.
Все 100% классов в ваших проектах имели интерфейсы? Учебные и тестовые проекты не являются программами по определению и обсуждению не подлежат? Это серьезно?

По ссылке из вашей единственной статьи (да, я любопытный) перешел на гитхаб в «unitycontainer», походил по классам. Интерфейсы есть далеко не везде. Может уже пора признать, что если интерфейс не нужен, то он и не нужен?
Я даже не представляю, что можно было бы ответить на это. Это зависит от того, что считать правильным ответом. Так наверно. Теперь вы голову ломайте.
Ок, у вас в проектах все без исключения классы имеют интерфейсы потому что ООП? И еще наверно абстрактный класс до кучи? Понимает, здесь в обсуждении все приводят примеры когда без интерфейсов никак или очень сложно. Но утверждать, что это всегда так не правильно.

Я вот просто открыл гитхаб и набрал в поиске «C#», перешел по первой же ссылке — какая-то игра «JumpAttacker». Довольно объемный проект. Походил по файлам. Нет интерфейсов… Может плохо искал. Пошел по другой ссылке (что-то китайское «GavinYellow»). В некоторых классах были интерфейсы, в некоторых нет. Идем далее «statianzo» — где-есть, где-то нет интерфейса.

Я уже ниже писал, что если погуглить англоязычные форумы, то там пишут, что интерфейсы не надо липить везде подряд вот или вот
И вы уж извините, но я склонен больше доверять тем, кто придумал C#.
Do define an interface if you need to provide a polymorphic hiercharcy of value types
, а если полиморфизм не нужен, то не захламяйте код.
А почему вы решили, что не планирую ссылаться на HelloWord? А вдруг потребуется поддержка? Все примеры здесь «притянуты за уши» ни чем не лучше друг-друга.

Ни кто не хочет смириться с мыслью, что бывают простые проекты.

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

По поводу терминологии. Один раз случайно «унаследовал» интерфейс и все. Если верить МСДНу, то создают экземпляр класса, а не «переменную типа». Да, не объявляют. 1:1

Прочее читаю придиками не по существу.
Что тут не понятно? Три класса имеют одинаковые методы. Было бы красиво прикрутить интерфейс, который они реализую. Но в данном случае ничего кроме красивости это не даст. Все как работало, так и будет работать. Я не знаю какой там контекст, но если это законченный проект (путь такой странный), то интерфейсы ему ни чем не помогут.

что касается ревью, то пожалуй:

 interface Ix {
        void Run();
    }

public class A: Ix
    {
        public void Run() => Console.WriteLine("A");
    }

    public class B: Ix
    {
        public void Run() => Console.WriteLine("B");
    }

    public class C: Ix
    {
        public void Run() => Console.WriteLine("C");
    }

    class Prg
    { 
        object GetSmth() => new B();

        public  Prg()
        {
            var smth = (Ix)GetSmth();
            smth.Run();
            Console.ReadKey();
        }
    }


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

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

Хотя интерфейс здесь конечно просто просится.
Разве я здесь написал, что интерфейсы не нужны вообще?

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

Я выше спросил надо написать интерфейс к HelloWord, но мне не ответили по существу. Да и не ответят. Общий тренд уже задан. Комментариев в поддержку не будет, чтобы минусов не нахватать от вас.
Где тут противоречие с моей статьей? Я пишу, что если все работает без интерфейсов (понимаете, уже работает, все, задача исполнена), то добавив интерфейс вы ни чего не измените и не улучшите. Фантазии на тему «а вдруг потом понадобится» ничего не меняют. Это частный случай, которого может и не быть.
ЛЮДИ!!! Прочитайте текст. Покажите мне где я написал, что интерфейсы не нужны? Вы все ослепли что-ли? Да я сам могу тысячу примеров привести, где они нужны. Я сам использую их в работе. Но утверждать, что ко всякому классу во всех проектах надо цеплять интерфейс (а вдруг пригодится) — это просто странно.
Извините, и что? Я где-то был против этого? И это, поосторожнее, за «На какой черт мне нужен абстрактный класс» здесь могут жестко заминусить те, кто у кого в любимом проекте есть абстрактные классы. Ни кто ж не будет вникать в ваш конкретный случай, как я понял.
Т.е. вы не допускаете, что интерфейс может быть не нужен? Вот если погуглить по «c# Is there always an interface», то окажется, что там, на западе, где и придумали C# вовсе не считают, что интерфейсы надо везде «сувать». А только там и тогда, когда это нужно. Что логично, в общем-то. Я ни разу не сказал, что интерфейсы лишние в любом проекте, но все словно оглохли. Может у вас секта какая-то свидетелей интерфейса? :)
Еще один «не читал, но осуждаю». Прочтите еще раз, а потом удалите свой комментарий, т.к. он не к месту. Устал повторять, но что вы все зациклились на командной работе? Я в последнем абзаце как раз упомянул случай как интерфейсы помогают в таком случае, но статья вообще не о том.
Ну хоть кто-нибудь, прочитайте текст прежде чем что-то отвечать. Где я что предлагал внедрять?
Прочтите еще раз самые первые слова в статье и подумайте для вас это написано или нет. Я вполне допускаю, что вы для себя вопрос интерфейсов давно закрыли, но, так уж жизнь устроена, в программирование постоянно приходят новые люди и они не обязательно заняты на сложных коммерческих проектах. И когда они встречаю интерфейсы в разных примерах, то закономерно хотят понять для чего это, если у них все и так работает. Тот факт, что интерфейсы нужны вовсе не в каждом проекте, как мне кажется, не требует доказательств.
Но он и к сути вопроса не имеет отношения. Совсем не обязательно, что все вокруг построено на сложных проектах с многочисленными зависимостями. Вот тут ниже заминусили мое предложение добавить интерфейс к HelloWord — это потому что придется согласиться со мной?

Information

Rating
Does not participate
Registered
Activity