重构 If / Elseif

and*_*dro 6 julia

我有一个带有很多 if/elseif 语句的函数。我正在寻找一种方法来改进此函数的代码,替换 IF/ELSEIF。我正在尝试使用字典,但我不确定这是否是最好的方法。提高可读性也很重要。

\n
if lowestDim == "Campaign" || lowestDim == "Adgroup"\n    if campaignType != "PERFORMANCE_MAX"\n        drillThroughMap["DRILLLINK5"] = Dict(\n            "filters" => lowestDim == "Campaign" ? Dict([\n                SQLFilter("CAMPAIGN", "=", onlyCampaign), SQLFilter("SOURCE", "=", source)]) : Dict([\n                    SQLFilter("CAMPAIGN", "=", onlyCampaign), SQLFilter("SOURCE", "=", source), SQLFilter("ADGROUP", "=", adgroup)]),\n            "drillTo" => demographicDashboard\n        )\n    end\n    drillThroughMap["DRILLLINK10"] = Dict(\n        "filters" => Dict(),\n        "drillTo" => campaignComparisonDashboard\n    )\nend\n\nif presetDateRange != "Last 12+ Months" && (lowestDim != "Keyword" ) && !(source == "google" && (campaignType == "SMART" || campaignType == "PERFORMANCE_MAX"))\n    drillThroughMap["DRILLLINK6"] = Dict(\n        "filters" => Dict([SQLFilter("CAMPAIGN_FROM_DIAGNOSIS", "=", lowestDim == "Campaign" ? campaignStr : onlyCampaign * " \xc2\xb7\xc2\xb7 " * source)]),\n        "drillTo" => adgroupComparisonDashboard\n    )\nend\n\nif  presetDateRange != "Last 12+ Months" && lowestDim != "Campaign" && (campaignType == "SEARCH")\n    drillThroughMap["DRILLLINK7"] = Dict(\n        "filters" => Dict([SQLFilter("ADGROUP_FROM_DIAGNOSIS", "=", adgroup * " \xc2\xb7\xc2\xb7 " * onlyCampaign * " \xc2\xb7\xc2\xb7 " * source)]),\n        "drillTo" => keywordComparisonDashboard\n    )\nelseif presetDateRange != "Last 12+ Months" && lowestDim == "Campaign" && (campaignType == "SEARCH")\n    drillThroughMap["DRILLLINK7"] = Dict(\n        "filters" => Dict([SQLFilter("CAMPAIGN_FROM_DIAGNOSIS", "=", onlyCampaign * " \xc2\xb7\xc2\xb7 " * source)]),\n        "drillTo" => keywordComparisonDashboard\n    )\nend\n
Run Code Online (Sandbox Code Playgroud)\n

只是一段功能代码。

\n