《程序员修炼之道》简略笔记:5-8章

利用按键精灵实现批量截图与智能命名的高效工作流 本文详细介绍了如何利用按键精灵软件构建高效的批量截图与智能命名自动化工作流。通过基础脚本编写、循环逻辑实现及高级命名策略,解决手动操作耗时易错的问题,帮助用户实现一键自动截图、智能保存与文件重命名,大幅提升软件测试、教程制作及数据报告等场景的工作效率。 阅读详情

囫囵吞枣地看完了。书的道理很浅显,也提出一些实际的做法。在 以后的工作中多回顾吧。



第5章:弯曲,或折断

这一章,主要是讲代码会不断变化,如何去应对这些变化。

解耦。编写羞怯的代码:不向别人暴露你自己,不与太多人打交道。这里有个例子,对传输的参数进行示例说明:应该直接提供你所需的东西,而不是自行“挖通”调用层次。

一种写法是:

public void plotDate(Date date, Selection selection)
{
    TimeZone tz  = selection.getRecorder().getLocation().getTimeZone();
    ....
}

但是更好的写法是:

public void plotDate(Date date, TimeZone tz)
{
    ....
}
plotDate(someDate, someSelection.getTimeZone());

因为,第一种方法,将三个类耦合在一起(Selection, Recorder, Location)。增加了我们的类所以来的类的数目。如果系统一个地方改了,那么别的地方也要更改。比如,Location可能不再直接包含TimeZone,那么这里的代码也需要更改。在第二种方法中,我们不关心TimeZone是来自与Recorder还是Recorder的某个对象。

传说的函数的得墨忒耳法则。这个法则规定,某个对象的任何调用方法都应该只属于以下情形的方法:1.它自身;2传入该方法的任何参数;3,它创建的任何对象;4,任何直接持有的组建对象。

但是,有时也会根据实际情况,如改善性能等,进行反规范化。如数据库的schema设计。(还没有概念)

元程序设计。元数据是关于数据的数据。元数据是对任何应用进行描述的数据——应用该怎样运行、它应该使用什么资源等。其实在平常都有这些的接触,如windows下的初始化文件(ini文件),java的property文件等。还有一些存储用户偏好的文件。所以,为一般情况编写程序,把具体情况放在别处——在编译的代码库之外。以纯文本方式表示配置元数据。有两种情况。一是配置变更时,需要重启。一是能在运行时重新加载其配置的程序。各有优劣,更根据实际情况选择。

时间耦合。通过研究工作流,使并行度最大。

它只是视图。里面提到的发布/订阅,与QT的signal/slot机制,有相关性。还有常用到的MVC,对于同一份数据,有多个表示等情况,也很实用。

黑板。协同与合作?比如QT的images.qrc?大家都可以看到有什么在里面。也可以避免重复。



第6章:当你编码时

编码不是机械工作。

靠巧合编程。积极地参与编码过程。在WS的一次提交,因为不理解各widget的parent关系问题,参考现有的组建,将parent全设置为0。虽然程序能运行,但是在析构时会出现问题,所以不对。因为不理解,只是能运行便认为可以了。

算法速率。嗯,之前提到了。常识的估算。简单循环——o(n),嵌套循环——o(m * n),二分法——o(ln(n)),分而治之——o(nln(n)),组合——涉及到阶乘,所以使用启发式算法去解决。

重构。不要容忍破窗户。在以下情况,需要重构:重复、非正交、过时的知识、性能。为了重构,确保拥有良好的测试。

易于测试的代码。编写代码,让代码易于测试。编写单元测试,比如在java的每个类里加一个main函数,使用C++的#ifdef来选择性进行等等。还有测试设备。或者是类似hudson这种持续构建工具,自动化测试等。

邪恶的向导。有一些向导会帮我们生成很多代码。但是有风险,如果这些代码你不知道他们的作用。



第7章:在项目开始之前

需求之坑。“完美,不是在没有什么需要增加,而是在没有什么需要去掉时达到的。”找出用户为何要做特定事情的原因,而不只是他们目前做这件事的方式。如在WS时,用户需要在打开wifi后,自动连接后不自动退出,因为有时需要进行wifi热点的选择。但在我们的实际工作中,大部分时间其实用户不是希望所有的都不自动退出,而是要提供给他们可选择的方式。所以,我们最终的实现方式是,在wifi设置时,不自动退出,其他情况自动退出 。

好的需求文档会保持抽象。但并不是含糊不清。抽象比细节活得更长久。

还有“紧身衣”效应。没有给编码者留下任何解释余地的设计剥夺了他们发挥技巧和艺术才能的权利。如上面我们的wifi配置问题。

再抹一层薄薄的薄荷。我们很容易被吸进“只是再增加一个特性”的大漩涡。

圆圈与箭头。盲目地采用任何技术,而不把它放进你的开发实践和能力的语境中,这样的处方肯定会让你失望。



第8章:注重实效的项目

这一章对整个项目进行总体的操控。

回顾前面章节的一些内容。不留破窗户,煮青蛙,交流,不要重复自己,正交性,自动化,知道何时停止绘画。

自动化,管理整个项目,当然要自动化的方式来减少手动操作量,也减少失误。

无情的测试。各种测试,性能测试、可用性测试等。单元测试、集成测试等。对整个系统而言,很重要。保证系统的正确性。

全都是写。记录文档同样重要。但是文档也可使用自动化生成的方式,保证与代码一致。

极大的期望。多与用户交流,保证在正确的道路上行驶。同时,额外的一英里,温和地超出用户的期望。




按键精灵实战:高效实现鼠标自动点击与批量任务处理 本文详细介绍了按键精灵在鼠标自动点击与批量任务处理中的高效应用。通过基础脚本编写、复杂点击序列编排、条件判断与智能中断等实战技巧,帮助用户快速掌握自动化操作,提升工作效率。特别适合网页表单填写、游戏刷副本、数据录入等重复性任务。 阅读详情

相关推荐

按键精灵新手必看:从零开始学自动点击鼠标,轻松搞定70次循环操作

本文为按键精灵新手提供从零开始的自动化入门指南,重点解析如何实现70次循环的自动点击鼠标操作。文章详细介绍了核心界面、脚本逻辑拆解以及让脚本更稳定的高级技巧,帮助用户轻松掌握桌面批量操作,提升重复性工作效率。

t8u9v0的博客 772

读书笔记:程序员修炼之道-05-弯曲,或折断

读书笔记:程序员修炼之道弯曲,或折断解耦和得墨忒耳法则使耦合减至最少函数的得墨忒耳法则元程序设计动态配置元数据驱动的应用商业逻辑一个例子不要编写渡渡鸟代码时间耦合工作流架构为并行进行设计更加整洁的接口部署它只是视图发布/订阅Model-View-ControllerJava树视图超越GUI黑板 弯曲,或折断 如何做出可撤销决策: 解耦与得墨忒耳法则 怎样让分离的概念保持分离,并降低耦合 元程序设...

qq_31445163的博客 310

按键精灵-自动怼人神器(键盘侠的终极武器)

本文探讨了如何利用按键精灵软件,从自动化脚本的思维出发,构建一个所谓的“自动怼人神器”。文章详细介绍了从基础录制到高级脚本编写的实战步骤,包括核心代码编写、语录库随机化、找图找色精准定位以及防检测机制优化。重点强调了该技术应作为自动化学习与思维锻炼的工具,并严格遵守平台规则与网络伦理,谨慎使用。

backprop5master的博客 325

《程序员修炼之道》笔记(八)

第八章 注重实效的项目 随着你的项目开动,我们需要从个体的哲学和编码问题转向讨论更大的、项目级的问题。我们将不深入项目管理的具体细节,而是要讨论能使项目成功或失败的几个关键区域。 1. 注重实效的团队 书中前面的内容都是帮助个体成为更好的程序员,这些方法在对团队来说仍然有效。 a) 不要留破窗户。质量是一个团队的问题。最勤勉的开发者如果被派到不在乎质量的团队里,也会发现自己...

weixin_30312659的博客 152

按键精灵:从零开始的自动化脚本入门指南

本文详细介绍了按键精灵的自动化脚本入门指南,从安装避坑到实战案例,帮助用户快速掌握自动化操作技巧。适用于办公、游戏、数据处理等多种场景,提升工作效率。通过进阶技巧和避坑指南,让脚本更智能、更稳定。

weixin_29306011的博客 648

从按键精灵到自动化脚本:游戏辅助开发的入门实践

本文以按键精灵为例,系统介绍了游戏辅助脚本开发的入门实践。从模拟按键的基础操作,到结合屏幕取色实现条件判断,再到利用窗口查找与相对坐标提升脚本稳定性,文章逐步引导读者构建智能化的自动化流程。同时,文中也探讨了进阶策略与避坑指南,为编程新手和游戏爱好者提供了安全、实用的自动化开发思路。

weixin_29254673的博客 587

程序员修炼之道——第八章 注重实效的项目

注重实效的项目 注重实效的团队:一旦参与项目的人员超过一个,你就需要建立一些基本原则,并相应的派任务。我们将说明怎样在遵循注重实效哲学的同时做到这一点。 无处不在的自动化:使项目级活动保持一致和可靠的一个最重要的因素是使你的各种工作流程自动化。 无情的测试:进一步讨论项目范围的测试哲学和工具——特别是在你没有大量QA人员可以随叫随到时。 全都是写:与测试相比,开发者更不喜欢的唯一一件事情是撰写...

菜不是原罪 1149

告别重复劳动!用按键精灵实现办公自动化:从批量处理Excel到自动填表的保姆级教程

本文详细介绍了如何使用按键精灵实现办公自动化,从批量处理Excel到自动填表的保姆级教程。通过按键精灵,用户可以轻松完成重复性工作,如合并Excel表格、自动填写网页表单等,大幅提升工作效率。无需编程基础,跟随教程即可快速上手。

weixin_29294597的博客 244

程序员修炼之道(通俗版)——第八章

《程序员修炼之道》这本书中的内容挺不错,里面包含了很多精华,但一些句子很拗口,所以我就根据国人的阅读习惯,在不改变原意的情况下对词句稍加修改,标题中的“通俗版”就是这么来的。

xiaouncle的博客 588

游戏搬砖党的效率神器:手把手教你用按键精灵编写安全稳定的挂机脚本(附防封号心得)

本文详细介绍了如何使用按键精灵开发安全稳定的游戏挂机脚本,提升游戏搬砖效率。从自动化工具基础认知到脚本开发核心技术,包括图像识别、智能延迟系统等,再到安全策略与风险控制,手把手教你编写防封号的自动化脚本。

weixin_30825581的博客 230

STM32 HAL库矩阵按键驱动设计:从硬件原理到状态机实现

在嵌入式系统开发中,GPIO资源管理是基础且关键的环节。当外设数量增多时,IO口资源紧张成为常见挑战。矩阵按键扫描技术通过行列复用原理,用N+M个IO口管理N×M个按键,显著提升了资源利用率。其核心原理基于分时扫描与电平检测,在软件层面通过状态机实现按键事件的稳定识别,技术价值在于以较低硬件成本实现复杂人机交互。该技术广泛应用于需要多个功能按键的嵌入式设备,如工业控制器、仪器仪表和消费电子。本文基于STM32 HAL库,结合GPIO配置与定时器中断,详细解析了包含消抖、长按和连按功能的健壮驱动实现,并提供了

weixin_34248487的博客 377

C2000实战-外部中断配置与按键唤醒应用

本文详细解析了C2000微控制器的外部中断配置与按键唤醒应用,重点介绍了GPIO与XINT的映射技巧、低功耗模式下的中断配置流程以及工业级应用中的可靠性设计。通过实战案例和优化技巧,帮助开发者高效实现多路信号处理和低功耗设计,提升系统响应速度和稳定性。

weixin_27014595的博客 164

嵌入式开发入门:从按键控制LED到GPIO、中断与状态机实战

在嵌入式系统开发中,GPIO(通用输入输出)是连接微控制器与外部物理世界的基础接口,其核心原理是通过配置寄存器控制引脚的电平状态与数据方向。理解GPIO的输入、输出、上拉/下拉等模式,是驱动LED、读取按键等基础功能的技术基石。通过软件消抖和硬件中断机制,可以可靠地处理机械按键的抖动问题,确保系统响应的实时性与稳定性。这种底层硬件控制能力,构成了人机交互、传感器数据采集等众多应用场景的共性技术价值。本文以经典的【按键控制LED】项目为切入点,深入剖析了基于【状态机】的非阻塞式消抖实现方案,并对比了轮询与中断

weixin_30399155的博客 388

emWin仿真API深度解析:设备模拟与硬件按键仿真实战指南

在嵌入式GUI开发中,仿真技术是提升开发效率、实现软硬件并行开发的关键。其核心原理在于通过软件模拟目标硬件的显示与输入行为,从而在物理硬件就绪前完成UI设计、交互逻辑验证与功能测试。从技术价值看,高效的仿真流程能显著缩短开发周期,降低对硬件的依赖,并支持早期客户演示。在应用场景上,仿真广泛应用于嵌入式图形界面开发、人机交互调试以及产品原型验证。本文聚焦于emWin这一成熟的嵌入式图形库,深入探讨其设备模拟API与硬件按键仿真API。通过设备模拟API,开发者可以精确控制虚拟LCD在设备外壳位图中的位置与视觉

weixin_30691871的博客 501

按键精灵进阶指南:从找图找色到健壮脚本的自动化实战

自动化脚本技术通过模拟人工操作,将重复、固定的计算机流程自动化,其核心价值在于解放人力、提升效率。其基本原理是通过图像识别、颜色判断和逻辑控制,让程序像人一样“看到”界面并做出决策。在PC端Windows平台上,基于图形界面(GUI)的自动化是提升办公、数据处理等场景效率的关键技术。其中,图像识别(如找图)是脚本的“眼睛”,使其能适应界面变化;而条件判断与循环则是其“大脑”,实现智能决策。这些技术特别适用于规则明确、重复性高的操作场景,例如批量处理文档、数据录入或软件测试。本文聚焦于按键精灵这一经典工具,深

快马扬鞭须努力! 422

STM32实战技巧:定时器中断实现多按键非阻塞控制LED模式切换

本文详细介绍了STM32定时器中断实现多按键非阻塞控制LED模式切换的实战技巧。通过定时器中断和状态机设计,有效解决了传统轮询方式的阻塞问题,提升了系统响应速度和用户体验。文章还分享了硬件消抖、LED状态管理、模块化封装等关键实现方法,并提供了性能优化与异常处理建议,适合嵌入式开发者参考。

weixin_29192211的博客 371

Arduino软件时钟:无RTC模块实现LCD显示与按键设置

实时时钟(RTC)是嵌入式系统中记录时间的基础模块,它通过独立晶振和备用电池提供精确计时。其核心原理是利用稳定的时钟源进行计数和中断处理,以实现年月日时分秒的持续跟踪。在物联网和智能硬件开发中,RTC对于数据时间戳、定时任务和低功耗管理具有重要技术价值,广泛应用于环境监测、智能家居和工业控制等场景。然而,对于教学演示或精度要求不高的应用,使用专用RTC模块可能增加硬件成本和复杂度。本文聚焦于Arduino UNO平台,深入讲解如何仅通过millis()函数和算法实现软件计时,并集成LCD显示与按键设置功能,

weixin_32496547的博客 304

DataHub 架构设计与核心工作原理

DataHub 是一个第三代数据目录系统,专为现代数据栈设计,支持数据发现、协作、治理和端到端可观测性。其架构采用模型优先的设计理念,注重不同工具和系统之间的互操作性。

北斗云的博客 1224
上一篇: 用到的git命令记录
下一篇: linux shell实现随机数多种方法(date,random,uuid)
lightty
博客等级 码龄17年 59粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值