•  
  • 0
  •  
0

Код типа "лапша"

Здравствуйте. Мой вопрос, возможно, покажется странным, но нигде не могу найти толкового объяснения, что такое "лапша-код". Если кто знает, объясните, пожалуйста.

Культура кодинга.
спросил 745 дней назад Аватор пользователя KeyKeeper KeyKeeper
34 2
300

2 ответа:

    •  
    • 2
    •  

    И правильно, что не находите. Потому что нет такого понятия - код типа лапша. Есть спагетти код. А это уж отыщется любым гуглом. Например:

    Спагетти-код

    Вики-ответ
    изменил 745 дней назад Аватор пользователя sly2m sly2m
    65 1
    •  
    • 0
    •  

    Лапша-код, на мой взгляд, чуть более узко можно определить через нарушение Принципа Минимального Знания

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

    т.е. вот такой код - лапша:

      some_instance.some_property.doSomething()
    

    Этот код подразумевает что в контексте выполнения известно что класс someproperty имплементирует метод doSomething(), а это, в дополнение к явной зависимости от класса someinstance вводит неявную зависимость класса some_property, а он может, например, оказаться в другом пакете.

    Вместо такого в someinstance как минимум должен в явном виде присутствовать соответствующий делегат типа doSomethingWithSomeProperty(), или же более существенная часть кода перенесена в методы someinstance.

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

    Нарушения этого принципа характерны длииинными цепочками вызовов в стиле obj->call1()->call2()->call3(), которые, собаки, длинный как лапша.

    Принцип, как и большинство основных принципов ООД невозможно удовлетворить на 100% и при этом не начать заниматься абстрактным программированием в вакууме, но оглядываться на него всегда нужно, т.к. длинный лапша-код опасен очень неприятными и непредвиденными поломками из-за длинных и незаметных на первый взгляд зависимостей от, казалось бы совершенно левых интерфейсов в совершенно левых местах.

    ответил 676 дней назад Аватор пользователя caesar caesar
    152 5
    изменил 676 дней назад Аватор пользователя caesar caesar
    152 5
Чтобы написать ответ, вы должны авторизироваться.