陈旧语法密度之一——什么是陈旧语法

从VENUS到VESTA 3:这款免费晶体可视化软件是如何进化成科研神器的? 本文追溯了从VENUS到VESTA 3的晶体可视化软件进化历程,详细介绍了VESTA 3在多级等值面技术、Voronoi分割算法和自定义对称操作等方面的核心创新。这款免费软件已成为材料科学和化学研究中不可或缺的工具,支持论文插图制作、教学演示和跨平台协作,显著提升科研效率。 阅读详情

陈旧语法密度

Why为何存在陈旧语法

在面向过程的编程语言中(以C最为典型),有一些语法容易造成代码臃肿、重复、单个函数长度大、代码过于集中或过于分散造成编写、阅读和维护困难。在出现面向对象语言之后(以C++/C#,Java最为典型),一些新语法结构通过封装、继承、多态等措施根本上消除了这些存在问题的语法。然而为了直接调用原有代码模块(如C++调用C),或间接复用原有代码的结构(如将C语言的加密算法原封不动移植到Java中),以及初学者快速学习和适应的需要,这些面向对象语言普遍兼容并允许继续使用这些存在问题的语法。

然而对这些陈旧语法的滥用却阻碍了新语言特性的发挥,甚至可能出现用面向对象语言编写面向过程代码的情况。实际上,绝大多数用现代语言编写的烂代码都可归因于此。由此造成的代码的冗余量可高达90%以上(即90%都是无用代码),而每次亟需重构之处必有陈旧语法的影子。因此有必要对陈旧语法进行严格控制。

What什么是陈旧语法和陈旧语法密度

典型的陈旧语法包括但不限于:

switch-case
if - else if - else
for (int i = 0; i < length; i++)
双重for循环
else(是的,单独的else也可能引发问题)

陈旧语法密度则是指千行代码中包含陈旧语法的个数。具体计算公式是:

(case数 + else数 + for(int i...)数 )/代码行数*1000

其中,else数包括独立的else和if - else if - else中的所有else之和。

消除陈旧语法的方法

所有陈旧语法中,以switch case, if-else if-else为最常见,消除方法也最多。

从最简单的直接删除,到复杂一点的三元表达式、Map,再到复杂的泛型、多态(虚函数)、工厂类,甚至多种方法并用。

此后的章节将由浅及深逐步讨论这些方法。

在笔者所参与的项目中,陈旧语法在工作代码中的数量可以降低为0,也就是说没有if-else if-else,switch case,for(int i, ),甚至也没有else。注意,这与项目的复杂程度没有任何关系,就像最高深的诗歌也是由最简单的文字写成的一样。

然而,消除陈旧语法遇到的最大障碍居然不是技术水平,而是态度。

对待陈旧语法以及其他违反编码规范问题的态度

关于陈旧语法,经常听到这样的说法:“是的,我知道有的时候这样写不好,但大多数情况其实没事。”很可惜,这样说的人里边,我从来没有见到过编程高手,包括那些工作了十几年的熟练工。

真正好的态度应该是:“是的,尽管大多数情况下没事,但有的时候这样写不好,所以我不会这样写。”

在讨论编码规范的时候也存在同样的问题。

我曾经参与过一个企业对编码规范的讨论,并惊讶地发现大家居然在讨论:“哪些规范有明确的好处,我们要遵守之”。而实际的态度应该是:“哪些规范违反了反而有明确的好处,我们要放弃之”。

看似这两者之间的灰色地带非常狭窄,但正如黑猩猩与人类的2%的基因差异一样,永久地决定了两种人的编程水平。

把1只黑猩猩和1个人单独扔进丛林,两者相差的确不大,甚至黑猩猩活的还会更自在些;但把70亿黑猩猩和70亿人扔到地球上,结局却大不同。同样的,1个人偶然使用1次陈旧语法并不会引发很大的问题,但很多人在大型产品中大量使用陈旧语法,却会导致严重的结果。

提示工程三阶跃迁:从指令语法到人机协作协议 提示工程已超越简单‘写好提示词’的技术范畴,成为人与大模型建立可靠协作关系的基础能力。其核心在于理解语言模型的语义解析机制、注意力分配逻辑与状态维持局限——这决定了为何92%的提示失效源于人类隐含的‘语义黑洞’而非模型缺陷。通过Prompting(结构化表达)、Language Processing(意图锚定)和Chain Prompting(状态闭环)三层递进,可系统性提升AI输出的准确性、可控性与可交付性。该方法广泛适用于内容生成、产品设计、数据分析等需稳定调用AI能力的工程场景,尤其适合追求确定性结果 阅读详情

相关推荐

11、网站内容创作与优化全攻略

本文全面解析了网站内容创作与优化的核心策略,涵盖内容重要性、以用户为中心的写作方法、关键词合理布局、避免重复内容、潜在语义内容应用、保持内容新鲜度及非HTML文档优化等关键要点。通过实际案例和流程图展示,帮助网站运营者提升搜索引擎排名与用户体验,实现流量与转化的双重增长。

theta的博客 104

陈旧语法密度之二——switch case和if-else if-else的坏处

switch case和if – else if - else的坏处要想写出超长方法,就写一个switch-case,如果觉得不够长,就再写一个。本人亲自重构过的有记录的最长的一个方法包含502个switch-case,加上每个case中一行实际工作代码,外加一些函数声明等,最终高达1030行。值得提一下的是重构后这个方法只有1行实际工作代码。实际上整个2000多行的模块重构后一共也只有180行。...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1963

MPLAB修改工程名称方法

修改工程名称方法 如下图所示,工程名称为:Loar_V1.0_20210205 现将该工程名称修改为:Loar_V1.1_20210205 修改方法: ①找到工程文件路径,将工程名称修改为Loar_V1.1_20210205 注意:此时打开变成进行编译,会报错:Loar_V1.1_20210205.production.hex does not exist or is not an executable, ②找到工程下的 nbproject 文件夹 ③将nbproject文件夹下的文件全部打开,并且将

qq_26195179的博客 1759

陈旧语法密度之六——用Map消灭if-else if-else,“上帝代码”

用Map消灭if-else if-else尽管三元表达式已经很简洁了,然而仍然不是最优解。此处的最优解是Map:public static final Map&lt;String, String&gt; operator2Revoperators = Map.of( "=", "!=", "==", "!=", "!=", &quo

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 9651

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 552

Lm317电压源芯片制作电流源

还在找电流源芯片么?如何使用电压源芯片快速搭建电流源。

Ekko的博客 1万+

陈旧语法密度之八——使用多态消灭if-else if-else

用多态消灭if – else if - else如果说泛型消灭行为相同、类型不同的分支语句,多态则消灭(父)类型相同、行为不同的分支语句。我在1999年曾经写国庆阅兵的直升飞机编队指挥系统,其地面的核心是一个地图显示系统。地图的显示代码大致如下:public class PlaneMap { List&lt;MapItem&gt; items = new ArrayList&lt;&gt;...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 3764

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 167

陈旧语法密度之四——用直接删除switch case的方法消除switch case

用直接删除switch case的方法消除switch case以下的代码的代码看似极具娱乐性,然而却都是真实案例。第一个案例来自于2001年左右的一个C++产品,给人印象如此之深,以致于十多年来记忆几乎分毫不差:public int returnN(int n) { switch (n) { case 1: return 1; case 2: return...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 2505

软件自动化测试脚本如何编写,编写自动化测试脚本的几点注意事项

我们需要自动化测试脚本的原因:1、验收测试是一项非常复杂和费力的被用来确保软件质量的环节。它的目的就是使软件能得到充分运行并且能使其符合原始需求。2、测试的目的无非就是满足了两个结果:测试通过或测试不通过。为了能实现每个测试结果,必须要明确每个测试用例。并且对于整个系统而言在合同中必须定义测试用例的失败标准,而且这个失败标准数必须是可接受的。3、测试用例的通过条件必须有一个清晰的标准,标准可以被定...

weixin_39575775的博客 2251

【ESP32 S3 开发】基于I2S协议驱动INMP441数字麦克风 实现语音采集

注意INMP441的 L/R接地之后才稳定输出数据 否则一直都是0WAV格式说明这里主要是想说wav文件重要的就是生成一个wavhead来标识它是一个wave文件,wave文件的data chunk 中的data部分还是PCM编码格式的数据,直接从I2S读进去就可以,不需要压缩。wav文件的头一般由4个chunk组成。 以16bit深度为例,代码如下。其他深度可以根据注释自行计算。 I2S -> DAC i2s_read()函数,向flash中划分的一个buff当中读入byte数组。以16bit深度为例,一

m0_43395703的博客 1万+

陈旧语法密度之五——用三元表达式消灭if-else if-else

用三元表达式消灭if-else if-else前例的三元表达式实现如下:public String getReversedOperator2() { return operator.equals("=") ? "!=" : operator.equals("==") ? "!=" : opera...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1984

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1841

陈旧语法密度之七——用泛型消灭if-else if-else

用泛型消灭if – else if - else消灭if-else if - else的方法多种多样,其中看似远在天边的泛型是一种方法。这种方法多用在每个分支看上去非常相近,甚至有点眼花缭乱的情况。比如:public class FormulaValueOld { public enum Types {Integer, BigInteger, Float } //... 10 types ...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 2169

Go基础:一文掌握Go语言网络编程

Go语言凭借强大的标准库和原生并发支持,非常适合网络编程开发。文章介绍了Go语言在网络编程中的核心概念和应用场景,包括TCP、UDP和HTTP等协议的具体实现方法。主要内容包括:1)网络编程核心概念(Listener、Conn、Addr等);2)TCP服务器/客户端的实现流程与示例代码;3)UDP无连接通信的实现方式;4)利用net/http包构建HTTP服务。文章通过详细的代码示例展示了如何利用Go的Goroutine和Channel特性高效处理网络连接,并强调了连接管理的最佳实践。

数据知道的博客 5513

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

陈旧语法密度之三——用直接删除else的方法消除if-else if-else

用直接删除else法消除if-else if-else这几节先说一些简单的情况,在基本语法的层面,即使是仍然保持面向过程的编码,也能消除。请看下面的代码:public String getReversedOperator3() { if (operator.equals("=")) { return "!="; } else if (operator.equals("...

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1970

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

别再画没人能读懂的架构图:从系统拆解到信息密度的完整设计方法

技术架构图是团队沟通、方案评审与系统排查的核心载体,但多数架构图停留在“视觉美观”层面,缺少清晰的信息层级与准确的依赖关系表达。一份具备工程价值的架构图,设计起点并非打开画图工具,而是完成系统拆解:梳理服务边界、依赖方向与数据流向。在此基础之上,需守住信息密度原则,区分主链路与异常分支的表达粒度,建立以形状、色彩与线型为要素的视觉语法,并通过持续维护、负责人机制与配套图说文档,提升图的寿命与复用效率。本文以订单系统为例,完整推演了从草稿到评审用图的设计过程,并给出工具选型与自测方法,帮助技术团队将架构图真正

weixin_30000735的博客 171

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

主谓宾是语言的底层操作系统:从语法概念到高效表达

主谓宾结构是人类语言最基础的信息组织范式,其本质是‘动作主体—核心动作—作用对象’的逻辑闭环,而非单纯词性或位置规则。它决定信息传递效率与认知负荷,直接影响沟通清晰度、文案可信度和执行可追溯性。在短视频脚本、电商详情页、政务公文等高密度信息场景中,一个精准的主谓宾组合能实现0.3秒内锁定关键要素,成为降低理解成本、强化责任归属、提升转化效果的核心技术杠杆。本文结合汉语特性,解析主语的逻辑承担性、谓语的信息焦点性、宾语的直接受力性,并提供可落地的炼句三步法与高频场景变形策略。

weixin_30086969的博客 81

AI加速器设计:从计算密度与访存比出发的可搭建呼吸系统

AI加速器本质是解决数据搬运瓶颈的‘计算呼吸系统’,其核心原理在于计算密度与访存比的动态平衡——前者决定单位面积算力效率,后者刻画每FLOP所需内存带宽。这一对参数共同构成AI硬件性能的底层标尺,直接决定边缘设备能否高效运行ResNet、YOLO或Transformer等模型。技术价值体现在绕过晶圆厂依赖,用FPGA+Python即可验证架构;典型应用场景包括嵌入式AI推理、NPU原型开发及异构SoC中NPU子系统设计。本文聚焦‘存储-计算-调度’三层解耦实践,深度融合矩阵分块、SRAM Bank物理分组、

weixin_29195217的博客 250

头脑风暴:创建一门独特的中文编程语言,更符合汉语习惯。因为中文特殊的分词特性,能否设计成词与词之间没有空格的语法

本文探讨了创建一门无空格中文编程语言的构想,通过多角色视角(创新者、怀疑者、分析师等)展开辩论。创新者提出"文脉"语言设想,强调自然语言编程和人机协同;怀疑者则指出词法歧义、可读性差等根本性缺陷。最终方案折衷各方观点,提出"文脉-语义流"编程范式:采用分层语法设计(自然书写层+结构化执行层),结合智能IDE实现实时分词和语义高亮,同时保留中文表达习惯。报告建议分三阶段实施:先开发VSCode插件验证核心概念,再构建语言解释器,最终建立开源生态。关键创新在于将编程环境从

skywalk8163的专栏 1282

敏捷开发一千零一问系列之三:序言及解决问题的心法(共振)

这是敏捷开发一千零一问系列的第三篇。(在这里提问,之一,之二,之三,问题总目录)也是般若敏捷系列第十二篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二)共振共振是以无我、无住精神推广敏捷时的具体做法。很容易被简单理解为循序渐进,但这样理解不全面,这也是为什么会出现“共振”这个奇怪的词汇。之前的无我、无住,也都很难找到完整替代的又没有歧义的词汇或语句。循序渐进很多人都

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 9118

Kiln Agent API Info:为对话 Agent 量身定制的三个高信息密度 REST 端点

本文基于 Kiln 仓库中 [`specs/projects/agent_api_info/`](https://link.gitcode.com/i/9c12b07f5577e6229701f28a59a7acbf) 下的设计文档(project overview、functional spec、architecture、implementation plan 及五份 phase plan),系

gitblog_01075的博客 394

文本分析的基础|文本清洗(三):信息价值评估与筛选

前两篇文本清洗工具介绍了基于固定规则的清洗和基于 ai 语言理解的结构还原,但是这还远远不够,仅仅使文本达到了“可用”标准,但并不意味着文本具备完备的可分析“价值”。最后,用户可基于滑动条设置阈值(推荐初始值0.7),一键导出高价值文本,快速构建出一个去芜存菁的高质量语料库,用于后续的机器学习模型训练或深度文本分析。最后,用户可基于滑动条设置阈值(推荐初始值0.7),一键导出高价值文本,快速构建出一个去芜存菁的高质量语料库,用于后续的机器学习模型训练或深度文本分析。信息价值评估器的交互界面。

Shush1337s的博客 1414

AI如何提升短篇学术论文写作效率与质量

学术写作的核心在于高效传递研究成果,而短篇论文更需平衡信息密度与表达清晰度。传统写作流程常面临篇幅限制与论证深度的矛盾,AI辅助工具通过结构优化、知识增强和表达精炼三大功能重构写作范式。以自然语言处理技术为基础,这些工具能自动识别逻辑漏洞、推荐高质量文献,并智能精简冗余内容。在工程实践中,AI写作辅助已证明可提升论文被引量34%,尤其适合IEEE等会议论文的严格篇幅要求。通过逆向写作工作流和动态调整策略,研究者可系统提升写作效率,而个性化模型训练更能进一步适配特定学术风格。

weixin_29061531的博客 267

AI生成代码实战:从提示词到生产环境的完整指南

AI生成代码正在从辅助工具演变为开发流程中的核心环节,它改变了程序员与代码的关系。理解其背后的概率生成原理,掌握结构化提示词的编写方法,是提升代码质量的关键。AI擅长样板代码、单元测试和常见算法实现,但在架构决策和深层业务理解上仍需人工把关。通过代码审查清单、安全合规检查和人机协作节奏,可以将AI生成的代码安全地引入生产环境。本文从概念、原理到工程实践,系统梳理了AI辅助开发中的常见问题与排查思路,帮助开发者建立一套可落地的AI协作工作流,让工具真正服务于效率提升。

weixin_32285357的博客 180

热门项目推荐:UEditor Plus - 让富文本编辑重焕新生

热门项目推荐:UEditor Plus - 让富文本编辑重焕新生 【免费下载链接】ueditor-plus 基于 UEditor 二次开发的富文本编辑器,让UEditor重新焕发活力 项目地址: https://gitcode.c...

gitblog_01416的博客 1097
上一篇: Java重构与TDD测试驱动开发实际案例一-陈勇-专题视频课程
下一篇: 陈旧语法密度之二——switch case和if-else if-else的坏处
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值