软件设计中的数字:7

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

小游戏

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

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

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

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

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

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

神奇吗?

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

今日知识

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

开发中常见的元素有:

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

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

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

后记

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


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

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

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

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

相关文章

牛客热题:比较版本号

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:比较版本号题目链接方法一:暴力…

电商平台接口自动化框架实践||电商API数据采集接口

电商数据采集接口 语言:python 接口自动化实现流程 红色为可实现/尚未完成 绿色为需要人工干预部分 自动生成测试用例模板(俩种方式二选一): mimproxy,通过浏览器代理抓包方式,访问 H5 或者 web 页面&a…

processing完整教程

概述:processing在我眼里就是libgdx的高度封装,如果各位会libgdx,学processing应该可以说是无师自通,当然processing是java语言那边的。 processing是什么? 官网是这样解释的:Processing 是一本灵活的软件…

每周一算法:无向图的最小环

题目链接 观光之旅 题目描述 给定一张无向图,求图中一个至少包含 3 3 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。 该问题称为无向图的最小环问题。 你需要输出最小环的方案,若最小环不唯一,输出…

core.sshd.xxxxxx文件过大

背景 【紧急】【应用分组】应用: 接入点服务, 分组: 观众预发, ip: xx.xx.xx.xx 【/】,磁盘使用率已连续2次大于90% [当前值:100%]。报警时间: 2024-05-13 14:07:01 原因 登录机器查看,发现根目录下有大量的崩溃文件将 / 打满 处理 1, 删…

【图解计算机网络】TCP 重传、滑动窗口、流量控制、拥塞控制

TCP 重传、滑动窗口、流量控制、拥塞控制 TCP 重传超时重传快速重传 滑动窗口流量控制拥塞控制慢启动拥塞避免拥塞发生快速恢复 TCP 重传 TCP重传是当发送的报文发生丢失的时候,重新发送丢失报文的一种机制,它是保证TCP协议可靠性的一种机制。 TCP重传…

mysql 离线安装

package download mysql https://dev.mysql.com/downloads/mysql/ libaio http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm 根据自己服务器选择下载对应的安装包及依赖 删除本机自带mysql相关 # 首先排查服务器自身是否有安装对应m…

抖音小店怎么运营才能出单呢?就这一个步骤做好,爆单不是梦!

哈喽~我是电商月月 新手做抖音小店绝对会有这两个问题:怎么运营?不出单怎么办?被这两个问题困扰着的商家,别着急! 看完我这一篇分享,你就知道自己的问题所在了! 抖音小店的运营中&#xff0c…

找不到msvcp100.dll,无法继续执行代码的问题详细解析

当您在运行某个程序或游戏时遇到提示“找不到msvcp100.dll,无法继续执行代码”,这通常意味着系统中缺失了一个重要的动态链接库文件,从而导致应用程序无法正常启动。为了解决这个问题,本文将介绍5种常见的解决方法,帮助…

法国签证照片尺寸怎么调整?图片调整尺寸的方法介绍

在我们的平时生活中,个人证件照是我们必不可少的身份证明,它是一种具有严格尺寸和比例要求的特殊照片,对于一些特定的场合,比如我们在申请法国签证的时候,需要把照片调整到规定的大小尺寸,那么,…

数字人实训室助推元宇宙人才培养

如今,全身动作捕捉设备已经大量应用在影视、动画、游戏领域,在热门的元宇宙内容领域中,全身动作捕捉设备逐步发挥着重要的作用,在包括体育训练、数字娱乐虚拟偶像、虚拟主持人、非物质文化遗产保护等等场景,数字人实训…

通过任意文件读取获取weblogic账号密码

对于weblogic获取到账号密码的前提是有任意文件读取存在,当任意文件读取存在时是可以读取配置文件来对账号密码进行解密。weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可…

为什么跨境电商大佬都在自养号测评?看完你就懂了!

在跨境电商的激烈竞争中,各大平台如亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、煤炉、敦煌、独立站、雅虎、eBay、TikTok、Newegg、Allegro、乐天、美客多、阿里国际、沃尔玛、Nike、OZON、Target以及Joom等,纷纷成为商家们竞相角逐市场份额的焦…

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景实体类参数API接口不可空参数可空参数参数类型MVC历程相关文章 背…

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)

1.一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下FTP服务器相关知识体系 3.欢迎批评指正,跪谢一键三连! kettle访问FTP服务器文件并处理数据至PostgreS…

南京中科微Ci24R1(DFN8)无线收发射频芯片性能介绍

Ci24R1是南京中科微研发的低成本高性能2.4GHz GFSK 无线收发芯片(支持蓝牙版),专为低功耗无限场合设计,集成嵌入式ARQ基带协议引擎的无线收发器芯片。 工作频率为2400MHz-2525MHz,共有126个1MHz带宽的信道&#xff0c…

美股开户,你需要知道这些!

想投资美股,却不知道开户需要多少钱? 别担心,这篇专栏将告诉你美股开户的资金要求以及相关注意事项。 1. 美股开户需要多少钱? 答案是:有的,但门槛并不高。不同平台对开户资金的要求有所不同,一…

APP反抓包 - 服务端证书验证

案例引入: app:泡泡聊天 版本:v1.7.4 发送登录请求,抓包发现提示:403 Forbidden 这里就是使用了服务端证书校验,因为charles没有安装证书,所以到达服务器的响应没有通过验证,返回异常。 美之图: 一,校验逻辑 在安卓开发时,在客户端预设证书(p12/bks),客户端…

flink cdc,读取datetime类型

:flink cdc,读取datetime类型,全都变成了时间戳 Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。具体来说,可以在MySQL数据源的debezium.source.converter配置项中指…

AI仿站源码教程

AI仿站源码教程 随着AI技术的不断发展,仿站技术已经越来越成熟,通过AI一键仿站,开发者们可以更快速、更高效地搭建网站。传统的前端开发过程中,需要大量的手工编码和设计,而AI仿站技术可以通过截图或视频,…