软件之基础功能,是软件的核心保障,是要竭力做对的!说明明确一个观点:很多系统代码之所以成为屎山,除了架构设计存在问题外,在实现层面往往是基础功能没有做好,后期反复调整用以满足上层的需求,这样层层放大,微小的问题最终也变成大问题。所以,软件之基础功能必须做到极致,才能为软件后续的发展奠定稳定的基础,这也是消除代码屎山的重要保障。但,把基础做好谈何容易,涉及的内容是很多的,本文就基于作者的角度给大家一点点提示,抛砖引玉一下。基础不稳可能的原因分析代码开发人员的思维方式往往是功能驱动性的,满足功能,成为一切工作的根本目的,殊不知只谋一域不谋全局的思维方式恰恰是无法取得好成果的最大原因,这种方式的表现形式如下,大家可尝试性体会是不是这样的:没有匹配好开发语言任何逻辑、任何功能都需要选用一种开发语言来实现,现在不像以前,开发语言的选择有很多种,不同语言各有擅长的领域(比如:JAVA封装更好,C/C++底层交互更好,GO云原生支持能力更好,RUST内存安全调用性更好等等)。因不同的场景需求选对语言直接影响全局效果。但,不幸的是大家在选择语言时往往基于“自己会不会”而不是解决问题适配性更好,这就是现状,一个制约做出好软件、软件人员能力提升慢的一个重要原因。作者看过一个报告,软件的安全风险有70%源于对内存的错误使用,而在这个内存使用层面若选择RUST语言就完全不是问题了,所以,现在很多大软件企业都在把重要的功能模块用RUST语言进行重构。没有“选好”和“清洗好”基础代码大家在写代码时,往往基于一个开源代码或前任代码基础之上的再迭代,这个基础代码的选择和清洗是十分关键的。任何开源代码都有其产生的背景和解决问题的主线,是否满足你代码目的需求这个很关键(比如:SSL的主线是用来解决安全传输之目的的,但却被很多人用来做身份认证使用,不是不可以,只是主线不符,后续发展一定受限)。这些基础代码是需要根据自己的需求做好正确的选择和清洗的,这很重要,适配性、确定性、干净的基础代码对一个工程是核心的核心,必须选好和清洗好没有做到解耦充分,发展受限基础代码可能有太多的依赖,这种藕断丝连的逻辑会严重制约基础代码的可发展性,更制约基于之上形成工程的可掌控性,想象一下:当时选择的基础代码现在已经获长足进步,而因受限与太多依赖没有办法使用新的是一件多么不幸的事情。这个问题是个常态化问题,因为大家都是基于功能做基础代码,不会考虑那么多其他因素解决基础代码不稳的原则方法列举解决基础代码不稳的问题,是有很多方法可以使用的,作者仅给出几个原则性方法:1、基于AI的助力,选择合适的语言很重要,突破自己的能力限制是多赢的2、在基础代码选择上,最大程度依赖成熟的开源社区的成果,并且主线要匹配3、选择基础代码,要保持自由性,不可以被绑架,即,从几个方案中用实际效果来选择4、选择基础代码,必须把其他的依赖都清洗干净,且不要对代码做二次开发,要保持其独立性5、把基础代码形成最小单元(最小能力集),单元之间通过编排来形成综合能力6、基础代码之间要基于数据基础做迭代,保障新旧更替7、基础代码要做到逻辑清晰,构造简单,数据独立。。。最后要说:屎山代码、脆弱系统,不是天生的,都是日积月累的,都源于基础代码不稳定不清洗不独立万事开头难其实说的就是这个道理,基础不实,走得越快越远,损失越大从0到1,永远是从1到100的基础,必须化大气力做好,而不是像以前随心所欲,以自己能做为依据AI时代下,把基础做实,有了先天的条件,基础越务实,价值性越大所以,AI时代下,很多以前习以为常的做法就完全错误了,一切都要重新从0开始是必要的一切归零,更是完全拥抱AI的重要品质,对于软件工程师而言更是如此,毕竟,软件能力我们还不到世界平均水平【注:以上仅是作者肤浅认识,仅供参考!】来源:与智慧做朋友作者:李志勇 ( 微信号:qichelaba )声明:文章中部分图例来源于网络,版权并不属于作者