新闻详情

新闻详情

首页 / 资讯中心 / 详情

编程思想的庖丁解牛

发布时间:2026/11/12 21:13:31来源:尧图网络
编程思想的庖丁解牛
总纲编程思想不是语法不是API而是看待问题、拆分问题、组织代码的思维方式。语法是工具思想是使用工具的方法论。底层划分两大主线面向过程、面向对象在此基础上衍生出函数式、模块化、分层、事件驱动等工程思想。C语言本身没有原生面向对象语法只能落地面向过程编程但我们可以用C手动模拟面向对象的封装思路。类比盖房子。语法是锤子、水泥、砖块编程思想是施工方案。面向过程是按工序一步步施工面向对象是预先制作预制构件再组装。不同方案适配不同规模、不同类型工程。一、面向过程思想Procedure OrientedPOP核心本质关注“怎么做”。把整个业务拆解成一串连续步骤按顺序完成任务。以流程、动作、函数为核心数据是被动的载体。程序就是一系列动作数据供各个函数读写。一句话概括先做A再做B接着C最后D。落地特征程序由一个个函数过程构成函数代表一个动作。数据和函数相互独立数据单独存放函数读取、修改数据。执行流程是线性的顺序、分支、循环串联所有步骤。适合问题逻辑清晰、流程固定、规模不大的场景。C语言最原生的编程思想。举例计算学生成绩面向过程思路定义数组存放分数写函数计算总分写函数计算平均分写函数打印结果。主函数依次调用读取成绩→计算总分→计算平均分→打印。整个思路是按步骤完成任务学生只是一堆数据函数是处理这些数据的动作。优势简单直观贴近人的直觉执行效率高开销极小非常适合嵌入式、单片机底层开发。短板业务一旦变更、项目规模变大代码耦合严重。需求改动时要修改多处函数和全局数据牵一发而动全身维护难度上升。数据没有保护任何函数都可以随意修改全局变量。二、面向对象思想Object OrientedOOP核心本质关注“是谁”。把数据操作数据的行为打包成一个整体也就是对象。不再优先考虑执行步骤而是识别现实世界里的实体实体拥有属性数据和方法行为。三大核心支柱封装、继承、多态。重点C语言没有class关键字C无法原生OOP但可以通过结构体函数指针手动模拟封装。四大基础概念封装把实体的属性和操作打包对外只暴露必要接口隐藏内部实现细节。外部不能直接随意修改内部数据只能通过提供的函数操作。继承已有类作为父类派生出子类。子类复用父类代码还可以扩展新属性、新行为减少代码冗余。多态同一个接口不同对象有不同实现。调用同一个方法实际执行逻辑由对象类型决定。类与对象类是模板对象是模板实例。类定义属性和行为对象是实实在在的实例拥有独立的数据。举例学生成绩面向对象思路识别实体学生类。属性姓名、学号、各科分数行为计算总分、计算平均分、打印个人信息。创建学生对象调用对象自身方法完成计算。数据属于学生对象只允许自身方法修改。优势高内聚低耦合代码更容易复用业务模型和现实世界实体一一对应大型项目更容易维护、扩展。短板有额外抽象开销运行效率低于面向过程抽象有学习成本小型简单程序写OOP会过度设计。三、模块化编程思想工程必备C语言高频使用模块化思想按功能拆分代码拆成独立模块模块之间通过接口通信减少互相依赖。C语言落地方式一个.c作为功能模块配套.h头文件对外暴露接口模块内部细节隐藏。规则一个模块只负责一类功能单一职责。例如串口模块、LCD屏幕模块、传感器模块。模块内部变量尽量static私有化外部不能直接访问。模块之间只调用头文件声明的函数不直接访问内部变量。优势多人并行开发模块可单独测试某模块修改只要对外接口不变其他代码不受影响。嵌入式C开发最核心工程思想。四、函数式编程思想简要理解核心把函数当成一等公民尽量避免可变数据减少副作用。不依赖外部全局变量相同输入永远产出相同输出纯函数。C语言可以使用函数指针来简单实现回调但是C不是函数式语言。适用场景数据转换、算法处理。五、事件驱动思想程序不按固定顺序执行等待事件触发事件来了再执行对应的处理函数。事件按键按下、串口收到数据、定时器中断。单片机、GUI、服务器网络程序大量使用。主循环持续检测一旦捕获事件调用对应的回调函数。特点流程不是预先写死由外部事件决定代码执行顺序。六、分层思想把软件分成多层下层提供基础能力上层调用下层禁止跨层调用。底层硬件驱动层中层业务逻辑层上层应用交互层。比如单片机项目硬件驱动层读写寄存器业务层读取传感器数据应用层处理逻辑、显示。好处硬件更换只修改底层驱动上层业务代码几乎不动。七、通用编程底层原则跨所有思想单一职责原则一个函数/模块只做一件事。函数功能不要混杂避免一个函数既读数据又写屏幕还存文件。高内聚、低耦合同一模块内部相关代码尽量聚合模块和模块之间依赖尽量少。最小暴露原则只对外暴露必须的接口内部实现隐藏。DRY原则不要重复写代码重复逻辑封装成函数。误区澄清误区1面向对象比面向过程高级写代码一定要用OOP。纠正没有绝对优劣。底层操作系统、单片机驱动首选面向过程大型业务软件适合面向对象。适合场景才最重要。C写内核、驱动全部使用面向过程。误区2模块化就是新建多个.c文件。纠正单纯拆分文件不等于模块化。真正模块化需要隔离内部数据、定义清晰接口否则只是文件拆分耦合依然很高。误区3编程思想只在写大项目才需要考虑。纠正小代码一样需要。哪怕几十行单片机代码用单一职责思路写函数调试难度会大幅降低。速记面向过程关注步骤先做啥后做啥面向对象关注实体属性行为打包一体模块化功能拆分接口隔离事件驱动等待触发事件来了再处理分层思想上下分层上层依赖下层所有思想的共同目标代码可读、易调试、方便扩展。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉