`

会说话的代码——书写自表达代码之道

阅读更多

会说话的代码——书写自表达代码之道

王洪亮 著

ISBN 978-7-121-20876-8

2013年8月出版

定价:45.00元

204页

16开


内容提要

写得不好的代码有各种各样的问题,会给读者带来不好的阅读体验,并且如果代码写得不够好,文档和代码不一致,注释和代码不一致,那么对维护人员来说,理解代码和进入项目组都是有困难的。如果代码写得不够好,就需要扩展功能,修改Bug时所需要花费的时间也较长。

自表达代码是一种采用接近于自然语言的方式书写代码的主张。

代码可读性、可扩展性、可测试性是关联代码质量的重要参考指标。本书从各个角度来分析产生劣质代码的原因,并从代码的命名、注释、风格、结构、架构等方面着手,对提高设计能力、熟悉开发环境、了解编程语言、提高英语能力等诸多方面提出了具体的改善建议。

目录

第1章  劣质代码带来的劣质体验     1

1.1  代码的可读性问题        1

1.1.1  命名类问题         2

1.1.2  注释类问题         6

1.1.3  风格类问题         8

1.1.4  结构类问题         11

1.1.5  架构类问题         18

1.2  代码的可测试性问题   22

1.3  代码的可维护性问题   22

1.3.1  需求变更难以应对    23

1.3.2  纠缠不清的Bug 23

第2章  劣质代码是怎么产生的          25

2.1  理论知识匮乏        25

2.2  对编程语言不熟悉        29

2.3  对开发环境不熟悉        31

2.4  对设计方法不了解        32

2.5  编程习惯不佳        32

2.6  英语能力不足        35

2.7  管理人员误导        36

第3章  自表达代码     39

第4章  理论知识的补充     41

4.1  面向对象的基础知识   41

4.1.1  封装    41

4.1.2  继承    42

4.1.3  多态    44

4.2  设计的基本原则   45

4.2.1  单一职责原则    45

4.2.2  开放封闭原则    46

4.2.3  里氏代换原则    48

4.2.4  接口分离原则    48

4.2.5  依赖倒置原则    49

4.2.6  迪米特法则         50

4.2.7  不要重复你自己         51

4.3  圈复杂度        52

第5章  编程环境的熟悉     53

5.1  保存动作与自动格式化        53

5.2  快速修复        58

5.2.1  缺少类         59

5.2.2  缺少方法    60

5.2.3  缺少变量    61

5.2.4  类型不匹配         62

5.3  重构        63

5.3.1  改名    64

5.3.2  改变方法签名    68

5.3.3  提取方法    69

5.3.4  移动    73

5.3.5  引入参数对象    76

5.3.6  引入接口    77

5.3.7  向上提取    78

5.3.8  提取常量    81

5.3.9  局部变量变为域变量         82

5.3.10  引入工厂  82

5.4  自动完成        83

5.5  大纲        84

5.6  Eclipse快捷键        86

第6章  编程语言的学习     88

6.1  注解        88

6.2  异常        94

6.3  反射        97

6.4  泛型        100

第7章  设计方法的学习     101

7.1  设计模式        101

7.2  依赖注入        102

7.3  Map的妙用   103

7.4  采用位掩码减少类的个数   107

7.5  List处理Z-Order   110

第8章  英文能力的提升     113

8.1  词性        113

8.2  时态        115

8.3  语法        116

8.4  否定词   117

8.5  成对词   119

8.6  近义词   120

8.7  前缀、后缀   120

8.8  缩写        122

8.9  正确用词        122

第9章  编程习惯的改进     124

9.1  命名方面的改进   124

9.1.1  命名的基本原则         124

9.1.2  包的命名    125

9.1.3  接口的命名         125

9.1.4  类的命名    125

9.1.5  注解的命名         126

9.1.6  枚举的命名         126

9.1.7  方法的命名         127

9.1.8  变量    129

9.1.9  常量的命名         130

9.1.10  相似的命名       130

9.2  注释方面的改进   131

9.2.1  JavaDoc       131

9.2.2  TODO、FIXME和XXX         132

9.2.3  其他注释    133

9.2.4  方法的注释         133

9.2.5  类的注释    133

9.2.6  版权声明    134

9.3  风格方面的改进   135

9.3.1  缩进与对齐         135

9.3.2  空格与空行         138

9.3.3  行长与换行         140

9.4  结构方面的改进   140

9.4.1  缩短长判定         140

9.4.2  缩短长分支         144

9.4.3  减少参数个数    148

9.4.4  减少嵌套的层数         150

9.4.5  去掉重复代码    152

9.4.6  分离暧昧关系    155

9.4.7  多维度变化         156

9.4.8  缩短长方法         158

9.4.9  正则表达式         158

9.4.10  自相似对象       160

9.4.11  同质化处理       161

9.5  架构方面的改进   162

9.5.1  MVC    162

9.5.2  包含关系    164

9.5.3  继承关系    164

9.5.4  包的划分    165

9.5.5  内部类、内部接口及内部枚举         166

9.5.6  匿名类         167

9.5.7  有限取值范围    168

第10章  测试代码的自表达改进       174

10.1  测试代码的可读性      175

10.2  测试代码的可维护性 179

10.3  测试代码的可扩展性 179

10.4  测试语法      180

第11章  Lambda表达式     182

11.1  filter      183

11.2  forEach 183

11.3  findAny与findFirst       184

11.4  sorted   184

11.5  uniqueElements   185

附录         186

媒体评论

推荐序

 

经典的教人写程序的书,如《Java编程思想》,类似教材的定位,由浅入深地教会新程序员写代码。充满丰富经验的《Effective Java》、《设计模式》等书,将众多的编程经验进行组织并进行深入浅出的讲解。在《Clean Code》中也描述了许多如何写干净代码的技巧和经验。

而这本《会说话的代码》,却从截然不同的视角,尝试帮助那些真正处于一线的程序员写出更容易理解的代码。写代码就像盖楼房,我们怀着美好的希望,希望所有的项目代码如同一片尚未开垦的处女地,但真实情况往往是面对拆迁房的废墟。这些令人费解的代码要么是别人留下的,要么是自己许久之前留下的,而我们的往往选择不多。

《会说话的代码》从一线角度重新描述了这些现象,并极富关怀地提出了解决方案。例如,当需要滚动鼠标滚轮或者不断拉动滚动条时,你的方法或者类是不是过长?需要不断查看方法实现时,是不是方法名无法表达实现的含义?需要画流程图才能理解某个方法的逻辑时,是不是嵌套太深?

这本书从命名、注释、结构、架构、编程风格等方面,做出了具体的阐述。其中的某些建议甚至详细到了需要用is还是can,接口要不要加I还是用-able的后缀等。文中还阐述了设计模式和面向对象的设计原则如何帮助程序员写出自描述的代码,要想理解透彻,还需要阅读相关书籍。对于尚未正式发布的Java 8,作者在第11章也进行了Lambda的介绍。

另外,我认识王洪亮已久。十多年前,当程序员新兵们还在受谭浩强的《C程序设计》“折磨”时,尚在西北工业大学的王洪亮已经在宿舍里用C++写出令人眼馋的RPG游戏。现在,他依然没有放弃一线开发。作为程序员,我心生佩服。

希望本书能够帮助程序员们写出更为直观、简洁的代码。

 

ThoughtWorks敏捷咨询顾问

陈金洲(@mechiland)

2013年2月21日

前言

自表达代码的由来

 

我们曾经阅读过很多阅读体验很糟糕的代码,其中有鼠标滚轮测试程序(指长文件、长方法)、脑筋急转弯程序(指逻辑判定复杂、关系混乱)、记忆力测验程序(指一大堆变量或者常量)、眼神测验程序(指命名类似,但意思不一样)、逻辑思维测试程序(指循环引用式包含关系),等等。这些劣质代码给我们带来各种各样的劣质阅读体验。

我们也曾经苦于一个偶然出现的Bug再也无法重现,好不容易重现,却发现其必要步骤达三十多步,重现以后却找不到问题的根本原因,也无从下手解决,铺天盖地地插入了几十条log语句后终于能够定位Bug的原因,却又不敢动手修改。十分小心地分析,慢慢地修改,改掉这个Bug之后却发现它又引起了新的Bug。

需求变更可能是令程序员最头疼的事情之一了,它引起了一个新的流程,需要分析、修改和测试。更困难的还在于,如果这个需求实现了,另外一个已经完成的功能必须被破坏掉,而用户却想鱼和熊掌兼得。

当新进入一个既有的开发项目时,常常面临代码和设计文档不一致、代码和注释不一致、代码结构混乱、代码风格不统一等问题,不得不花大量的时间来学习。面对体积庞大有效信息却很少的代码库是一件痛苦的事情,让人产生一种要推翻重写的冲动。可是开发时项目经理却总是在催促:时间很紧,放弃文档,放弃注释。

到底是什么问题导致这些痛苦的体验?为什么会产生这些痛苦的体验?如何才能避免这些痛苦的体验?本书第1章以这个为切入点,从代码的可读性、可测试性和可扩展性三方面入手,对劣质代码产生的原因进行分析,分别从命名、注释、风格、结构、架构五方面进行总结,并依次提出相应的改进方案。

“自表达代码”(Self-Expressive Code)这一名词为笔者原创。在此之前,曾经出现过“自文档代码”(Self-Documenting Code)和“自描述代码”(Self-DescribingCode)。笔者认为“自表达代码”比后面二者更具表现力。根据“代码是软件的唯一文档”这一理论,代码应该是能够自我表达的,是能够让读者看到代码就知道软件是做什么工作的,这就是自表达代码一词的由来。如其名字,让代码能够自我表达的书写方式就是自表达代码。书写自表达代码的方式应该像书写文章一样。如果代码书写出来后都像文章一样读起来朗朗上口,那么对代码的理解将不必再依靠繁杂的注释和厚厚的文档,代码本身就可以表明其作用。而维护人员也不必担心代码和文档或者注释不一致这个问题了。

比较糟糕的代码的写法如:

scene.fight(hero, enemy, Kongfu.FIST);都不知道谁打了谁。

普通方式书写的代码如:

hero.fight(enemy, Kongfu.FIST);知道代码的意思,但是阅读体验还不够好。

而自表达的方式书写的代码如:

hero.fight(enemy).with(“FIST”);如果不看那些符号,读起来这就是一句话。

本书第3章对如何采用接近自然语言的方式书写代码进行了详细阐述,并推出“自表达代码”概念。

看到条件就是if,看到循环就是for,这样“直抒胸臆”的代码堆砌起来,相互影响,使代码的复杂度变得很大。然而,形成这一问题的原因是由于缺乏理论知识,代码书写者并不了解代码的复杂度应该如何表征,耦合度应该如何降低。本书第4章就一些面向对象常用的理论知识进行讲解,以帮助程序员初步掌握这些理论知识。

当看到不少有经验的程序员也在用连续按方向键的方式对光标进行定位时,我深感对集成开发环境的不熟悉也是代码质量低劣的原因之一。对于一个提升到主菜单地位的Refactor菜单熟视无睹的程序员不乏其人。而利用Outline快速定位代码,利用Debugger工具、Task List管理技术债务等方法也是这些人同时存在的盲点。因此,本书第5章以Eclipse为例,专门就一些常用的对编程帮助很大的集成开发环境功能进行讲解。

Java 8就快推出了,然而很多程序员还被限制在只能使用Java1.4的条件下,至于中间的若干个版本有什么新特性,程序员根本就没能了解。当程序员看到采用新特性书写的更为简练的代码时,会不明白、不理解,而自己又写不出,因此错过了很多可以改进代码的机会。本书第6章就一些Java 1.5以后推出的新特性进行讲解,并对其中的一些使用技巧进行阐述,以帮助读者更好地理解这些新特性。

以往的代码类书籍都来自美国,可能由于使用英语对于美国人不算是什么问题,在这些书中很少提到英语这一话题。但是在亚洲一些国家,英语可能是程序员的一个重大障碍。由于单词量不够、语法不明确、词性不会用等原因造成很多代码书写上的问题,也带来了很多阅读上的苦恼。其实,书写代码时所需要的英语并不是多么高深,并不需要IELTS成绩达到某个分数线,只要掌握一些基本英语技巧,就可以使代码变得更加易读好懂。本书第8章从正确用词、词性、语法、时态等多个角度对英语进行浅析,以帮助程序员更好地命名。并且本书也给出了一个可用的关于前缀、后缀、成对词、近义词等的列表,成为书写自表达代码技巧的有益补充。

书写代码不是一种体力劳动,而是一种脑力劳动。把书写代码当成体力劳动就难以确保程序员的水平提升,也难以确保软件的质量可靠,更逞论代码的可读性、可测试性乃至可扩展性。书写代码也不仅是个技术工作,更是一个艺术工作,在代码的书写过程中需要不断地调整和修饰,不是把代码写得简练些就够了。代码应该能够让读者快速阅读,能够很容易地进行测试,很容易地进行扩展。本书第9章就如何培养良好的编程习惯进行讲解。

形而上学的规章制度并不能够促成高质量代码的书写,编码的规范也应该与时俱进,管理者也应该随时抛弃那些陈旧的做法和规则。任何一个好方法的应用都离不开管理者的支持。本书就劣质代码产生的管理层面原因进行了分析和总结。但是如何提升管理水平是个庞大的话题,由于它不是本书的主要讨论话题,所以本书对此部分割爱。

作为下一代语言的特性,Lambda表达式已经被加入到若干高级编程语言中去了。但是Java还没有加入Lambda表达式,Java 8已经声明要加入Lamda表达式了,本书第11章通过对Java 8的前瞻版进行体验,以了解Java中Lambda表达式的特性。

愿本书能够为读者带来有益的帮助。

王洪亮

2013年4月

于北京

分享到:
评论

相关推荐

    会说话的代码:书写自表达代码之道.王洪亮(详细书签)

    会说话的代码——书写自表达代码之道 作者:王洪亮 出版社: 电子工业出版社 出版年: 2013-8 这本《会说话的代码》,却从截然不同的视角,尝试帮助那些真正处于一线的程序员写出更容易理解的代码。写代码就像盖楼房...

    编码的奥秘.pdf

    例如,当我们说话时,使用的是一种编码——语音编码,它将我们的思想转化为声音波形,其他人通过耳朵接收并解码为有意义的信息。 #### 三、手电筒通信的启示 书中通过一个关于两个孩子使用手电筒通信的故事,生动...

    区块链_智能合约_Solidity_保险应用_基于以太坊的技_1744433266.zip

    区块链_智能合约_Solidity_保险应用_基于以太坊的技_1744433266

    【数据库管理】Mysql安装配置全流程:环境变量设置、服务安装与初始密码修改教程

    内容概要:本文档详细介绍了在Windows系统上安装MySQL数据库的具体步骤。首先,需要配置系统环境变量,包括新建MYSQL_HOME变量并将其添加到PATH中;其次,创建并编辑my.ini配置文件,设置MySQL的基本参数如端口、字符集、数据存放目录等;接着,在命令行工具中通过一系列指令完成MySQL的初始化、服务安装、启动以及root用户的密码设置和权限调整。整个流程涵盖了从环境搭建到最终确保MySQL服务正常运行的所有关键环节。 适合人群:适用于有一定计算机操作基础,尤其是对数据库管理有一定兴趣或需求的技术人员。 使用场景及目标:①帮助用户在本地机器上成功部署MySQL数据库环境;②确保用户能够掌握MySQL的基本配置与管理技能,如环境变量配置、服务安装与卸载、用户权限管理等。 其他说明:在安装过程中可能会遇到一些常见问题,例如由于之前版本残留导致的服务安装失败,此时可以通过命令行删除旧服务(sc delete mysql)来解决。此外,为了保证安全性,务必及时修改root用户的初始密码。

    【嵌入式系统】8051单片机启动文件STARTUP.A51代码解析:初始化堆栈指针与数据段及中断向量配置详解

    内容概要:`STARTUP.A51` 是 Keil C51 编译器自带的启动文件,用于初始化 8051 单片机的硬件和软件环境。该文件主要完成三个任务:初始化堆栈指针、清零内部数据存储器、跳转到主程序。文件中定义了内存模式(如 SMALL),并设置了堆栈指针的初始值为 0x60。接着通过循环将内部数据存储器的所有字节清零,确保程序开始时数据存储器的状态是确定的。此外,文件还列出了 8051 单片机的各个中断向量地址,并为每个中断提供占位符,实际的中断处理程序需要在其他文件中实现。最后,启动代码段初始化堆栈指针和数据段后,跳转到 `MAIN` 函数开始执行主程序。; 适合人群:对嵌入式系统开发有一定了解,尤其是使用 8051 单片机的开发者。; 使用场景及目标:①理解 8051 单片机启动文件的工作原理;②掌握如何初始化堆栈指针和数据段;③熟悉中断向量表的设置及其作用。; 其他说明:此文件为程序正常运行提供了必要的初始化操作,开发者可以根据具体需求修改该文件以适应不同的硬件和软件环境。

    【电力系统故障诊断】基于行波理论的输电线路故障诊断方法研究:三相电流信号分析与小波变换波头检测系统设计(含详细代码及解释)

    内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。

    光伏-混合储能微电网能量管理系统:基于滤波算法的功率分配与SOC优化

    内容概要:本文详细介绍了光伏-混合储能微电网能量管理系统的模型架构及其控制策略。首先探讨了光伏发电模块中的MPPT(最大功率点跟踪)控制,采用扰动观察法和改进型变步长策略来提高光伏板的发电效率。接着重点讲解了混合储能系统的功率分配,利用一阶低通滤波算法将功率需求分为低频和高频两部分,分别由蓄电池和超级电容处理。此外,文中还深入讨论了SOC(荷电状态)管理策略,确保电池和超级电容在不同工作状态下保持最佳性能。仿真结果显示,在光伏出力剧烈波动的情况下,系统能够有效地维持稳定的电压水平,并显著提高了储能设备的使用寿命。 适合人群:对光伏微电网、储能技术和能量管理系统感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于研究和开发高效、可靠的光伏-混合储能微电网系统,旨在优化能量管理和提高系统稳定性。具体应用场景包括但不限于家庭光伏系统、小型微电网以及工业能源管理系统。 其他说明:文中提供了详细的代码实现和仿真结果,便于读者理解和复现实验。同时,模型设计采用了模块化思路,方便进行个性化修改和扩展。

    MATLAB与CVX平台下储能调峰调频联合优化模型的实现与应用

    内容概要:本文详细介绍了基于MATLAB和CVX平台实现的储能调峰调频联合优化模型。该模型不仅涵盖了储能的基本参数设定、负荷不确定性处理、充放电策略制定,还包括了调峰调频的联合调度、功率约束处理、鲁棒优化等方面的内容。通过构建考虑电池退化成本、充放电功率约束以及用户负荷不确定性的储能优化模型,展现了储能系统在电力系统中的高效协同工作。文中提供了详细的代码示例,解释了各个部分的功能和实现方法,强调了模型的深度与创新性。 适合人群:适用于具有一定编程基础和技术背景的研究人员、工程师以及希望深入了解储能系统优化的学生。 使用场景及目标:该模型主要用于电力系统中储能设备的优化调度,旨在提高储能系统的经济效益和社会效益。通过联合调峰调频,能够显著提升储能系统的收益,实现1+1>2的超线性增益效果。此外,该模型还可以用于教学和科研,帮助初学者理解和掌握储能优化的相关技术和理论。 其他说明:代码中包含了丰富的注释和模块化的子程序,使得整个模型易于理解和扩展。对于有经验的开发者,可以在现有基础上进一步改进和定制,以适应不同的应用场景。

    大模型技术白皮书2023版

    大模型技术白皮书2023版

    图像增广 PyTorch 版

    图像增广 PyTorch 版

    批量修改文件常用格式有TXT D0CX PDF 等办公软件里面附带使用教程

    批量修改文件名可以帮助用户节省大量时间,提高工作效率 里面附带使用教程

    《计算机应用基础》第2章--Windows-XP操作系统.ppt

    《计算机应用基础》第2章--Windows-XP操作系统.ppt

    基于单片机的红外密码锁设计(仿真+电路+程序)(51+1602+1838+24C02+JK+BZ+KEY16)#0407

    包括:源程序工程文件、Proteus仿真工程文件、电路原理图文件、配套技术手册、论文资料等 1、采用51/52单片机(通用)作为主控芯片; 2、采用1602液晶显示使用过程及状态,液晶屏亮度会随光线自动调整; 3、按键输入6位密码,输入密码正确则锁打开,显示open!输入密码错误次数超过3次,蜂鸣器报警并且锁定键盘; 4、密码可以自己修改,必须是锁打开时才能改密,为防止误操作,修改密码得输入两次; 5、采用24C02保存密码,掉电不丢失; 6、可通过红外遥控器输入密码操作锁的状态;

    2025年感知技术十大趋势深度分析报告总结述

    内容概要:本文深入剖析了2025年全球感知技术的十大发展趋势,涵盖多模态感知融合、3D感知与空间计算、脑机接口中的感知反馈技术、5G/6G赋能的超低延迟感知、语音与情感识别的高级化、生物感知与数字健康、环境感知与自适应智能、增强现实(AR)与触觉反馈技术、气味与化学感知、量子感知与极端条件测量。文章详细介绍了每项技术的技术原理、关键算法、实现方式、商业案例及未来前景,强调了感知技术在智慧城市、自动驾驶、智慧医疗、工业自动化等领域的深刻影响。报告指出,感知技术正从单一传感模式向多模态融合、从二维数据向三维空间重建、从传统网络通信向超低延迟和高可靠性网络升级,实现全场景、全维度的智能感知。; 适合人群:对感知技术感兴趣的科技爱好者、研究人员、决策者、企业管理层和投资人。; 使用场景及目标:①了解感知技术的最新进展和未来发展方向;②为技术研究提供全面、深入的参考;③为商业应用提供具体的案例和前景分析;④推动跨领域协同创新,构建开放共赢的产业生态。; 其他说明:报告基于近年来技术研发的最新进展、业界前沿的技术路线以及各大科技企业在商业落地方面的丰富实践。随着感知技术的不断成熟,数据隐私与安全保护问题也需高度重视,以确保技术进步与社会伦理和谐统一。未来,感知技术将成为推动社会进步和产业升级的重要力量,为实现万物互联、智慧决策和智能体验提供无限可能。

    基于Springboot+vue的校园新闻网站【源码+数据库+参考论文】

    本论文主要论述了如何使用JAVA语言开发一个校园新闻网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述校园新闻网站的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 校园新闻网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、新闻类型管理、校园新闻管理、留言板管理、论坛交流、系统管理,用户前台:首页、校园新闻、论坛交流、留言反馈、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个校园新闻网站信息管理的过程得以实现。 本系统的使用可以实现本校园新闻网站管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。 基于Springboot+vue的校园新闻网站【源码+数据库+参考论文】 感兴趣自行下载学习!

    电力电子领域三相三电平PWM整流器的三电平SVPWM算法闭环控制策略解析

    内容概要:本文详细探讨了三相三电平PWM整流器的闭环控制策略及其核心技术——三电平SVPWM算法。文章首先介绍了三相三电平PWM整流器的基本概念和优势,如输出三种电平以降低谐波含量并减少滤波器体积和成本。接着阐述了闭环控制策略的重要性,强调了电压外环和电流内环的双闭环控制机制。随后,文章深入讲解了三电平SVPWM算法的工作原理,包括空间电压矢量的选择、扇区判断、矢量作用时间和死区补偿等关键技术环节。此外,还讨论了中点电位平衡的问题以及PI参数的整定方法。最后,通过示波器测试验证了系统的性能指标,如THD低于3%,直流电压纹波小于1%。 适合人群:从事电力电子领域的工程师和技术人员,尤其是对三相三电平PWM整流器及其控制策略感兴趣的读者。 使用场景及目标:适用于高压大功率场合,旨在提高整流器的性能,降低谐波含量,实现单位功率因数运行。通过合理设计闭环控制策略和优化SVPWM算法,确保整流器在各种工况下都能稳定、高效地工作。 其他说明:文中提供了大量MATLAB和C语言代码片段,帮助读者更好地理解和实现相关算法。同时,针对实际调试过程中遇到的问题给出了实用的解决方案,如中点电位平衡和死区补偿等。

    全新红娘本地交友系统定制版源码 相亲婚恋交友小程序源码.zip

    全新红娘本地交友系统定制版源码 相亲婚恋交友小程序源码

    【地图制图领域】基于DeepSeek的地图生成技术探索:融合AI与传统制图链的智能化地图生成系统设计了在AI时代

    内容概要:文章探讨了AI技术,特别是DeepSeek,如何驱动地图生成的变革。首先介绍了地图制图在AI时代的背景与挑战,强调了DeepSeek与地图融合的两种主要方式:嵌入地图制图链和研发地图语言自身的预训练模型。随后详细描述了DeepSeek在地图生成中的具体应用,包括智能化地图生成器DoMapAI的整体框架,地图制图链中的知识图谱推理路径,以及地图语言的Token化过程。最后,文章总结了AI时代地图制图的职业变化和技术变革,指出地图制图正经历“大变局”。 适合人群:从事地图制图及相关领域的研究人员、工程师,以及对AI与地图生成感兴趣的学者。 使用场景及目标:①理解AI技术在地图生成中的应用,特别是DeepSeek的作用;②掌握智能化地图生成器DoMapAI的工作原理及其应用场景;③学习地图语言Token化的方法及其在地图生成中的应用;④探索AI时代地图制图的职业发展方向和技术变革。 阅读建议:本文内容较为专业,建议读者先了解基本的AI技术和地图制图知识。重点关注DeepSeek与地图融合的具体方法和应用场景,理解智能化地图生成器DoMapAI的工作流程,以及地图语言Token化的实现过程。在阅读过程中,可以结合实际案例进行思考,以更好地理解AI技术对地图制图的影响。

    chromedriver-mac-arm64-135.0.7049.114.zip

    chromedriver-mac-arm64-135.0.7049.114.zip

    《网络布线与小型局域网搭建(第2版)》第3章-布线系统的设计.ppt

    《网络布线与小型局域网搭建(第2版)》第3章-布线系统的设计.ppt

Global site tag (gtag.js) - Google Analytics