Если вы имеете в виду всегда , мой ответ отрицательный, вы не должны всегда это делать.
Если язык позволяет вам это делать, должна быть причина. Рассмотрим следующий фабричный класс:
public class Factory : IFactory
{
public const string FactoryName = "StackOverflowFactory";
public IPerson GetPerson(PersonType type)
{
switch (type)
{
case PersonType.Rural:
return new Villager();
case PersonType.Urban:
return new CityPerson();
default:
throw new NotSupportedException(string.Format("{0} does not handle {1}", FactoryName, type));
}
}
}
В этом случае класс содержит атрибут и метод. И это нормально. не следует смешивать атрибуты с методами, потому что цель этих объектов - хранить данные, а не манипулировать ими.
Хорошо или Плохо всегда является относительным, базовым о том, как спроектирована система, цели классов и т. д. c. Если система разработана с использованием шаблона A, но вы нарушаете этот шаблон при изменении кода, то использование может быть плохой практикой. Если класс предназначен только для хранения данных, но вы добавляете некоторые методы для управления им, тогда этот может также также быть плохой практикой.