Это вопрос чистоты ООП.
Не все части кода должны быть чистыми ООП. Это вопрос сложности проекта, количества программистов, удобства обслуживания и т. Д.
Ваш пример очень прост, и поэтому вы можете прочитать столько мнений
Иногда трудно проиллюстрировать преимущества ООП простыми примерами.
В любом случае, мои мысли:
Пахнет.
Строка кода, которая действительно беспокоит меня:
deathStar.Manager.FirstName = "Lord";
Может легко поменяться на что-то вроде
deathStar.Manager.Address.City.Name = "Paris"
Итак, в одной строке кода вы видите 4 используемых класса! Это делает очень сильное предположение, что связь всех 4 классов остается неизменной. Другими словами, классы очень тесно связаны.
Вы можете решить эту проблему, работая с интерфейсами, а не с конкретными классами, и можете принять рекомендацию «Говорите, не спрашивайте» ( Поиск Yahoo ; да, Yahoo).
Вот хороший PDF , в котором обсуждаются ООП и рефакторинг (в Java, но идеи понятны легко), см. Раздел «Транзитивная связь».