搜索
bottom↓
回复: 35

软件设计思路从哪里来,各位有没有什么书或者视频推荐

[复制链接]

出0入0汤圆

发表于 2020-2-8 23:46:56 | 显示全部楼层 |阅读模式
工作8年了,前些年基本都是按照原来公司的在用的框架进行修改,过程中经常会吐槽现有代码难用,可又总是说自己没时间,有时间一定做个更好的,于是一般都是破罐子破摔,就那么跌跌撞撞的将项目做下去,全靠加班加点完成任务。

这两年自己渐渐在部门里面带头了,看着原来众多框架有多有少的不足,重要的是经常出各种各样的问题,于是总是想进行改进,但是真的到自己抽出来时间了,反而不知道从哪里下手。

17年做了液晶屏项目,我提出要全新设计,本来想法是替换原来的不好的代码框架,听同事意见模拟MVC框架来写,自己差不多投入了3个月,一个界面也做出来了,框架也搭建好了,但是感觉继续往下做感觉工作量还很大,我自己没有把握多久能做好,甚至没办法确定能不能满足所有需求,公司也没有再高的人了,找的外援也都只是说挺好的,没有人能提出建设性意见,所以后来这个项目就搁置了。

这几天准备对一个软件模块进行重新设计,可发现一个问题:我的设计思路从哪里来呢?  换句话说:给你一个需求,到底是怎么转化为软件的? 之前经常是直接敲代码,不行了再换个思路,最后功能也能实现,但是根本没有设计之说,而且最后出来的软件感觉像是穿一身补丁衣服的乞丐一样,感觉不满意。

C语言虽然不复杂,但是设计的东西差别还是蛮大的,这几年每到一个公司都要花费半年到一年摸清楚所在公司的代码结构,又花费一两年在这个基础上进行设计。现在搞不明白的是这些人设计东西的原则和思路是什么。

网上找的书大部分都是面向对象的,面向过程的C语言介绍的不多。工作过程中,发现同事在这一块儿也一样没什么新想法,大部分都是到处打补丁一样。功能倒是都能实现,但是没有任何章法和步骤,设计质量也不可控,常常要靠调试和测试修复BUG来保证稳定性。这样下去不仅产品质量上不去,我们也都是靠没有基础的经验活着,凭不可靠的感觉设计——没有思考,没有积淀,也没有成长。

出615入1076汤圆

发表于 2020-2-8 23:55:05 来自手机 | 显示全部楼层
個人建議:多看看 Linux 源碼,我認為它是嵌入式最重要的燈塔。

出0入0汤圆

发表于 2020-2-9 09:33:09 | 显示全部楼层
表达一下我的观点,我们做电机驱动代码量基本都在3W行以内,基本都是状态机架构,系统主状态机加几十个子状态机。按照不同的业务逻辑区分,算法归算法,功能归功能。

出0入0汤圆

发表于 2020-2-9 09:48:13 | 显示全部楼层
状态机 状态机

出0入0汤圆

发表于 2020-2-9 10:46:26 | 显示全部楼层
根据自己的经验总结会好一点,看到很多并不是根据理论上的条条框框来实行,而是是迭代开发

出0入0汤圆

发表于 2020-2-9 10:51:33 | 显示全部楼层
”常常要靠调试和测试修复BUG来保证稳定性”
我觉得就算框架很好,也要用好才行。
另外可能只有天才才能做到只要少量的调试和测试就能做出可靠的产品吧,我们普通人就算用好的框架也要不少的调试和测试

出0入0汤圆

发表于 2020-2-9 10:54:00 | 显示全部楼层
高内聚,低耦合

出0入8汤圆

发表于 2020-2-9 11:01:17 来自手机 | 显示全部楼层
枫叶情缘 发表于 2020-2-9 09:33
表达一下我的观点,我们做电机驱动代码量基本都在3W行以内,基本都是状态机架构,系统主状态机加几十个子状 ...

兄台在哪个公司?hc麽?

出0入0汤圆

发表于 2020-2-9 11:32:56 | 显示全部楼层
状态机应该是很好的方法.

出0入0汤圆

发表于 2020-2-9 12:02:52 | 显示全部楼层
楼主的困惑应该大部份码农都有,赚快钱的时代,怎么快怎么来。

出280入168汤圆

发表于 2020-2-9 12:37:28 | 显示全部楼层
做事如做人,你写的代码就是你平时做事情的风格。

出0入4汤圆

发表于 2020-2-9 12:44:49 | 显示全部楼层
软件基本设计模式有23种,设计中有6条准则

出0入8汤圆

发表于 2020-2-9 13:13:57 | 显示全部楼层
感觉我的水平不在你之上,目前的办法是边走边看,跑个一段时间发现不合适再调整,时间久了,就会有更合理的设计。
建议你也别把自己逼太紧了,小步迭代,大步容易撕裂。

出0入0汤圆

发表于 2020-2-9 13:25:57 | 显示全部楼层
我感觉上面好几个人没有体会到楼主的困惑,但是我能体会到。
我是一个有10多年开发的码农了,前几年很多的工作就是找bug,发现很多的bug就是因为软件设计的不够好,框架不好,体系结构不好,导致随便一改,就出错误,到了现场运行一段时间,就出错误。
这两年一写代码,心里首先就是想,有没有法则指导,有没有原则可遵循,完全跟刚毕业不一样,刚毕业这样不行就那样,反正能拼凑出来。
我感觉楼主的困惑和我一样,编码到了一定阶段,就是寻找一个定式,寻找一个指导思路,308777087@qq.com,楼主欢迎加我,或者你说你的qq,我加你。

出0入0汤圆

发表于 2020-2-9 15:20:04 | 显示全部楼层
被坑多了,自然就会有想法,代码也就慢慢的进化了

出0入89汤圆

发表于 2020-2-9 16:16:31 | 显示全部楼层
楼主到了这个职位层面,必须把思维层面也提上来,原来写代码的,一般考虑全局也是从项目角度,但是现在需要改从公司的角度看问题了。
原来凌乱的代码是基于适用不同客户的各种需求,现在是基于公司的生存,要在行业中做一个方向性的设计。这时要抛去代码和框架,因为那个是实现层面的问题,设计层面要从你从事的这个行业,画出你们的过去,现在和未来。
至于怎么实现他,让码农去研究就好了,管他什么框架,谁设计的谁要维护。

出0入0汤圆

发表于 2020-2-9 16:21:58 | 显示全部楼层
mtswz.213 发表于 2020-2-9 11:01
兄台在哪个公司?hc麽?

不是HC,是无锡的一家公司,HC的团队比我们大多了。

出0入8汤圆

发表于 2020-2-9 16:28:09 | 显示全部楼层
先确定具体的功能需求,再设计寻找合适的框架设计(一个框架也无法无限适配),这两个步骤会不停的迭代,衍生出各个软件版本。

出0入0汤圆

发表于 2020-2-9 16:30:39 | 显示全部楼层
不要为了设计模式而设计模式, 否则软件复杂臃肿。遵循几个原则即可。

出0入0汤圆

发表于 2020-2-9 16:49:09 | 显示全部楼层
慢慢来,由下至上改进,别一把头推到从来,可以从一个个的功能模块入手

出0入0汤圆

发表于 2020-2-9 17:59:19 | 显示全部楼层
c接口实现???软件架构的书

出0入0汤圆

 楼主| 发表于 2020-2-9 18:54:53 | 显示全部楼层
gsq19920418 发表于 2020-2-9 17:59
c接口实现???软件架构的书

嗯,是的

出0入0汤圆

 楼主| 发表于 2020-2-9 18:56:02 | 显示全部楼层
szjqt 发表于 2020-2-9 16:16
楼主到了这个职位层面,必须把思维层面也提上来,原来写代码的,一般考虑全局也是从项目角度,但是现在需要 ...

我还没到你说的层次,还是在写代码,只不过承担部分技术带头工作

出0入0汤圆

 楼主| 发表于 2020-2-9 18:56:48 | 显示全部楼层
uindex 发表于 2020-2-9 13:13
感觉我的水平不在你之上,目前的办法是边走边看,跑个一段时间发现不合适再调整,时间久了,就会有更合理的 ...

步子大了容易扯着

出0入0汤圆

发表于 2020-2-12 18:02:44 | 显示全部楼层

我说的书名《C接口技術與實現》

出0入0汤圆

 楼主| 发表于 2020-2-12 18:05:14 | 显示全部楼层
gsq19920418 发表于 2020-2-12 18:02
我说的书名《C接口技術與實現》

我理解错了,说的是怎么设计接口上面的框架。
这本书有,看了几章,主要是C库的更安全设计。

出0入0汤圆

发表于 2020-2-13 10:20:06 | 显示全部楼层
qingyin2009 发表于 2020-2-12 18:05
我理解错了,说的是怎么设计接口上面的框架。
这本书有,看了几章,主要是C库的更安全设计。 ...

架構按照項目實際來

出0入0汤圆

发表于 2020-2-13 14:16:24 | 显示全部楼层
适合自己才是最好的

出0入0汤圆

发表于 2020-2-13 20:43:51 来自手机 | 显示全部楼层
我觉得程序架构还好说,用上操作系统后很清晰。难的是参数太多,模块之间就耦合得错综复杂了。不知道大牛们有何高招。

出150入135汤圆

发表于 2020-2-13 22:19:24 来自手机 | 显示全部楼层
想要写的有条理,框架分明并不是那么容易,特别是项目比较紧的时候,能完成就不错了,讲究结构程序框架分明,也需要精雕细琢,有时候甚至需要重写

出0入0汤圆

发表于 2020-2-13 23:22:52 | 显示全部楼层
了解学习一下常用设计模式和原则,从提高代码的可读性、可扩展性、复用性和可维护性等方面进行考虑,编写高内聚,低耦合的代码。
代码编写是一个不断完善的过程,需要不断迭代、优化。
另外可以多研究一些优秀的开源代码。

出0入4汤圆

发表于 2020-3-3 14:55:47 来自手机 | 显示全部楼层
我要想学习学习。。不知道怎么分块真的是头疼。。

出0入0汤圆

发表于 2020-3-3 15:14:28 | 显示全部楼层
现在是用rtos来分任务执行 也不懂框架之类的 有哪些框架?有大神来解惑吗?

出20入0汤圆

发表于 2020-4-5 20:26:42 | 显示全部楼层
while (1) {
    coding;
    多看高手代码;
     增加理论知识,运用软件工程,设计模式等思想;
     尝试重构以前代码;
}

出0入0汤圆

发表于 2020-4-5 21:51:44 来自手机 | 显示全部楼层
原则能说得一套一套的很多,事实上愿意这么做也是愿意自我较劲(纠结)的很少。这样做对公司有利,对于某个项目来讲不堪其负,成本和进度压力一来,一下子又回原形了。

出0入0汤圆

发表于 2020-4-5 21:56:06 | 显示全部楼层
熟能生巧,多思考多总结多学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 02:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表