“米卡多”方法
你有没有考虑过对一个软件进行一个较大的修改?或者做一些在一天之内很难完成的事情?你在这种变更面前退缩或者放弃了么?或者你是不是会在夜里为这事做恶梦?想起来合并这些代码或者做影响分析就头疼不已。
如果你遇到过这些情况,请继续阅读。我想你应该会希望学会这种米卡多方法的。
米卡多方法,实际来源于一个游戏。游戏说明如下:
IKADO SPIEL(“米卡多游戏棒”)1936年源于匈牙利,传到美国,而后盛行全世界,是一种适合儿童和成人玩的游戏,游戏人数2人或以上,游戏工具是31根不同颜色的竹签组成,具体组成如下:1支带螺旋的“米卡多”游戏棒,每支20分;5支中间红两边蓝的游戏棒,每支10分;5支三节红两节蓝的游戏棒,每支5分;10支红黄蓝三色的游戏棒,每支3分;10支红蓝两色的游戏棒,每支2分。
MIKADO是那根20分的主棍,是个日本皇帝的名字,所以德国也把这个游戏叫做皇帝游戏。在中国把它叫做“CHIEN TUNG”,并且这游戏正是来源于此“佛教的预言方法”,考虑到外国人拼写中文读音的偏好,应该就是“算命的签筒”的意思。此游戏要求参与者保持冷静的头脑,具备熟练的技术,并要求注意力集中,不同的游戏棒有着不同的分值,分值多者便为赢家。
游戏规则的是:一个参加者把游戏棒控制在手中,握拳,平放在桌面上后突然撒手,游戏棒将散落在桌上,堆成圈状,如果不满意所处的圈状,可以重复再扔。接着,参加者用手指逐一试着去提举游戏棒,但与此同时你决不能触动别的游戏棒。一旦“米卡多游戏棒”被提举后,参加者就可借助此棒来提举其它颜色的游戏棒了。如果你在游戏过程中不小心触动其它的游戏棒,那么你就把你已提取的游戏棒的分值相加,之后由另一参加者开始他的游戏过程。
你为了找到一个容易移动的棍子,必须仔细寻找,如果你发现移动一根棍子可能导致其他的棍子被影响,那么你会尝试选择其他的棍子。米卡多方法就是这样的:
1)你希望更改一个软件,例如重构,或者希望加入一个新的功能
2)你开始用最简单易行的方法来修改软件
3)如果这个可行:那么很好,直接提交到CVS,如果不行,那么想想办法,还要修改哪些地方才能执行刚才第二步想出来的方法
4)开始迭代上述步骤
上述方法中有一些关键因素:
1)你先不做太多分析就决定了一个变更:你的编译器和单元测试会告诉你是否可行。注意:如果你没有单元测试,那么这个是很危险的事情
2)如果你选择的变更不能运转,那么请先回滚,然后分析
3)你用笔记下来所有需要变更的地方,例如方向图
使用米卡多方法,你会发现你的代码总是能编译成功,而且你会对全局有所掌控,即使你转移了注意力,再回来也能很快进入角色。
- 大小: 10.8 KB
分享到:
相关推荐
第五次作业函数第一题--
本项目旨在利用深度学习方法实现作物病害的自动诊断。作物病害是农业生产中的重要问题,及时诊断和处理对于减少产量损失至关重要。 我们采用深度学习算法,通过分析作物的图像,实现对病害的自动识别和分类。项目使用的数据集包括公开的作物病害图像数据集,如ISIC等,并进行了预处理,包括图像增强、分割和特征提取等。 在运行环境方面,我们使用Python编程语言,基于TensorFlow、PyTorch等深度学习框架进行开发。为了提高计算效率,我们还使用了GPU加速计算。此外,我们还采用了Docker容器技术,确保实验结果的可重复性。 项目完成后,将实现对作物病害的快速、准确诊断,为农业生产提供有力支持,有助于减少产量损失。同时,项目成果也可应用于其他图像识别和分类任务。
机械设计CD驱动印刷设备step非常好的设计图纸100%好用.zip
python烟花代码
附件中是一个简单的烟花效果的代码示例: 在Python中,可以使用多种方式来模拟烟花效果,其中一种常用的方法是使用turtle模块,它提供了一个画布和一个小海龟,可以用来绘制各种图形。 这段代码首先导入了turtle模块和random模块,然后在屏幕上绘制了10次烟花爆炸的效果。每次爆炸都是由5个小圆组成,颜色随机选择,圆的大小也是随机的。 请注意,这段代码需要在支持turtle模块的Python环境中运行,并且需要有图形界面的支持。如果你在没有图形界面的环境中(比如某些服务器或者命令行界面),这段代码可能无法正常运行。
商业化产品经理,到底如何实现产品商业化?.docx
Panduit 工业以太网部件内部销售指南
在Java中,实现一个三维装箱(也称为三维背包问题)的算法通常涉及到组合优化和动态规划。这个问题是一个典型的优化问题,其中目标是在三个维度的限制下最大化价值的总和。下面是一个简单的Java代码示例,它使用动态规划来解决三维装箱问题。 请注意,这个代码只是一个简单的示例,它假设所有物品的第三个维度的大小都是1,并且没有给出如何回溯选择物品的完整逻辑。在实际应用中,三维装箱问题可能更加复杂,需要考虑所有三个维度的限制,并且可能需要更复杂的算法来解决。 此外,这个问题的解决方案可能需要根据具体问题的要求进行调整,例如物品是否可以分割、是否允许超过一个的物品等。如果你有特定的问题描述或者需要进一步的帮助,请提供更多的细节。
常用品牌EPLAN部件库
单片机开发的教程可以分为以下几个步骤: 1. 了解单片机基础知识:在学习单片机开发之前,需要了解单片机的相关知识,包括单片机的基本结构、指令系统、编程语言等。 2. 选择开发板:选择一款适合自己学习开发板的型号和厂商,通常需要关注开发板的性价比、开发环境是否友好等因素。 3. 学习开发环境:根据所选的开发板,学习相关的开发环境和使用方法,例如Keil、IAR等集成开发环境。 4. 掌握编程语言:单片机常用的编程语言包括C语言和汇编语言,根据实际情况选择其中一种进行学习。 5. 基础操作:熟悉单片机的引脚定义和IO口配置,了解单片机的启动代码,可以通过修改启动代码进行基本功能调试。 6. 综合实践:根据具体项目需求,进行单片机开发的综合实践。在实践中需要掌握如何编写程序、如何进行硬件调试、如何使用相关工具软件等技能。 下面是一个单片机开发的简单教程介绍: 首先,确定所使用的单片机型号和开发板类型。在这个阶段,需要查阅相关资料,了解开发板的规格书、芯片规格等基本资料。 其次,安装并配置开发环境。根据所选的开发板,安装相应的集成开发环境(IDE),并配置好开发环境。 接着,学习并掌
Q1.ipynb
(自适应手机端)IT网络建站公司pbootcms模板 互联网营销企业网站源码下载.zip
Bematech 激光扫描器用户手册
激励视频接入文档.pdf
java jdk1.8 202版本下载window linux打包
Lite Beam M5快速指南
互联网金融导论.docx
字节跳动青训营——抖音项目
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。