Задать вопрос
@andoral

Как принято у программистов: использовать для переменной свойство или давать параметр в каждом методе?

Два примера решения одной задачи, какой принято использовать?:

1)
class A
{
    int x;
    public int X{ get { return x;} set { x = value; } }

    public void Method()
    {
         Console.WriteLine( x ) ;
    }
}


2)
class A
{
    public void Method( int x )
    {
         Console.WriteLine( x ) ;
    }
}
  • Вопрос задан
  • 239 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
Два примера решения одной задачи

Это не одна и та же задача, это разные задачи. В первом случае результат вызова метода зависит от состояния объекта, во втором случае - зависит от переданных в него параметров. В первом случае класс инкапсулирует состояние, во втором случае класс вам не нужен.

Это настолько разные примеры, что даже непонятно, как вам эту разницу объяснить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@i_light
Backend, XAML, crossplatform
Это вопрос концепции. Свойства класса, которые принадлежат семантически его объекту - делайте свойствами. Данные, не относящиеся к объекту - передавайте параметрами.

Например, для теоретического класса "яблоко", свойства - "размер", "вес", "цвет" - принадлежат яблоку, делаем их свойствами класса. Для теоретического метода "разделить" в этом классе необходим параметр "количество частей" - понятное дело, что он не является свойством яблока.
Ответ написан
Комментировать
gbg
@gbg
Любые ответы на любые вопросы
Первый называется ООП, второй - структурный. Выбор зависит от принятого подхода к разработке
Ответ написан
Комментировать
SpyDeX
@SpyDeX
Рыбу не раздаю, только удочки.
Зависит от контекста, если этот параметр - часть информации о классе, то св-во,
если параметр ф-ии - внешний фактор - то как параметр метода.

Вот например, есть рука, у неё есть грузоподъёмность 10 кг, это св-во руки.
есть задача - поднять сумку 8 кг - это параметр метода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы