너무 길어 화면에서 벗어나는 방법입니다. 프로그램하면서 인생을 더 편하게하기 위해서, 클래스의 변수를 참조하고 싶다면 사용하는 언어에 따라 Me
또는 this
개체를 사용할 수 있습니다.함수의 매개 변수를 포함하는 객체가 있습니까?
eg. Me.var1 = "Hello"
객체가 있는가 (같은 Me
) 함수의 매개 변수를 쉽게 참조 할 수 있도록 것인가?
eg. params.par1 = "World"
너무 길어 화면에서 벗어나는 방법입니다. 프로그램하면서 인생을 더 편하게하기 위해서, 클래스의 변수를 참조하고 싶다면 사용하는 언어에 따라 Me
또는 this
개체를 사용할 수 있습니다.함수의 매개 변수를 포함하는 객체가 있습니까?
eg. Me.var1 = "Hello"
객체가 있는가 (같은 Me
) 함수의 매개 변수를 쉽게 참조 할 수 있도록 것인가?
eg. params.par1 = "World"
짧은 대답은 아니오입니다. 불행히도 같은 이름을 가진 함수 매개 변수와 필드에 대해 매개 변수 범위와 클래스 범위를 구별하기 위해이 함수를 사용하려는 것 같습니다. 어느 다른 명명 체계를 사용하거나 다음을 수행하십시오
public class MyClass {
private string myString;
private int myInt;
public MyClass(string myString) {
this.myString = myString;
}
public int DoStuff(int myInt) {
this.myInt += myInt;
return this.myInt;
}
}
정말 선택하고 문제를 방지하기를, 당신은 이름을 바꿀 수 :
public class MyClass {
private string m_myString;
private int m_myInt;
public MyClass(string myString) {
m_myString = myString;
}
public int DoStuff(int myInt) {
m_myInt += myInt;
return m_myInt;
}
}
을 그리고 당신은 정말하기 전에 테스트를 작성하여 시작해야 코드에서 코드를 실수로 혼합하지 않았는지 확인할 수 있습니다.
각주
이 질문의 제목에 오는 사람들이 다음과 같은 정보를 찾을 수있는 바와 같이이 포함되어 있습니다.
당신은
그냥 프로그래밍의 용이성을 위해 말을하는 동안 - 나는 아래 함수에서 먼 길을 생각하면 내가
을 스크롤하지 않고도가 어떤 매개 변수보고 싶다 다른 이유로 인해 코드 내부에서 매개 변수를 실제로보고 싶다면 리플렉션이 필요합니다. 이것은 느리기 때문에 일반적으로 메소드를 찾은 다음 해당 메소드의 매개 변수를 반영합니다. 매우 포괄적 인 샘플은 MSDN - ParameterInfo Class을 참조하십시오. 코드의 관련 부분은 다음과 같습니다
foreach (MemberInfo mi in typeof(MyClass).GetMembers())
{
// If the member is a method, display information about its parameters.
if (mi.MemberType==MemberTypes.Method)
{
foreach (ParameterInfo pi in ((MethodInfo) mi).GetParameters())
{
Console.WriteLine("Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
}
}
당신은
MethodInfo barMI = bar.GetMethod("Foo");
ParameterInfo[] pars = barMI.GetParameters();
foreach (ParameterInfo p in pars)
{
Console.WriteLine(p.Name);
}
당신은 실행 시간에 이것을 사용할 수 있습니다 GetParameters()
반사 방법을 사용할 수 있어야합니다. 그러나 당신의 목표를 위해 나는 기능과 이름의 수를 리팩터링하려고 노력할 것이다. 코드 길이를 줄 당 80 개의 기호와 100 이하의 줄에있는 줄 수로 유지하려고합니다. 항상 가능한 것은 아니지만, 물건을 분리하고 클래스를 간단하게 유지하는 것이 좋은 목표입니다.
간단한 방법은 매개 변수를 객체에 캡슐화하여 참조 할 수 있고 intellitype (또는 예측 기능)를 사용하면 백업 할 필요없이 사용할 수있는 속성을 표시합니다.이
public class MyParamObject{
public string FirstParam {get;set;}
public string SecondParam {get;set;}
}
는 그런 다음
public void MyReallyOvergrownMethod(MyParamObject params){...
에
public void MyReallyOvergrownMethod(string firstParam, string secondParam){...
에서 방법을 변경할 수있다처럼 당신은 방법
//Deep inside the method
if(params.FirstParam == "SomeValue"{//Do something
이 같은 PARAMS 매개 변수를 사용할 수 있습니다 이것은 쓸모없는 해결책이다. n 당신의 방법을 리펙토링함으로써 가장 잘 해결 될 수있는 문제. 루프와 조건문을보고 개별적 방법으로 분리하십시오. 당신이 cleancoders를 검색하는 경우 이것에 물건을로드합니다.
"프로그래밍을 쉽게하기 위해서 - 만약 내가 함수에서 아주 길다면 어떤 매개 변수를 스크롤하지 않고도 볼 수 있습니다.": Visual Studio에서 코드가 표시되고, 스크롤바 바로 위를 가로 질러 잡아 당겨 창을 나눌 수 있습니다. 그런 다음 함수 선언을 한 창에 표시하고 다른 창에서 원하는만큼 스크롤 할 수 있습니다. 또는 창 메뉴 -> 분할을 사용할 수 있습니다.
해당 언어에는 기능이 없습니다. 로컬 변수 및 메서드 인수는 .NET 지터에 의해 특별히 처리됩니다. 은 주로 런타임에 최적화되어 있습니다. .NET이 수행 할 수있는 모든 작업, 또는 그러한 작업을 수행하는 것이 그러한 최적화를 무력화시킬 수 있습니다.
아주 간단한 해결책은 Window + Split을 사용하는 것이므로 코드에서 두 가지보기를 제공합니다. 맨 위를 메서드 헤더로 스크롤하고 코드를 맨 아래에 씁니다. 맨 아래 창에 더 많은 공간을 제공하도록 스플리터를 조정할 수 있습니다.
IntelliSense를 이용하는 것은 다른 방법입니다. 인수 이름 앞에 "par"와 같은 작은 문자열을 붙입니다. 그런 다음 코드에 "par"를 입력하면 IntelliSense 팝업 창에 인수 이름 목록이 자동으로 표시됩니다.
그러나 실제 문제의 경우에는 이러한 문제가 있습니다. 이와 같이되면 즉시 코드를 작게 만들기 위해 코드를 분할해야합니다. 30 년 동안 코딩 한 후 발견 한 몇 가지 어려운 사실이 있습니다.
왜 그런 것이 필요합니까? 우리가 당신의 필요를 이해한다면, 우리는 방법을 제안 할 수 있습니다. –
프로그래밍을 쉽게하기 위해서 - 만약 내가 함수에서 멀리 떨어져 있다면, 스크롤 할 필요없이 어떤 파라미터가 있는지보고 싶습니다. – CJ7
그래서 Visual Studio 편집기에서 응용 프로그램 자체가 아닌 무언가를 원하십니까? – Dialecticus