发布时间:2022-06-23 12:00来源:www.51edu.com作者:畅畅
编程语言好学,编程思路难学,作为一名C语言软件编程工程师,由我来回答这个问题
编程思路我个人认为,可以分为几大块:编程逻辑最优解,编程框架,调试方法这三个方面来讲解。
编程逻辑最优解:对于这点要求,需要有扎实的编程语言知识基础,想要实现一个功能,可以有多重实现方法,简单的如选择语句,就可以选择不同的写法。用数组和用指针的写法,等等,都需要有扎实的编程语言专业知识才有可能完成。这个也是为什么很多新手要用好些条代码的才能完成的功能,老工程师简单几句就能完成的原因。
编程框架在编写代码过程中,代码框架非常重要,就如同汽车骨架,我们在设计中,除了满足功能完善,在稳定性基础上,建议使用状态机思路,或者用嵌入式os,同时还要考虑到维护和移植方便,常用模块化编程,一个部件的代码规划成几个简单的接口函数,放置但对应的.c和.h,移植的时候只需要简单的复制文件和调用接口就可以了。
接收到一个任务的时候,在编写代码之前,一定要建立软件流程图,将编程的实现实录捋一遍,这样在写代码的时候,才做到心中有天地,手下如有神。能很快的完成需要的功能。
调试方法写代码肯定会有bug,怎么解决bug是软件工程师必备技能,遇到BUG常见的做法,在合适的位置加入探针代码,比如串口函数,或者打印函数,将需要观察的变量,通过这些函数打印出来,来确定对应代码是否执行。
或者使用开发软件调试工具,进行单步执行,根据编译器实时反馈执行情况,来定位问题点,找到问题后,针对问题找到方法解决。
总结以上的这些,都是属于编程思路,都需要从项目中不断编写与总结出来的经验,每个人都有自己的方法,但归属到专业技能上,软件工程师必须每次做完任务,都要认真总结经验,才会越来越得心应手。
我是科技电小二,一名嵌入式开发工程师,如果您觉得这篇文章对您有所帮助,那么点个赞,并加个关注吧。
做过一些小项目,个人见解:
一,首先整体上先了解开发需求。程序要实现哪些功能,哪些细节,包括前端页面,数据存储等等。
二,选择一种数据库。根据需求中预期的数据量、并发等确定是用oracle,sqlserver,mysql。
三,选择开发语言。一个项目可以用一种或几种语言来开发。因为每种语言都有其长处,以及你对不同语言掌握情况,可以选择不同语言开发前后端程序。如可采用java、c#、python开发后台逻辑,前端可用vue.js等框架来实现。举个例子:后台用python爬取了数据存入数据库,可以用C#把数据在前台展示出来。如需求中有手机端展示,还需开发android App。
四,开始写程序,敲代码。
五,部署到服务器。
写过一些程序后,自然就有自己的编程思想。
另外,可以借鉴一下优秀的App程序的实现原理,尝试加入到的自己的项目中,慢慢的你会成熟起来。
模块化编程是将计算机程序细分为单独的子程序的过程。模块是一个单独的软件组件,它通常可以与系统的其他组件一起用于各种应用程序和功能。
模块化编程背景一些程序可能具有数千行或数百万行,并且要管理此类程序变得非常困难,因为程序中可能存在太多语法错误或逻辑错误,因此要管理这种类型的程序,需要采用模块化编程的概念。每个子模块仅包含所需功能的一个方面,模块化编程强调将大型程序分解为小问题,以提高代码的可维护性,可读性,并使程序便于将来进行任何更改或更正错误。
模块化编程优势易用性
这种方法可简化操作,因为我们可以一次以模块的形式访问它,而不是一次关注整个数千万行代码。这样可以轻松调试代码,并减少错误。
可重用性
它允许用户通过其他界面重用功能,而无需再次键入整个程序。
易于维护
在处理模块时,它有助于减少冲突,帮助团队在处理大型应用程序时进行适当的协作。
C语言中的模块化编程示例C之所以称为结构化编程语言,是因为为了解决一个大问题,C编程语言将问题分为称为功能或过程的较小模块,每个模块负责特定的职责,解决整个问题的程序就是这些功能的集合。
模块基本上是一组相互关联的文件,它们共享其实现细节,但对外界隐藏。我们如何在c中实现模块化编程?默认情况下,在C中定义的每个函数都可以全局访问。这可以通过包括在其中定义函数实现的头文件来完成。
假设我们要声明一个堆栈数据类型,同时要向用户隐藏实现(包括其数据结构)。为此,我们首先定义一个名为stack.h的公共文件,该文件包含通用数据Stack数据类型和该堆栈数据类型支持的功能。
在头文件中,我们必须仅使用模块名称来包含常量,结构,变量和函数的定义,这样可以轻松地在具有多个模块的较大程序中识别定义源。
关键字extern和static帮助实现C中的模块化。
现在我们可以创建一个名为stack.c的文件,其中包含堆栈数据类型的实现:
主文件可能包括模块堆栈
当然,模块化编程还有其它特点和优势,这里不一一陈述了,感兴趣的朋友可以研究下,希望我的回答对大家有所帮助!
哲学的思考代码是为了解决现实世界问题的,同样他也可以在一定程度上去反应现实世界的状态,我们在现实世界中的经验也可以在代码开发的过程中进行借鉴。接下来,我们看一下现实世界中关于模块化有哪些应用。
现实世界现实中有很多模块化应用的场景,比如:衣服的拉链是一个模块,手表及表链是相互配合的两个模块,电脑由也是由多个不同模块组成,具体如下:
电脑由CPU,显卡,内存,硬盘,键盘,屏幕,鼠标等待标准模块组成。那么,电脑的模块化有什么好处呢?
对于消费方的我们可以按照自己的喜好及需要去进行组合,或者针对某一个模块去升级。对于生产方的厂商,他们可以按照标准接口,去分别实现自己的模块。回归到代码的模块化
1. 代码层面
代码的模块化,可以方便代码进行复用,一套逻辑写一遍即可。
2. 业务层面
代码的模块化:静态思考
降低复杂度,便于组合:将系统拆分成一个个小的模块,每一个模块所需关注的业务及逻辑减少,实现起来更加简单;同时,利用这些模块,可以方便进行各种各样的组合,可以应对各种各样的需求。
代码的模块化:动态思考
随着业务的演进,需求不断变化,会产生两种变化:针对某个模块的逻辑变化:此时只需要修改对应的模块内部逻辑即可,其它模块无感知;针对模块的组合发生变化:此时只需要修改模块组合处即可,模块内部无感知。当然,以上两种情况,也可能同时出现,分别做相应的修改即可。
代码的模块化:项目的长期可维护性思考
一套代码经历几年的生命之后,同样也会经历多个开发者修改或者添加逻辑,甚至整个开发团队都有可能发生变化。这个时候的代码,往往会腐化,逻辑缠绕,引用关系复杂,代码冗长,为了补坑的打的补丁式代码随处可见。
如果这个项目还需要继续,那么不得不进行重构,或者重新开发,但是我们如果针对整个项目进行重构,风险太大,往往进行小步快走,按模块进行重构,那么这种方式得以实现的前提是,前期做好了模块化拆分。
3. 人员的组织架构方面
进行模块化拆分之后,我们可以针对不同的模块进行并行推动,进而缩短项目整体的完成时间,主要可以并行的有:产品设计可以并行,开发可以并行,测试可以并行。
关于这个问题,你有什么看法,欢迎在评论区留言讨论。我是闲谈架构,持续输出本质性思考,关注一下哦。
流浪法师出装,英雄联盟手游小法师怎么出装
勇者斗恶龙7安卓攻略,勇者斗恶龙7安卓
lol小鱼皮肤哪个手感好,菲兹皮肤手感排行
妄想山海香料蘑菇怎么做,妄想山海臭豆腐配方和制作方法分享
厄运之槌地图走法,魔兽厄运之槌副本入口
另一个伊甸奈岐角色任务,另一个伊甸奈岐技能介绍及强度测评
西部荒野稀有乌尔图斯,外域稀有精英分布图
奶茶制作方法,妄想山海烤全鱼配方和制作方法分享
洛克王国酷拉要刷多少次,洛克王国酷拉在哪
开心消消乐
类型:休闲益智
解压宝盒
类型:休闲益智
迷你世界
类型:休闲益智
恐怖奶奶
类型:休闲益智
老板挪个车2
类型:休闲益智
我的狗狗
类型:休闲益智
贪吃蛇大作战
类型:休闲益智
白块儿达人-节奏钢琴黑白块
类型:休闲益智
解压模拟大师
类型:休闲益智