챗지피티로 예시를 배우고 있는 중인데 지금 매우 혼란스럽습니다.


public class TextViewModel : INotifyPropertyChanged


{

    private readonly TextModel textModel;


    public TextViewModel()

    {

        textModel = new TextModel();

    }


    private string text = "";

    public string Text

    {

        get { return text; }

        set

        {

            if (text != value)

            {

                text = value;

                NotifyPropertyChanged(nameof(Text));

            }

        }

    }


    private ICommand loadCommand;

    public ICommand LoadCommand

    {

        get

        {

            if (loadCommand == null)

            {

                loadCommand = new RelayCommand(param => Load());

            }

            return loadCommand;

        }

    }


    private void Load()

    {

        var openFileDialog = new OpenFileDialog();

        if (openFileDialog.ShowDialog() == true)

        {

            textModel.Load(openFileDialog.FileName);

            Text = textModel.Text;

        }

    }


    private ICommand saveCommand;

    public ICommand SaveCommand

    {

        get

        {

            if (saveCommand == null)

            {

                saveCommand = new RelayCommand(param => Save());

            }

            return saveCommand;

        }

    }


    private void Save()

    {

        var saveFileDialog = new SaveFileDialog();

        if (saveFileDialog.ShowDialog() == true)

        {

            textModel.Text = Text;

            textModel.Save(saveFileDialog.FileName);

        }

    }


    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string propertyName)

    {

        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }

}


해당 예시의 코드로 사용하라고 권장하고 있는데,


프로퍼티 바로 위에 멤버를 선언한다거나, 생성자가 중간에 끼어있고 메소드가 프로퍼티 사이에 끼어 있는 등

매우 일반적으로 보기 힘든 형태의 코드의 예시더군요.


물론 기능 단위로 분리한다는 개념 자체는 알겠습니다만..

이게 wpf 작업을 할 때는 가장 읽기 쉬운 방식인가요?