是什么

对称原理就是讲究形式上的对称,比如有上就有下,有左就有右,有主动就有被动。

也就是说,我们在思考一个处理时,也要想到与之对称的处理。比如有给标志位置1的处理,就要有给标志位0的处理。

为什么

具有对称性的代码能够帮助读代码的人推测后面的代码,提高其理解代码的速度。同时,对称性会给代码带来美感,这样有助于他人理解代码。

此外,设计代码时将对称性纳入考虑得到范围能防止我们在思考问题时出现遗漏。如果说代码的条件分支是故障的温床,那么对称性就是思考的框架,能有效阻止条件遗漏。

怎么做

在出现“条件”的时候,我们要注意它的“反条件”。每个控制条件都存在与之成对的反条件(与指示条件相反的条件)。要注意条件与反条件的统一,保证控制条件具有统一性。

我们还要考虑到例外情况并极力避免其发生。例外情况的特殊性会破坏对称性,成为故障的温床,特殊情况过多意味着需求没有得到整理。此时应重新审视需求,尽量从代码中剔除例外情况。

命名也要讲究对称性。命名时建议使用set/get,start/stop,begin/end和push/pop等成对的词语。

七个设计原理③——对称原理相关推荐

  1. 配置中心Apollo的设计原理

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://urlify.cn/eIBZne 前言 Ap ...

  2. 移动端界面中的版式设计原理

    "我总觉得页面不太好看但是我又说不出来","我不懂设计,但是我就是觉得不协调","你觉得这好看?你的审美要加强啊"这些听着熟悉的话往往是产品 ...

  3. 《超越平凡的平面设计: 版式设计原理与应用》—色轮

    本节书摘来自异步社区<超越平凡的平面设计: 版式设计原理与应用>一书中的色轮,作者[美]John McWade,更多章节内容可以访问云栖社区"异步社区"公众号查看. 色 ...

  4. 面向对象的七种设计原则

    下面的截图:主要讲述了七种设计原则定名称,定义以及使用的频率.  原则一:(SRP:Single responsibility principle)单一职责原则又称单一功能原则 核心:解耦和增强内聚 ...

  5. 一颗芯片的内部设计原理和结构

    关注.星标公众号,直达精彩内容 来源:网络素材 摘要 作为一名电源研发工程师,自然经常与各种芯片打交道,可能有的工程师对芯片的内部并不是很了解,不少同学在应用新的芯片时直接翻到Datasheet的应用 ...

  6. 某单位招聘考试需要考核数学英语计算机,2010年10月自学考试电子商务网站设计原理试题...

    全国2010年10月高等教育自学考试 电子商务网站设计原理试题 课程代码:00906 一.单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将 ...

  7. java B2B2C Springcloud电子商城系统-Ribbon设计原理

    Ribbon 是netflix 公司开源的基于客户端的负载均衡组件,是Spring Cloud大家庭中非常重要的一个模块:Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质 ...

  8. quartz 分布式_后端必备分布式技术之-调度系统Quartz设计原理

    调度系统作为分布式系统技术中重要的一环,了解其技术原理必不可少,不同系统内部采用的调度系统叫法不一样,但大致功能都类似,而Quartz作为经典的开源企业级调度系统,怎么能不研究一下呢? 为什么要学习q ...

  9. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    为什么80%的码农都做不了架构师?>>>    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...

最新文章

  1. html多列显示,html – CSS3多列列表
  2. 带你从源码角度分析ViewGroup中事件分发流程
  3. 二进制、字节、int范围、编码
  4. 基于蚂蚁金服「如何管理好10万行代码」搭建了 Vue 项目架构
  5. 主页被篡改修正方法(续)
  6. python-turtle库的基本操作
  7. 《天天数学》连载24:一月二十四日
  8. 基于Xilinx Spartan-7 FPGA实现SMC接口
  9. 每天一道剑指offer-链表中第k个节点
  10. Rust : 宏、重复、及向量与递归实例
  11. Python pdf 转jpg/png工具
  12. Java Programming Review 02
  13. 微信小商店的选型参考及感想
  14. 济安横断面怎么去水印_济安横断面设计软件
  15. 流氓软件驱动精灵 强制锁定浏览器主页
  16. K8S异常 sonar status is ‘PENDING’
  17. win7临时文件_小甲办公 | 如何在2020年优雅地使用win7
  18. 苹果净利润同比下滑19%,大中华区下滑30%;养老基金将入股市投资,首批可能达2000亿元
  19. 操作系统实验——模拟动态分区首次适应分配和回收算法
  20. java之冒泡排序8个数

热门文章

  1. “小朋友大人排队”问题(十分钟带你玩转 牛客网 CM11 链表分隔)
  2. Java:强引用,软引用,弱引用和虚引用
  3. 朋友帮写的软文,大家看下如何
  4. oracle9i档案文件创建,Oracle9i数据库系统管理 哪里有档案管理软件啊?
  5. Li‘s 核磁共振影像数据处理-26-ITK-SNAP半自动勾画病灶
  6. gimp 路径工具(9)--勾画路径
  7. 人民艺术家梁永和丹青传情新时代
  8. wordcount.java_WordCount(java)
  9. mongodb nginx代理问题
  10. 令行政小姐姐“上头”的行政管理系统,工作爽到飞起~