2008-10-09 3 views
2

У меня есть объект, который нуждается в тестировании, если данные объекта действительны. Проверка сама будет вызываться из потока, который instatiated объект, это выглядит следующим образом:Внедрить проверку как метод или как свойство?

{ 
    if (_step.Equals(string.Empty)) return false; 
    if (_type.Equals(string.Empty)) return false; 
    if (_setup.Equals(string.Empty)) return false; 
    return true; 
} 

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

ответ

7

Мое личное мнение здесь будет:

  • Если метод "Validate" мутирует объект в любом случае (что ваш пример не делает), сделайте его методом.
  • Если объект не изменился после проверки, сделайте его собственностью.
1

Этот код нуждается в реорганизации. Вот как вы пишете код на Java, а не на C#. В C# у вас перегрузка оператора.

if (_step == "")) return false; 
if (_type == "")) return false; 
if (_setup == "")) return false; 

Это идиоматический способ проведения сравнения. Ваш путь, помимо более подробного, просто непредсказуем и непоследователен в C#.

Если и только тогда, когда, есть шанс, что эти строки на самом деле null вместо пустой, используйте следующие вместо:

if (string.IsNullOrEmpty(_step)) return false; 
+0

Я помню, как читал Somwhere, что рекомендуется использовать Equals (.. .) в C#, а также из-за некоторых CLR конкретных вещей. Конечно, я не помню *, где * Я читал это ... – Treb 2008-10-09 13:00:08

Смежные вопросы