나의 코드 3 메시지는 모든 말은오브젝트 초기 단순화할 수 있습
내 이제까지 성장 지식에 대한 갈증(및 내 OCD)하고 싶"fix"내 코드는 이러한 메시지 말라 나타납니다. 내가 설정할 수 있습니다 그것은 그렇게 이러한 메시지 말라 나타나지만 나는 아직도 내 머리에는 그들이 거기에서 배경을 오른쪽에 앉아 있다. 면 누구나 지적하는 방법"를 단순화하면 초기화"그 위대한 것입니다 그래서 나는 내 능력을 향상시킬 수 있습. 면 더 많은 코드가 필요 저에게 알려 그것을 추가할 수 있습니다.
1:
TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage);//issue on this line
node.Tag = drive;
2nd:
DirectoryInfo di = new DirectoryInfo(dir);
TreeNode node = new TreeNode(di.Name, 0, 1); //this line
심으로 트리 노드의가 있기 때문에 그들에게 주신 동일한 이름이지만 나가도 이름을 변경하지 않았't 차이를 확인합니다.
3:
OleDbCommand select = new OleDbCommand();//this line
select.Connection = cnDTC;
select.CommandText = string.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})", strSQL2);
는 동안 이전의 모든 제안은 또한 좋은,나는 추가 세 번째는 방법입니다. 을 끄는 그 경고하고 그들을 무시합니다. 는 동안 나는 감사하는 Microsoft's 도 모든 사람을 얻 코딩을 효율적으로 깔끔하게,이것은 좋은 제안에서 내 생각하고 그것이 실제로 생산하고 읽기가 어렵고 코드를 편집합니다.
첫째,본질적으로 변 초기화 개체로 하나의 라인의 코드와 오류 보고하고 있습니다. 당신이 20 비트의 로드되는 데이터는 객체로 변신시에 오류가 첫 번째 라고 말하지 않는 숙박 시설 오류가 발생한. 디버깅을 돕지 않을 것이 당신 다음과 같은 전체 블록의 코드에 오류가 있습니다.
둘째,당신이 미래에 필요 밖으로 확장 코드를 추가 코드에 대한 특정 속성을 지금 할 필요가 이것에서 분리되는 코드입니다. 이에 추가하는 파편과 분리과 관련된 비트의 코드(아마,그것이's 논쟁의 여지가).
모두의 이러한 문제를 처럼 보일 수 있습니다 아주 사소한 것들,그러나 경고 제안정한 사소한 일이다. 의 이익을 위해 일괄의 초기화를've 만든 코드를 디버깅하기 어렵게 수정할 수 있습니다. 이것은 나쁜 무역에 내 의견입니다.
비활성화할 수 있습 경고 마우스 오른쪽 클릭하여 경고 및 선택하면"억제"거나,도구>옵션>텍스트 편집기>C#>코드 스타일>General>아보세요체 이니셜라이저된다고 설정한 경고 없음,또는 설정 기본 설정하는 아니다.
전:
TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage);
node.Tag = drive;
후:
var node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage) {
Tag = drive
};
전:
DirectoryInfo di = new DirectoryInfo(dir);
TreeNode node = new TreeNode(di.Name, 0, 1); //this line
후:
var node = new TreeNode((new DirectoryInfo(dir)).Name, 0, 1);
:전
OleDbCommand select = new OleDbCommand();//this line
select.Connection = cnDTC;
select.CommandText = string.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})",
strSQL2);
후:
var select = new OleDbCommand(
String.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})", strSQL2),
cnDTC);
3(문자열을 보간):
var select = new OleDbCommand($"SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({strSQL2})",
cnDTC);
BTW:때마다 이런 종류의 메시지가 나타납니다려 퍼팅 커서에는 라인과 히트Ctrl+<kbd 니다.lt;/kbd>(거나 클릭하여 나타나는 전구)-여"빠른 수정/빨리-리팩터"
더 읽어var(정말 악😉)및 몇 가지 더 설명서에 대해체 및 수집 이니셜라이저
나는 유사한 문제와 이 코드:
Customer oCust = new Customer();
oCust.Address = txtAddress.Text;
oCust.City = txtCity.Text;
oCust.State = txtState.Text;
고 그것을 해결이 코드:
Customer oCust = new Customer()
{
Address = txtAddress.Text,
City = txtCity.Text,
State = txtState.Text
};
Sooo...을 끄고 경고 메시지(IDE0017)(에 대 2017/2019):
클Tools탭입니다. 다음으로 내려<kbd 자
다음|TextEditor|C#|CodeStyle|일반|
아래Expressoin 환경설정변경아보세요체 이니셜라이저하려면**없음**.
또는 당신은 떠날 수 있는 기본 설정으로Yes변경 심각도에서 경고를 제출한다. 지금 그것을 보여줍으로 메시지 오류 목록에.
나는 다음과 같[@tonyenkiducx 응답](https://stackoverflow.com/a/45673334/975724 어),하지만 나는 느낌 있는 경우에는 더 큰 그림 아이디어야 하는 논의된다.
에서 제 경험,리팩터에 의해 제공되는 제안 Visual Studio 도움이되지 않습니다. 내가 생각하는 더 큰 문제를 고려할지 여부를 코드 디자인이 올바른 것입니다. 에서 객체지향 Propgramming,속성을 설정 한 후 다른월을 위반하는 캡슐화합니다. 아이디어가는 개체의 항상 있어야에서 유효한 상태의 후 회원에 액세스/이라는 순간까지 개체가 파괴되었다. 이 경우에,상태이어야 유효한 각 후 속성을 설정합니다. 적절한 캡슐에 넣기로 이어질 것은 전반적인 개선된 소프트웨어 응용 프로그램으로 있기 때문에 증가 점착력이 있습니다.
의객체의 초기화하는 간소화할 수 있습니다
메시지가에 유용할 수 있습니다 검출하는 포인트에서 당신의 코드를 사용할 수 있습니다패턴 생성,에서 이벤트를 캡슐화는 위반:
-추상적인 공장 패턴 -Builder 패턴 공장 방법 패턴 -패턴 프로토 타입
이를 통해 우려에 의해@tonyenkiducx:
첫째,본질적으로 변 초기화 개체로 하나의 라인의 코드와 오류 보고하고 있습니다. 당신이 20 비트의 로드되는 데이터는 객체로 변신시에 오류가 첫 번째 라고 말하지 않는 숙박 시설 오류가 발생한. 디버깅을 돕지 않을 것이 당신 다음과 같은 전체 블록의 코드에 오류가 있습니다.
둘째,당신이 미래에 필요 밖으로 확장 코드를 추가 코드에 대한 특정 속성을 지금 할 필요가 이것에서 분리되는 코드입니다. 이에 추가하는 파편과 분리과 관련된 비트의 코드(아마,그것이's 논쟁의 여지가).
그래서 대신의 인화점에서 객체가 소비되는 Visual Studio 종종 제안,나는 당신이 사용하는 것이 좋을 생성 패턴이다. 이 제거되지 않을 수 있 메시지 단순화,그러나 이 시점에서,당신은 당've 신중하게 고려하는 메시지를 플래그하고 안전하게 억제하는니다.