2011-10-25 3 views
0

그리드가 있고 사용자가 폼을 닫으면 로그인 한 사용자의 일부 설정을 저장하려고합니다. 이미 2 가지 구현 방법이 있지만이 기능을 구현할 위치가 궁금합니다 :사용자 지정 설정 저장 위치는 어디입니까?

  • 두 가지 방법으로 정적 유틸리티 클래스를 만듭니다.
  • 새 클래스를 만들고 UserSettingsManager와 같은 이름을 만들까요?

현재 두 가지 방법이 있지만 앞으로 더 많은 방법이 필요하다고 생각할 수 있습니다. 어떻게해야합니까?

편집 : 이미 몇 가지 답변이 표시되어 있지만 그 이유는 무엇이라고 생각하십니까?

+0

D' 오. 죄송합니다. "사용자 특정"부분을 알지 못하고 답변을 게시했습니다. 삭제 대기 중 ... : p –

답변

1

저는 UserSettingsManager으로 가고 싶습니다. 합리적이라고 생각합니다.

정상적인 클래스보다 테스트/모방/주입하기가 쉽지 않기 때문에 절대적으로 필요한 경우가 아니면 정적 클래스를 사용하지 마십시오.

+1

마지막 문장이 너무 일반적입니다. 정적 클래스는 시스템 독립적 인 불변 상태 또는 전혀 상태가없는 경우에만 완벽하게 괜찮습니다. 여기서 상태는 시스템에 따라 다르며 변경 가능하기 때문에 여기에서이를 피하는 것이 올바른 선택입니다. – CodesInChaos

1

정적 클래스는 모의하기가 쉽지 않으므로 두 번째 방법을 선택합니다.

0

이 기능에 필요한 상태가 현재 Windows Principal 개체에서 이미 사용 가능하므로 정적 함수가있는 정적 클래스가 좋을 것입니다.

0

당신이 생각할 수있는 가장 단순한 일을하십시오. 정적 유틸리티 클래스가 최소한의 코드를 사용한다면 그 코드를 사용하십시오.

앱이 간단해야이 기능을 사용할 수 있습니다. 때로는 특정 방법으로 코딩 한 후 몇 번 방법을 사용하면 갑자기 더 나은 위치를 찾을 수 있습니다.

나중에 다른 설정 (예 : 다른 파일 형식 또는 웹 서비스)을 저장하는 방법이 있다면 리팩토링에 대한 생각을 시작할 수 있습니다. 항상 리팩터링을 통해 간단하게 만들 수 있습니다.

0

Windows는 사용자 별 정보를 저장할 수 있도록 올바르게 설정 권한이있는 폴더를 제공합니다.

해당 경로를 얻으려면 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 또는 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)을 사용하십시오.

UserSettingsManager과 같은 클래스에서 이것을 캡슐화하십시오.이 경우에는 시스템에 따라 다르며 변경할 수 있으므로 static을 사용하지 마십시오.

일부 참조 :

관련 문제