Логика в получает часть свойства. Хорошая практика?

Я бы создал промежуточный файл и использовал бы fp.seek, чтобы записать их в двоичном формате в новом порядке, прежде чем преобразовать его обратно в новый CSV. Если строка, столбец становится столбцом, строка - sys.float_info предоставит вам размер каждого элемента, позицию каждого элемента ((это столбец * old_row_length + строка) * размер с плавающей точкой).

Затем вы заново объединяете их в CSV, конвертируя их обратно в текст и читая в строке old_count_rows.

7
задан Sorskoot 30 January 2009 в 15:16
поделиться

11 ответов

Методы считывания свойства, как ожидают, будут быстрыми и идемпотентными (т.е. никакие разрушительные действия не должны быть выполнены там). Хотя это прекрасно подходит для итерации по набору в оперативной памяти объектов, я не повторно прокомментировал бы выполнение никакого вида тяжелого подъема или в получить или установить части. И говоря об итерации, я все еще кэшировал бы результат для сохранения нескольких миллисекунд.

14
ответ дан 6 December 2019 в 08:17
поделиться

Да, если это не операция, которая могла бы иметь последствия производительности. В этом случае необходимо использовать метод вместо этого (поскольку это более интуитивно конечному пользователю, что метод мог бы быть медленным, тогда как свойство будет быстро),

2
ответ дан 6 December 2019 в 08:17
поделиться

Я говорю да, но пытаюсь сохранить на частной переменной de результаты ListOfSomeClass. Сумма (s => s. Общие количества). Особенно, если Вы используете его несколько раз.

1
ответ дан 6 December 2019 в 08:17
поделиться

Я не вижу прямой проблемы (если список не довольно огромен), но я лично использовал бы myInstance.SomeList.Sum() метод, если возможный (.NET> = 2.0).

1
ответ дан 6 December 2019 в 08:17
поделиться

Измените тот метод считывания на это:

public bool SumPositive
{
  get
  {
     return SumOfSomeClass >= 0;
  }
}

Вы уже используете булево выражение, никакая потребность явно возвратить TRUE или FALSE

1
ответ дан 6 December 2019 в 08:17
поделиться

Для основных вычислений прочь полей или других свойств в наборе было бы приемлемо сделать ту внутреннюю часть свойство Get. Поскольку все остальные сказали, что истинная логика никогда не должна делаться в методе считывания.

1
ответ дан 6 December 2019 в 08:17
поделиться

Наличие сложной логики в методах считывания/методах set не является хорошей практикой. Я рекомендую переместить сложную логику в отдельные методы (как GetSumOfXYZ ()) и использовать memoization в средствах доступа свойства.

Можно избежать сложных свойств при помощи ObjectDataProvider - он позволяет Вам определять метод для получения по запросу некоторых данных.

1
ответ дан 6 December 2019 в 08:17
поделиться

Мне нравятся Ваши соглашения о присвоении имен, и я соглашаюсь полностью с использованием содержания, такого как Ваш пример в методах считывания свойства, если Вы поставляете API, который будет использоваться с привязкой.

Я не соглашаюсь с другими точки, сделали о движущемся коде в метод просто, потому что это в вычислительном отношении тяжело - это не различие, которое я когда-либо делал бы, ни имел бы, я слышал, что другие люди предположили, что нахождение в методе подразумевает медленнее, чем свойство.

Я действительно полагаю, что свойства должны быть без побочных эффектов на объекте, на котором их называют. Значительно более трудно гарантировать, что они не имеют никакого эффекта на более широкую среду - даже относительно тривиальное свойство могло бы вытянуть данные в память или по крайней мере изменить кэш процессора или состояние vm.

1
ответ дан 6 December 2019 в 08:17
поделиться

Я думаю, что там немного находится на одном уровне логики, которая ожидается в Методах считывания и Методах set, иначе у Вас просто есть своего рода замысловатый способ объявить Вашу членскую общественность.

0
ответ дан 6 December 2019 в 08:17
поделиться

Зависит..., если бы это было на доменном объекте затем, то я не выступил бы "за", имея сложную логику в методе считывания и особенно не методе set. Используя метод (мне) сигнализирует потребителю объекта, что операция выполняется, в то время как метод считывания сигнализирует о простом извлечении.

Теперь, если эта логика была в ViewModel, то я думаю, что аспект метода считывания немного более простителен / ожидаемый.

0
ответ дан 6 December 2019 в 08:17
поделиться

Я был бы осторожен относительно помещения любой логики в Методе считывания свойства. Чем более дорого это, чтобы сделать, тем более опасно это. Другие разработчики ожидают, что метод считывания сразу возвратит значение точно так же, как получение значения от членской переменной. Я видел много экземпляров, где разработчик использует свойство на каждом повторении цикла, думая, что они просто возвращают значение, в то время как свойство на самом деле делает большую работу. Это может быть основным замедлением в Вашем выполнении кода.

0
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

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