if-statement - IF 语句 - 如何减少/简化源代码量
问题描述
我在尝试减少我的函数的这部分代码时遇到了麻烦:
checkData(day, month, year, area)
{
if(area == "year" && year == this.year)
return true;
if(area == "month" && month == this.div && year == this.year)
return true;
if(area == "day" && day == this.day && month == this.div && year == this.year)
return true;
return false;
}
如何简化/减少这些 IF 子句的源代码数量?
解决方案
您的 if 子句可以重写为:
checkData(day, month, year, area)
{
if(year == this.year) {
if(area == "year") return true;
if(month == this.div) {
if(area == "month") return true;
if(day == this.day) {
if(area == "day") return true;
return false;
}
}
}
}
然后到:
checkData(day, month, year, area)
{
if(year != this.year) return false;
if(area == "year") return true;
if(month != this.div) return false;
if(area == "month") return true;
if(day != this.day) return false;
return area == "day";
}
另一种可能的语法,取决于编程语言(例如 C++):
checkData(day, month, year, area)
{
return
year != this.year ? false :
area == "year" ? true :
month != this.div ? false :
area == "month" ? true :
day != this.day ? false :
area == "day";
}
然后可以将其写入一行:
checkData(day, month, year, area)
{
return year != this.year ? false : area == "year" ? true : month != this.div ? false : area == "month" ? true : day != this.day ? false : area == "day";
}
一些语言支持这种语法(例如 C#):
checkData(day, month, year, area) => year != this.year ? false : area == "year" ? true : month != this.div ? false : area == "month" ? true : day != this.day ? false : area == "day";
推荐阅读
- json - Sorting and filtering for elements in list for documents containing list
- android - 是否可以在不连接 nav_graph 的情况下移动屏幕?
- r - 使用 R 从 SEC 抓取 13F 文件
- ruby-on-rails - 如何重用 Rails 中 lib 模块内的帮助程序中的方法?
- authentication - 使用用户别名登录的 Okta 配置
- javascript - 如何使用 OpenLayers 6.5 示例?
- responsive-design - Arrow SVG - 添加额外的线
- python - 获取开始日期和结束日期熊猫列之间的所有日期
- amazon-web-services - 实例的 AWS OpsWorks setup_failed - 无法部署_branch
- c# - 使用嵌套循环,我想将我的数据表填充到另一个数据表中