저는 현재 서비스에 지시어에 존재하는 두 가지 방법을 리펙토링하려고합니다.Coffeescript에서 두 줄의 코드를 추상화하면
이 방법은 하나입니다
scope.computeStyle = (element, rowComponent) ->
elementHash = {}
if element.type == 'table'
elementHash.height = 600
if rowComponent?.height?
elementHash.height = rowComponent.height
else if element.type == 'single_value'
elementHash.height = 200
elementHash.width = 800
return elementHash
그들은 모두 같은 일 (조금 다르게) 수행
scope.computeStyle = (component) ->
elementHash = {}
if component.element.type == 'table'
elementHash.height = 600
if component.height?
elementHash.height = component.height * 50
else if component.element.type == 'single_value'
elementHash.height = 200
elementHash.width = 800
return elementHash
이 방법은 두 가지입니다. 그들은 element/component
(내 응용 프로그램에서 개체에 대한 데이터를 포함하는 개체)를 가져 와서 개체 유형 (이 경우 테이블 또는 단일 값)을 확인하고 높이 및/또는 너비 변환을 적용합니다. 내 질문이 들어오는 곳
angular = require "angular"
angular.module("myapp.dashboards.layouts").service("DashboardLayoutComputeStyle" ->
@computeStyle = (componentElement, height) ->
elementHash = {}
if componentElement.type == 'table'
elementHash.height = 600
if height?
elementHash.height = height
else if element.type == 'single_value'
elementHash.height = 200
elementHash.width = 800
return elementHash
@
)
이있어 :
내 추상화 방법이 라인에서 무엇을 할 확실하지 않다 : 내 서비스 내에서
이 내가 한 일이다if component.height?
elementHash.height = component.height * 50
0,123,516 : 방법의 하나에서
if height?
elementHash.height = height
이는 모습입니다
내가
rowComponent
과height
모두에 존재 여부를 확인해야합니다 나는이 두 라인의 리팩토링에 세 가지 제약이if rowComponent?.height? elementHash.height = rowComponent.height
: 방법이에서
이는 것처럼 보이는 것입니다 방법 2
component
이 존재 하는지를 확인할 필요는 없지만, 나는height
ex 방법이에, 나는 단순히elementHash.height
에 rowComponent.height
을 할당 할 수 있습니다 동안 방법의 하나의 메소드 하나
에서 주의자는, 나는 elementHash,height
component.height * 50
로 설정해야하는 것 I 추상적이 두 줄 알아?
을 마련했습니다. 고맙습니다! 그것을 밖으로 시도하고 당신에게 돌아 가자. – theGreenCabbage
방금 시도했지만,'computerStyle (component)'옵션 입력으로 메소드를 사용하면'rowComponent'의'when' 조건을 입력하지 않습니다. ''rowComponent ''문자열 리터럴이라고하는 두 번째 입력이 필요합니까? – theGreenCabbage
@theGreenCabbage 네,'rowComponent'가 다른 두 타입과 구별하기 위해 사용할 수있는'table' 또는'singleElement'과 다른 타입이 아니라면 선택적인 타입 var가 필요합니다. –