2015-07-11 5 views
0

Мне пришлось использовать C# в последнее время, в котором у меня мало опыта. Конюшня, в которой я все время себя чувствую, заключается в создании класса, состояние которого зависит от состояния, которое было инициализировано до этоC# и функциональная чистота

class foo{ 
    public bar_ {get;} 
    public dum_ {get;} 

    public foo(){ 
     bar_ = BuildBar(); 
     dum_ = BuildDum(bar_); 
    } 
} 

его немного избыточно для BuildDum нести параметр, если он просто будет использовать что-то уже из, доступную члена. с другой стороны, мне нравится явное указание зависимостей, функция зависит от

Я думаю, я спрашиваю: что является лучшим способом справиться с ситуацией?

+0

Марк 'BuildBar' и' BuildDum' как 'private' .. что должно дать реальный большой намек, что они работают только по данным доступных в классе. Затем добавьте некоторую документацию xml для каждой функции ... в строке перед определением функции нажмите '' '(апостроф) 3 раза. –

+1

На стороне примечания: подчеркивания в открытом интерфейсе серьезно неодобрились. –

+0

@Underscores - лишь небольшая часть проблемы: имена классов должны быть заглавные, и поэтому должны быть имена свойств. – dasblinkenlight

ответ

1

Оба способа в порядке. Текущая версия BuildDum может быть static, в этом случае это прекрасно для метода не получить доступ к любым переменным-членам, поскольку он не может сделать это в любом случае:

private static Dum BuildDum(Bar b) { 
    ... 
} 

Если вы BuildDum, который обращается к bar_ напрямую, вы должны также сделать его доступ _dum, т.е. он должен быть не статичным void:

private void BuildDum() { 
    ... 
    _dum = ... 
} 
+0

ive никогда не было комфортно со статическими функциями внутри нестатического объекта, но это имеет смысл. хорошо сделанный сэр – 2c2c

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