Tell Don't Ask ( — «наказуй, не запитуй») — принцип проєктування, згідно з якими замість того щоб просити в об'єкта дані, та їх змінювати, варто наказувати об'єкту, що зробити.

Приклад

Нехай, необхідно змоделювати об'єкт користувача, для якого можлива зміна імені. Наївна реалізація виглядатиме наступним чином:

// об'єкт містить лише дані, поведінка назовні public class User { public string Name { get; set } }

// використання var user = new User(); user.Name = "New user name"; RaiseEvent(new UserNameChanged(user.Name));

Змінимо код згідно з цим принципом.

// об'єкт містить як дані, так і поведінку public class User { private string _name;

public void ChangeName(string name)

_name = name;

RaiseEvent(new UserNameChanged(name));

// використання var user = new User(); user.ChangeName("New user name");

Див. також

Об’єктно-орієнтоване програмування Принцип YAGNI Принцип DRY Принцип KISS

Посилання Tell Dont Ask Principle