软件设计中的数字:7

“ 使软件更易理解的秘密:米勒法则”

小游戏

学习之前先一起玩一个小游戏。

3秒钟时间,看看下面的图片中有多少个小块?

在这里插入图片描述
3秒到了,数出来了吗?22个。

没数出来也没关系,我也没数出来o(╥﹏╥)o

现在,我对上面的小方块施一下魔法,重新再来一遍,还是3秒。

准备,开始!在这里插入图片描述
这次怎么样?数出22这个数字了吗?还是6、10、6这几个数字?

神奇吗?

其实这就是米勒法则的魔力。

今日知识

依靠魔法数字7约束元素数量,可以使软件更易理解(降低认知成本、降低维护成本、增加可扩展性)。

开发中常见的元素有:

  • 包(父元素为项目)
  • 类(父元素为包)
  • 属性(父元素为类)
  • 方法(父元素为类)
  • 参数(父元素为方法)
  • 一行代码(父元素为方法)
  • ……

以方法为例,类中的方法数量也应该遵循米勒法则(即方法数量小于等于7个)。如果超出此数量,可以通过重构来优化软件结构(使用数字7约束,找到相似点分类)。

但需要注意的是,这样虽然可以降低代码的认知难度,但却也要付出不少其他成本(开发成本、风险成本等),实际操作时应权衡各个质量属性后进行综合决策。

后记

在这里插入图片描述
画图的时候,右图明明是我复制左图后一个个小块移动分组的,但写文章时怕数的不对,又重新数了很多遍,甚至还有几次数出23个(汗)。


但右图却很有信心,一定是6+10+6个,从没再数过。是不是又证明了文中提到的方法确实有效呢?还是挺有趣的吧

内容还感兴趣吗?公众号中会有更多相关内容持续更新哦
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696153.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第207期】基于matlab的单相光伏并网系统仿真,并网策略采用基于扰动观测法的MPPT模型和使用电压电流双闭环SPWM控制。

操作环境: MATLAB 2022a 1、算法描述 本文将重点分析光伏发电最大功率点跟踪(MPPT)技术和逆变器的并网控制技术,并在Simulink环境下建立模拟系统,以体现这些技术的应用与效果。文章结构如下:首先简介光伏…

重生奇迹MU魔法师PK攻略详解

一、加点 力量和智力属性都可以增加命中,但对魔法师来说,力量属性不能增加攻击力,所以不需要点力量。敏捷属性可以提升魔法师的防御力,体力可以增加血量,这里可以选择智力为主,敏捷和体力为辅的加点方式&a…

2024第八季完美童模 【星光】品牌赛区 【直通】赛 完美收官

2024年5月1日,春风徐徐的【星光品牌赛区】热闹非凡,备受瞩目的第八季完美童模【星光品牌赛区】赛区【直通赛】在这一天正式拉开了帷幕。比赛现场,童模们身着华服,在舞台上演绎了“亚特兰蒂斯”的时尚主题赛。 参赛选手们身着带有海…

12个乒乓球,有一个次品,不知轻重,用一台无砝码天平称三次,找出次品,告知轻重?

前言 B站上看到个视频:为什么有人不认可清北的学生大多是智商高的? 然后试了下,发现我真菜 自己的思路(失败) 三次称重要获取到12个乒乓球中那个是次品,我想着将12个小球编号,分为四组,每组…

感应关盖垃圾桶项目

1.功能描述 检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖 2.硬件说明 SG90舵机,超声…

英语学习笔记12——名词所有格的运用

Whose is this … ? This is my/your/his/her … 这……是谁的?这是我的 / 你的 / 他的 / 她的…… Whose is that … ? That is my/your/his/her … 那……是谁的?那是我的 / 你的 / 他的 / 她的…… 词汇 Vocabulary father n. 爸爸 口语&#xf…

算法题解记录25+++验证二叉搜索树(百日筑基)

题目描述: 难度:中等 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必…

十二种网络威胁防护方案

一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任…

基于网络的无人海洋船舶控制

书籍:Network-Based Control of Unmanned Marine Vehicles 作者:Yu-Long Wang,Qing-Long Han,Chen Peng,Lang Ma 出版:Springer 书籍下载-《基于网络的无人海洋船舶控制》控制系统中的通信网络可能引起延…

解决在Outlook中预定Teams会议不显示入会链接的问题

今天遇到一个很蛋疼的teams问题,花了点时间才解决。本来以为是很简单的问题,随便网上冲浪一下就能找到答案的,结果根本就没有好的解决方案,所以我分享出来希望后来的老哥少走点弯路。 问题描述 简单来说,就是在Outlo…

Star CCM+衍生零部件的创建

前言 在一个仿真计算项目中,分配零部件至区域、划分网格后。下一步可以先将需要监测的点、面建立出来,方便后续创建报告。Star中需要创建点、面是在衍生零部件下创建。衍生零部件→右键→新建(如下图1所示)。通过衍生零部件可以创…

15集合的应用

集合的概念 集合是一个容器,可以容纳其他类型的数据,前面所讲的数组就是一个集合。 所有的集合相关的类和接口都在java.util包下 特点 集合不能直接存储基本数据类型(但是代码上不需要体现,因为Java中有自动装箱)另外集合不能直接存储Java…