做二手钢结构网站有哪些做服装公司需要什么网站
- 作者: 五速梦信息网
- 时间: 2026年04月18日 10:04
当前位置: 首页 > news >正文
做二手钢结构网站有哪些,做服装公司需要什么网站,长沙私人做网站,浙江关键词优化1、分解条件表达式#xff08;Decompose Conditional#xff09; 可以将大块代码分解为多个独立的函数#xff0c;根据每个小块代码的用途#xff0c;为分解而得的新函数命名。对于条件逻辑#xff0c;将每个分支条件分解成新函数还可以带来更多好处#xff1a;可以突出条…1、分解条件表达式Decompose Conditional 可以将大块代码分解为多个独立的函数根据每个小块代码的用途为分解而得的新函数命名。对于条件逻辑将每个分支条件分解成新函数还可以带来更多好处可以突出条件逻辑更清楚地表明每个分支的作用并且突出每个分支的原因。 例如 if (!aDate.isBefore(plan.summerStart) !aDate.isAfter(plan.summerEnd))charge quantity * plan.summerRate; elsecharge quantity * plan.regularRate plan.regularServiceCharge; 改为 if (summer())charge summerCharge(); elsecharge regularCharge(); 2、合并条件表达式Consolidate Conditional Expression 一串条件检查检查条件各不相同最终行为却一致。如果发现这种情况就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。 将检查条件提炼成一个独立的函数对于厘清代码意义非常有用因为它把描述“做什么”的语句换成了“为什么这样做”。 如果这些检查的确彼此独立的确不应该被视为同一次检查就不能使用本项重构。 重构例子 if (anEmployee.seniority 2) return 0; if (anEmployee.monthsDisabled 12) return 0; if (anEmployee.isPartTime) return 0; 改为 if (isNotEligibleForDisability()) return 0; function isNotEligibleForDisability() {return ((anEmployee.seniority 2)|| (anEmployee.monthsDisabled 12)|| (anEmployee.isPartTime)); } 3、以卫语句取代嵌套条件表达式Replace Nested Conditional with Guard Clauses 如果某个条件极其罕见就应该单独检查该条件并在该条件为真时立刻从函数中返回。 这样的单独检查常常被称为“卫语句”guard clauses。 至于“单一出口”规则其实不是那么有用。保持代码清晰才是最关键的 例子 function getPayAmount() {let result;if (isDead)result deadAmount();else {if (isSeparated)result separatedAmount();else {if (isRetired)result retiredAmount();elseresult normalPayAmount();}}return result; } 改为 function getPayAmount() {if (isDead) return deadAmount();if (isSeparated) return separatedAmount();if (isRetired) return retiredAmount();return normalPayAmount(); } 4、以多态取代条件表达式Replace Conditional with Polymorphism 复杂的条件逻辑是编程中最难理解的东西之一因此我一直在寻求给条件逻辑添加结构。很多时候我发现可以将条件逻辑拆分到不同的场景或者叫高阶用例从而拆解复杂的条件逻辑。这种拆分有时用条件逻辑本身的结构就足以表达但使用类和多态能把逻辑的拆分表述得更清晰。 一个常见的场景是我可以构造一组类型每个类型处理各自的一种条件逻辑。例如我会注意到图书、音乐、食品的处理方式不同这是因为它们分属不同类型的商品。最明显的征兆就是有好几个函数都有基于类型代码的switch语句。若果真如此我就可以针对switch语句中的每种分支逻辑创建一个类用多态来承载各个类型特有的行为从而去除重复的分支逻辑。 另一种情况是有一个基础逻辑在其上又有一些变体。基础逻辑可能是最常用的也可能是最简单的。我可以把基础逻辑放进超类这样我可以首先理解这部分逻辑暂时不管各种变体然后我可以把每种变体逻辑单独放进一个子类其中的代码着重强调与基础逻辑的差异。 多态是面向对象编程的关键特性之一。跟其他一切有用的特性一样它也很容易被滥用。我曾经遇到有人争论说所有条件逻辑都应该用多态取代。我不赞同这种观点。我的大部分条件逻辑只用到了基本的条件语句——if/else和switch/case并不需要劳师动众地引入多态。但如果发现如前所述的复杂条件逻辑多态是改善这种情况的有力工具。 例子 switch (bird.type) {case EuropeanSwallow:return average;case AfricanSwallow:return (bird.numberOfCoconuts 2) ? tired : average;case NorwegianBlueParrot:return (bird.voltage 100) ? scorched : beautiful;default:return unknown; } 改为 class EuropeanSwallow {get plumage() {return average;} } class AfricanSwallow {get plumage() {return (this.numberOfCoconuts 2) ? tired : average;} } class NorwegianBlueParrot {get plumage() {return (this.voltage 100) ? scorched : beautiful;} } 5、引入特例Introduce Special Case 一个数据结构的使用者都在检查某个特殊的值并且当这个特殊值出现时所做的处理也都相同。如果我发现代码库中有多处以同样方式应对同一个特殊值我就会想要把这个处理逻辑收拢到一处。 处理这种情况的一个好办法是使用“特例”Special Case模式创建一个特例元素用以表达对这种特例的共用行为的处理。这样我就可以用一个函数调用取代大部分特例检查逻辑。 例子 if (aCustomer unknown) customerName occupant; 改为 class UnknownCustomer {get name() {return occupant;} } 6、引入断言Introduce Assertion 常常会有这样一段代码只有当某个条件为真时该段代码才能正常运行。 这样的假设通常并没有在代码中明确表现出来你必须阅读整个算法才能看出。有时程序员会以注释写出这样的假设而我要介绍的是一种更好的技术——使用断言 断言是一个条件表达式应该总是为真。如果它失败表示程序员犯了错误。断言的失败不应该被系统任何地方捕捉。整个程序的行为在有没有断言出现的时候都应该完全一样。实际上有些编程语言中的断言可以在编译期用一个开关完全禁用掉。 断言是一种很有价值的交流形式——它们告诉阅读者程序在执行到这一点时对当前状态做了何种假设。另外断言对调试也很有帮助。而且因为它们在交流上很有价值即使解决了当下正在追踪的错误我还是倾向于把断言留着。 例如 if (this.discountRate)base base - (this.discountRate * base); 改为 assert(this.discountRate 0); if (this.discountRate)base base - (this.discountRate * base);
相关文章
-
做二手车广告推广哪家网站好农博园网站建设投标书
做二手车广告推广哪家网站好农博园网站建设投标书
- 技术栈
- 2026年04月18日
-
做俄罗斯生意网站顶尖设计吧官网
做俄罗斯生意网站顶尖设计吧官网
- 技术栈
- 2026年04月18日
-
做多语言网站多少钱郑州哪家公司做网站
做多语言网站多少钱郑州哪家公司做网站
- 技术栈
- 2026年04月18日
-
做法城乡建设部网站wordpress自动识别手机
做法城乡建设部网站wordpress自动识别手机
- 技术栈
- 2026年04月18日
-
做繁体书的网站百度网页制作网站建设
做繁体书的网站百度网页制作网站建设
- 技术栈
- 2026年04月18日
-
做防水广告在哪个网站最好互联网都有哪些公司
做防水广告在哪个网站最好互联网都有哪些公司
- 技术栈
- 2026年04月18日
