나는 최근에 내가이도우미 캐스팅 기능 - 코드 냄새가 있습니까?
((Dictionary<string,string>)value).Add(foo);
같은 것을 가지고 하나의 예를 들어 내 손가락에 쉽게 캐스팅하기 위해 기능을 사용하기 시작하기 시작했다 그래서 나는이
ToDictionary(value).Add(foo);
을 할 수있는 작은 작은 도우미 함수로 변환
코드 냄새입니까?
또한 간단한 예제는 무엇입니까? 내 스크립팅 엔진의 예를 들어 내가
ToStringVar(arg).Value="foo";
내가 정말 inorder를 값을 캐스팅하고 즉시 당신이 그것을 묶어야합니다 그것에서 속성을 얼마나 싫어하는 일이
((StringVariable)arg).Value="foo";
같은 일을 생각했습니다 이중 괄호 안에. 나는 마지막 한 느낌이 나는 그렇게 생각하지 않아요 (또한 내가 내 예제는 C#을 경우에도 불가지론이 언어를 표시 한)
하지만 첫 번째
* 니프 니프 *은 정향의 힌트와 함께, 계피 냄새. 다소 즐거운 꽃다발. :) 그다지 좋지는 않지만,'AddToDictionary (value, foo);'메소드에'Add '를 포함하고 싶을지도 모른다. – FrustratedWithFormsDesigner
Generics가 표면 상으로는 고쳐야 할 코드 냄새가 있습니다. 나는이 코드를 둘러싼 코드에서 'value'변수에 String-> String 맵이 할당되어 있다는 것을 모르는 이유를 알고 싶습니다. 답변이 "모호한 유형을 반환하는 모듈 함수를 작성했기 때문에 제어 할 수없는 사람이 있습니다." 이 경우 두 가지 일을합니다. 1) 'some guy'와 그의 코드에 대한 작업을 계속하고 2) 할당 시간에 데이터 유형의 모호성을 제거합니다. 값을 가져 오는 메서드 또는 코드 블록의 맨 위에 Dictionary을 선언하고 'value'를 할당합니다. –
Jason
@ Jason 정말 피할 수없는 일입니다. 그것은 단지 예일뿐입니다. 나의 두 번째 예도 보아라. (그것은 사실이다). 아마 두 번째 일은해야하지만 BaseVariable에서 전달되는이 함수로 인해 항상 그런 것은 아니며 때로는 IntegerVariable 또는 StringVariable로 캐스팅해야합니다. 그것은 바로 스크립팅 엔진이 현재 어떻게 작동하는지입니다. – Earlz