我有这两个功能,我觉得必须有一个优雅的功能方式来概括它们。
$scope.togglePick = function(){
let targetPhoto = $scope.photoImport.data[indexService.current];
targetPhoto.pick = !targetPhoto.pick;
if(targetPhoto.reject && targetPhoto.pick) {
targetPhoto.reject = false;
}
}
$scope.toggleReject = function() {
let targetPhoto = $scope.photoImport.data[indexService.current];
targetPhoto.reject = !targetPhoto.reject;
if (targetPhoto.reject && targetPhoto.pick) {
targetPhoto.pick = false;
}
}
我想我可以传递字符串参数togglePick = toggle('pick', 'reject')
并在[]
函数中使用toggle
表示法,但这感觉就像魔术字符串......即使它们具有属性名字,我不确定。我也可以:
function toggle(magicFlag){
let primary = magicFlag ? 'pick' : 'reject';
let secondary = magicFlag ? 'reject' : 'pick';
...
targetPhoto[primary] = !targetPhoto[primary];
...
}
再次,ick,魔术旗。除了每个函数中的longhand之外,还有更优雅的方法吗?
答案 0 :(得分:1)
这些函数中的代码量和细微差别使它们变得很好。如果没有处理属性字符串怪异,我就不会看到你如何真正制作这个通用的而保持可读性。有时可以不使用最通用的代码。必须在某处绘制沙子中的那条线。