首页/新闻资讯/正文详情

编程思想的庖丁解牛

发布时间:2026/9/25 21:09:29 来源:云帆数科 栏目:资讯中心
编程思想的庖丁解牛
总纲编程思想不是语法不是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编程思想只在写大项目才需要考虑。纠正小代码一样需要。哪怕几十行单片机代码用单一职责思路写函数调试难度会大幅降低。速记面向过程关注步骤先做啥后做啥面向对象关注实体属性行为打包一体模块化功能拆分接口隔离事件驱动等待触发事件来了再处理分层思想上下分层上层依赖下层所有思想的共同目标代码可读、易调试、方便扩展。

相关推荐

基于NLP的恶意代码静态特征提取与分类检测工具设计与实现(代码+数据库+LW)
基于NLP的恶意代码静态特征提取与分类检测工具设计与实现(代码+数据库+LW)

摘 要 针对传统恶意代码检测方法难以应对变种恶意代码、深度学习检测模型可解释性差且部署成本高的问题,设计并实现一款基于自然语言处理(NLP)的恶意代码静态检测工具。工具以 PE 文件和脚本文件为检测对象,通过静态分析提取三类… · 2026/9/25 21:09:22

Atlas 300V 24G推理卡实战:从NPU原理到YOLO部署全流程
Atlas 300V 24G推理卡实战:从NPU原理到YOLO部署全流程

最近后台收到不少朋友在问 Atlas 300V 24G 这张卡,问法也五花八门,最典型的是“它到底是不是运算加速卡”“能不能拿来跑 YOLO”“和平时用的显卡有什么区别”。我手上正好有张 Atlas 300V 24G 在做推理部署,也把 YOLOv5、YOLOv8 都往这张卡上… · 2026/9/25 21:09:22

给AI“建档立卡“:一套面向智能体的数据资产管理体系
给AI“建档立卡“:一套面向智能体的数据资产管理体系

目录 0.引言:当 AI 成为数据消费者,资产目录得重写 1.资产盘点:企业面向作业、分析、AI的三类数据资产目录 1.1 面向作业的数据资产目录 1.2 面向分析的数据资产目录 1.3 面向 AI 的数据资产目录 2.训练侧:管理支撑 AI 增… · 2026/9/25 21:09:22

为什么我给智能体做技能库,而不是写一堆 Prompt?
为什么我给智能体做技能库,而不是写一堆 Prompt?

为什么我给智能体做了一套“技能库”而不是写一堆Prompt做AI Agent开发这段时间,我踩过最深的坑,就是看着模型一本正经地“表演”干活,最后却给我返回一堆毫无用处的文本。你问它今天天气,它能给你写一篇80字的作文;你… · 2026/9/25 22:25:55

Atlas 300V 24G实战:用NPU加速卡部署YOLO推理的全流程指南
Atlas 300V 24G实战:用NPU加速卡部署YOLO推理的全流程指南

前阵子项目做边缘侧视频流目标检测,手里原本用的是GPU,但客户指定设备时偏偏是一块Atlas 300V 24G。拿到卡的第一反应其实和很多人一样:这东西到底算不算运算加速卡?能不能直接把YOLO塞进去跑?后来折腾了几天&#xff… · 2026/9/25 22:25:55

【无标题】27届软件工程找实习总结
【无标题】27届软件工程找实习总结

很多同学并不是能力不够,而是准备方向和现在企业真正需要的能力出现了偏差。很多计算机学生到了大三、大四,准备秋招的时候,依然把大量时间投入在传统Java项目上,比如SpringBoot商城系统、校园二手交易平台、博客管理系统、后台管… · 2026/9/25 22:25:55

Atlas 300V实战:昇腾AI加速卡上部署YOLO模型全攻略
Atlas 300V实战:昇腾AI加速卡上部署YOLO模型全攻略

先回答那个被搜了很多次的问题:Atlas 300V 24G,确实是一块运算加速卡,而且是一块专门为AI推理设计的加速卡。但它和你熟悉的英伟达GPU有本质区别——它不是拿来跑CUDA的,底层走的是完全不同的计算架构和软件栈。很多人第一次接触A… · 2026/9/25 22:25:55

Codeg 浏览器智能体:如何让 AI Agent 读取并操作网页的完整指南
Codeg 浏览器智能体:如何让 AI Agent 读取并操作网页的完整指南

Codeg 浏览器智能体:如何让 AI Agent 读取并操作网页的完整指南 【免费下载链接】codeg Collaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docke… · 2026/9/25 22:25:17

Atlas 300V 24G部署YOLO全攻略:从模型转换到推理调优
Atlas 300V 24G部署YOLO全攻略:从模型转换到推理调优

1. 先搞清楚:Atlas 300V 24G到底是不是一张“运算加速卡”服务器到货那天,我做第一件事不是急着装系统,而是先插上一块全新的计算卡。卡身上的印刷体小字写得很克制:Atlas 300V 24GB。随后我打开终端敲了一句npu-smi info&#xf… · 2026/9/25 22:24:20

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码