【唠唠嵌入式】__嵌入式开发需要从0开始造轮子吗?

目录

前言

从0开始和套用模板的利弊

[1. 从0开始的利弊](#1. 从0开始的利弊)

[2. 套用模板的利弊](#2. 套用模板的利弊)

从0开始,还是套用模板?

[1. 看项目赶不赶](#1. 看项目赶不赶)

[2. 看项目用途](#2. 看项目用途)

[3. 看工程师水平](#3. 看工程师水平)

[4. 看领导决策](#4. 看领导决策)

[5. 看公司决策](#5. 看公司决策)

[6. 看项目规划](#6. 看项目规划)

实际工作

总结

[(* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。](#(* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。)


前言

看到有小伙伴在讨论关于"造轮子"的话题,各有各的观点,这里先说两种常见的情况。

  • 第一种情况

老板从来不催进度,做项目的工程师也不慌不忙,从零开始一步一步创建工程,然后一步一步写代码(即从0开始造轮子)。

当把项目做好,或者项目才做到一半时,公司可能就已经倒闭了。

  • 第二种情况

老板要求在尽量短的时间把项目赶出来,好,直接套用 各种模板(比如:单元模块、软件库、协议栈等),东拼西凑,终于,在规定时间完成了项目,项目也勉强运行起来。

某一天,老板让新加一个功能,发现与原来的功能有冲突,那该怎么办?重新开始写代码?

你会发现:不管是从0开始造轮子,还是直接套用模板都存在弊端。

从0开始和套用模板的利弊

从0开始,意味着整个项目都由工程师一步一步完成,而不用各种现成的模板。

凡事没有十全十美,从0开始和套用模板都有优点,也都有缺点。

1. 从0开始的利弊

  • **好处:**软件的各种逻辑自己比较清楚,方便后期增、删、改、查。
  • **缺点:**比较费时间,而且,软件存在bug的可能性比较大。

2. 套用模板的利弊

  • **好处:**软件可靠稳定(当然,指的是市面上常见的软件库、协议栈等),也节约开发时间。
  • **缺点:**可能与你项目存在冲突,比如存在阻塞情况,比如占用资源比较等。

从0开始,还是套用模板?

这里我也不能说哪一种好,哪一种不好,最终还是要结合你项目实际情况。

1. 看项目赶不赶

如果项目开发时间相对宽松(不那么赶项目),可以从0开始搞起。比如:前期尽量抽时间规划好项目,搭建好软件框架等。

如果项目要在最短时间内赶出来,可以套用一些现成模板,甚至直接从GitHub下载一个类似项目简单修改,以完成功能为主,先上(zheng)线(qian),然后慢慢优化。

2. 看项目用途

如果写一个软件,只是单纯的拿给客户演示,能用模板就用模板吧。

如果定位是一个大批量生产的产品,建议从0开始,结合成熟模板做起来。

3. 看工程师水平

如果工程师是一个菜鸟,你让他从0开始,等项目做好估计黄花菜都凉了。还有,即便项目做好了,可能Bug也无数。此时,还是建议你参考别人的模板,或者源码(当然,不是网上随便找的那种哈)。

如果工程师是有一定经验,手上项目没有很多的参考模板,可以从0开始做起。

4. 看领导决策

······

5. 看公司决策

······

6. 看项目规划

······

实际工作

公司项目立项的时候,各种近期、远期规划都有,就连嵌入式软件各种细节也是做了各种规划。比如:模块(模块化)、软件命名、软件框架等。

总之,前期花了很多时间做了很多准备工作,然后,项目按照规划一步一步从0开始搞起来。

前几年项目也非常顺利,虽然偶尔有小bug,但很快就能锁定bug并快速得到解决。

但是,随着市场的变化,功能改变和增加的情况越来越多,时间也越来越紧张,在增加、修改、删除功能或模块的时候,没有太多时间优化项目。

终于,项目暴露的问题越来越多,测试部反馈的一级bug也越来越多,市场也经常反馈问题。

最终,实在没办法,项目暂停,重新整理软件架构,在一个月之后,更新架构的软件完成了,也比较顺利。

说明一下:

整个软件项目做到后面比较大,其中也套用了第三方库、协议栈等。因为项目做的很多规划(准备工作),前期开发的也比较顺利,但后面项目紧张没有优化,代码叠加就更容易引起bug。

好在前期做足了工作,比如模块化、代码高内聚低耦合等,在后面软件重构也相对比较顺利,很多模块都可以直接复用。

总结

从0开始还是套用模板,应该遵循几个原则:

  • 项目开发时间越短越好

  • 项目越稳定越好

  • 项目后期增删改查越容易越好

  • ······

在不能平衡的情况下,就要有所取舍,但要尽量平衡。就像上面说的,赶进度而未优化,为后期留下后患。

因此,一般建议先规划项目,像软件框架、结构这种结合项目情况从0规划,然后参考或者套用一些成熟模板,再次,在编码过程中,不断优化和完善代码。

最终不管什么方式,目的是使项目稳定,方便增删改查。


(* ̄︶ ̄)创作不易!期待你们的 点赞收藏评论喔。

本文来源网络,免费分享知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除!

相关推荐
写代码的小阿帆2 小时前
Java体系总结——从基础语法到微服务
java·微服务·学习方法
A9better8 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习
躬身入世,以生证道8 小时前
面试技术栈 —— 简历篇
面试·职场和发展
Asmalin9 小时前
【代码随想录day 35】 力扣 01背包问题 一维
算法·leetcode·职场和发展
思诺学长9 小时前
BMS(电池管理系统)的主要功能和架构简述
单片机·嵌入式硬件
Fency咖啡9 小时前
高效学习方法——知识关联性
学习方法
Chandler_Song13 小时前
【专业词汇】STAR
学习方法
学生董格13 小时前
[嵌入式embed]RT-ThreadStudio-STM32F103C8T6(江协科技)+移植RT-Thread v4.11模版
科技·stm32·嵌入式硬件
szxinmai主板定制专家14 小时前
一种基于 RK3568+AI 的国产化充电桩安全智能交互终端的设计与实现,终端支持各种复杂的交互功能和实时数据处理需求
arm开发·人工智能·嵌入式硬件·安全
萧技电创EIIA14 小时前
基于stc12单片机的PID恒温烙铁设计
单片机·嵌入式硬件·pid过程控制