Мы понятия не имеем, что такое тума, но это нормально; это не имеет значения. Важно то, как вы взаимодействуете с ним (какие у него методы). Для иллюстративных целей предположим, что опухоль относится к типу X.
В плохом примере нам нужно получить SortedList от tum и начать работу с SortedList. Это плохо, потому что вы сильно сцепляетесь с типом X с SortedList. В будущем вы можете не захотеть использовать SortedList (или его подкласс). Если вы измените X, чтобы использовать массив, базу данных, веб-сервер или что-то еще, у вас будет много потенциальных проблем:
- Вы должны изменить код в любом месте, где вы добавляете ученика. Для небольшого проекта это может быть всего лишь несколько мест. Для более крупных проектов это можно использовать в сотнях мест и может стать головной болью для изменения.
- Если вы раскрываете тип X в качестве библиотеки для использования другими пользователями, любой, кто использует X, должен будет обновить свой код. Люди, использующие вашу библиотеку, могут быть очень расстроены, если им приходится обновлять свой код во многих местах.
- Скажем, SortedList изменения и методы добавлены или удалены (вряд ли с SortedList, но возможно, если это был другой класс, который вы сделали). Вам нужно будет обновлять каждое место, добавляя ученика, даже если вы только меняете структуру данных о том, как учатся студенты.
В лучшем примере addStudentToLecture (...) скрывает детали реализации. Он может использовать SortedList, иначе это может быть что-то другое. Любой, кто хочет добавить ученика к курсу, не должен знать, как использовать SortedList, и реализация addStudentToLecture (...) может измениться без изменения кода вызова.
Я мог быть совершенно неправ, но мне кажется, что это должно быть «Скажи, не спрашивай», что лучше говорит пример. [Сообщить, не спрашивать] (http://msdn.microsoft.com/en-us/magazine/cc947917.aspx#id0070045) объясняет это. –