2016-11-07 2 views
0

나는 내 프로그램에 대한 방법을 만들어 왔으며 지금은 몇 가지 코드를 리팩토링, 그리고 난 내가 처음에 만든 모든 방법을 변경하고 찾을 : 내가 뭐하는 거지함수 출력 유형, 특수 출력 또는 void?

public static string updateTextBox(string textbox){.... return "";} 

public static void updateTextBox(TextBox textbox){...textbox.Text = "";} 

에 이것과 함께 몇 가지 장점이 있습니다 : 1.) 첫 번째 방법은 내가 문자열을 반환 할 수 있고 때로는 더 많은 출력 (예 : IF 문이 실패하면 전경 색상 변경), 두 번째 방법으로 추가해야 할 것으로 나타났습니다. 두 번째 매개 변수를 추가하기 만하면됩니다.

public static void updateTextbox(TextBox textbox1, TextBox textbox 2){...} 

2) I)는 첫 번째 방법과 두 번째 방법

return; 

쉽게 그것을 내가 오류를

return null; 

3.

을 일으킬 수 있었다있는 유일한 방법을 코드를 종료 할 수 있습니다 이 방법들을 호출 할 때 훨씬 더 깨끗해 보입니다.

textbox.Text = MethodClass.updateTextbox(TextBox textbox) 


MethodClass.updateTextbox(TextBox textbox) 

프로그래밍 방식을 사용하는 멍청한 녀석입니다. void 방식에 대한 리팩터링과 관련된 문제가 있습니까?

+0

확장 메서드를 사용할 수 있습니다 – Arash

+2

메서드가 실제로 계산을 수행합니까? TextBox에 대해서만 * 사용할 수 있습니까? 대량의 코드가 뭔가 효과가 있다면, 나는 "가치 계산"과 "UI 업데이트"에 대한 우려를 개인적으로 분리하는 첫 번째 버전을 고수 할 것입니다. –

+0

@ 존 스키켓, 그건 대단한데, 그래서 만약 내가 주로 UI를 업데이 트하는 경우 (예 : 값이 설정 한도를 밑도는 것처럼, 전경색을 바꾼다), 아프다 첫 번째 방법으로, 나는 약간의 계산을하고 있고 싶다. 그냥 값을 출력하려면 먼저 형식을 사용하십시오. – JohnChris

답변

1

값 양식 방법을 반환할지 여부와 상관없이 모두 요구 사항에 따라 다릅니다. 따라서 클래스 멤버를 업데이트하려면 텍스트 상자에서 설정하려는 메서드의 값을 반환 할 필요가 없습니다. 메소드에서 클래스 멤버를 전달할 필요가 없으므로 메소드에서 이미 액세스 할 수 있습니다.

클래스 멤버 대신 참조 유형 변수 인 경우 매개 변수로 전달하고 메서드 자체 내에서 수정할 수 있습니다. 값 유형이 있으면 ref 또는 out 매개 변수로 전달할 수 있습니다.

다시 말하지만, 모두 귀하의 요구 사항에 달려 있습니다.

로직 목적으로 반환 값을 사용할 수 있습니다. 숫자가 palindrome인지 여부를 확인하는 메소드가 있으면 true 또는 false를 반환하므로이 경우 반환 유형이 유용합니다. 당신은 당신이 어디에서 돌아가고 싶은 곳과 당신이 원하는 곳에서 방법으로 얻은 가치를 원한다고 생각할 수 있습니다.

DoSomething과 같은 메서드가있는 경우 (int num = 1*2;과 같은 간단한 메서드 일 뿐이며 반환 값에 신경 쓰지 않으므로 void 유형을 사용할 수 있습니다.