C程序生成的代码量太大

C程序生成的代码量太大,第1张

很好解决`在你的源代码的开头包含

#include

<stdlibh>

这个头文件,再在

main()函数的最后一个大括号前加一句

system("pause");

就可以了

或者直接在最后一个大括号前加

getchar();

就可以了

Copy-Paste 是一件非常有效的开发方式,但是它们一点儿也不适合维护——为了改一个拼写错误,要去修改代码中的七八个文件,打人的心都有了。

如果万一我们是要替换这七八个文件的相应代码,那么就会更加地痛苦。在后端里,我们只需要修改相应的 Java、Go、JavaScript、Python 等语言相关文件的代码。而在前端我们需要修改 HTML/JavaScript/CSS 文件,而哪怕使用的 React 这样的框架里,我们也要修改一个文件的多个地方。

于是乎,作为一个专业的程序员,我们都在不断地寻找方式来复用代码(PS:复制/粘贴从本质上也是一种复用)。

经验总结的复用

经验总结型复用,指的是结合组织和项目的经验,提取出其中的共同部分,以便于在其它项目中继续使用。事实上,所有类型的复用都是经验型复用。因此,这里的经验总结型复用,专指于用在组织内部的复用。从我的认识来看,有以下四类:

脚手架

脚手架是一种快速创建新应用的方式。在脚手架里,我们会总结出过往经验中的模式、代码,将这些模式和代码融入我们其中。其中特色就是结合常用的各种框架,并将它们结合到一起,如后端的:Spring Boot + Spring Eureka + Feign + Zuul 等,如前端的 React + Redux + React Router 等(PS:Angular 就没这么复杂)。

市面上的主流框架,本身是提供了相应的脚手架功能。基于此,脚手架可以分为两类:

两者都有各自的优缺点。框架官方的脚手架缺少一些团队、组织特定的因素。而自制的脚手架则需要团队长期维护。不过,出于种种原因(诸如 KPI),我们都会维护自己的脚手架,你说呢?

组件库(客户端)

组件库,对于每个 Web 项目来说,都是必不可少的元素。它适用于客户端开发的 UI 复用。组件库本身分为三个层级:基础 UI 组件、复合组件、业务组件 。

一般而言,我们会使用第三方的基础 UI 组件库。在那的基础之上,封装自己的业务组件库。又或者是,再对基础 UI 组件库进行二次封装,以降低对第三方组件库的依赖,让其变成可替换的组件库。

模式库

模式库其本质仍然是一个代码集,它将我们常用的代码提取出一个公共的类库中。按分类上来说,组件库也是模式库的一种。为了方便于服务端与客户端开发区别,我将组件库独立出来。

模式库,是出于共用的目的而提取出来的。在不同的项目中,它的表现形式略有差异:

两种方式也是各有优缺点。前者维护容易出错,后者更新不方便。

模板和模板应用

组件库和模板,实质上是设计系统的一部分。设计系统是一组相互关联的设计模式与共同实践的,以连贯组织来达成数字产品的目的。它包含了以下的五部分:

而模板应用,则是在模板的基础上,进一步地整合而成,用于帮助开发人员快速的构建某一类型的应用。对应于其它类型的应用而言,则要判断是否会出现相似的应用。

工具

上述的四种方式,是比较常见的方式。而随着,我们项目数量的变多,开发人员数量的膨胀,它们开始变得麻烦。我们便需要编写一些工具,以节省大量的人力成本。

CLI

这里的 CLI 是指自制的 CLI,它与我们编写的一系列自动化代码工具相互配合,形成自己的解决方案。

其交互诸如于:

我们便可以将把配置、组件安装等一系列的工作自动化。

Schematics

Schematics 来自于 Angular 团队,其本质上也是 CLI 的一种,只是它相对于 CLI 来说,编程起来更加的简单。它将我们在编程 CLI 过程中的一些通用模式,整合出来融入了代码中。换句话来说,它相当于是前端工具中的 Angular、React——只需要编写业务逻辑,而不需要关注于基础架构。

它是现代 Web 的工作流程工具; 它可以将修改应用于您的项目,例如创建新组件或更新代码以修复依赖项中的重大变更(PS:有点类似于后端数据库脚本的味道)。还可以向现有项目添加新的配置选项或框架。

编程器插件

编程器插件,是一个非常有意思的思路。我们可以编写一个编辑器插件,在插件中加入我们常见的代码、模式和模板等。如在 VS Code 中,我们只需要创建对应的:

就此可以用于代码生成和智能感知。对于一个框架来说,我们只需要定制好框架相应的组件、模式代码,就可以复用它们。

设计系统与代码生成

当我们有了一个成体系的设计系统,就可以使用诸如 Storybook 这样的框架来优化组件的使用。它可以让我们在查看组件文档的同时,配置上相应的组件参数,最后我们只需要复制结果代码,到我们的工程中使用即可。

其与一般的组件库使用相比,更加的轻便,易于使用。

下一步,我们就是等 AI 来生成代码了。对于拥有设计系统的项目而言,我们可以直接通过类似于 Sketch2Code 的工具,直接将我们的设计转换为代码。但是,实质上这是一种更复杂的模式。对于拥有设计系统的项目来说,我们可以将设计转换为元数据。

结论

降低程序员的代码量,就是效率的提升。

代码量最大的软件项目有哪些如下

从代码量上看,属于中型偏大型软件项目了。

一般来说,一个源文件在500-1000行,头文件不确定,但一般不计入代码量。这样这个项目200-400个源文件。这个规模已经不算小了。

不过代码量从来不是评价项目大小的唯一因素,还要看很多方面。比如:

1 代码质量。同样的功能,代码质量好可以用一百行实现,如果代码冗余,或者重构做的不好,那么有可能用几百行甚至上千行。

2 代码含金量,如果整个项目都是简单代码的重复,那么代码行数再多也是没有用的。

比如做一个资源文件,可能需要几千行甚至上万行,一个项目中如果存在几十个这样的资源文件,实际工作代码就大大缩水了。而这样的资源文件带来的代码量实际上是无意义的。

3 实现功能是否有用。如果用几十万行代码,只实现了一个没有多大用处的功能,那么空有规模也没有实际意义。

4 代码是否原创。

如果是做代码移植,比如做一个解码显示的软件,关键解码代码都是移植过来的,自己原创的代码只有一少部分,那么这个项目同样意义不大,只能算习作而已。

能!

相同功能的前提下,代码量越少水平越高,代码耗时越少水平越高,很考验程序员算法功底以及对数字的敏感性。

比如网上流传的当年Quake iii中算平方根的函数,一般算开方需要不断迭代逼近,耗时较多,而卡马克的不同之处在于,他选择了一个神秘的猜测值 0×5f3759df作为起始,使得整个逼近过程收敛速度暴涨,对于Quake III所要求的精度10的负三次方,只需要一次迭代就能够得到结果。虽然我看不懂,但是提高程序执行效率,降低迭代/递归/循环次数,提高代码阅读性,以榨油的态度对待开发是每个程序员的终身目标。

float SquareRootFloat(float number) 

{

    long i;

    float x, y;

    const float f =15F;

    x = number  05F;

    y = number;

    i =  ( long )&y;

    i =0x5f3759df- ( i >>1 );

    y = ( float )&i;

    y = y  ( f - ( x  y  y ) );

    y = y  ( f - ( x  y  y ) );

    return number  y;

}

一位好的软件程序员在产品研发周期内可以维护的代码在一万行的数量级,而且往往在程序中会加上大量的注释,便于团队中的其他组员维护。编程的习惯也很重要,同样是一万行代码,如果没有层次,没有注释,再牛X的程序员也无法维护。

程序员不可以按提交代码量计算工作量。代码的数量不能作为程序员工作量的主要指标,有时候写出精简的代码,比写冗长的代码更难,用代码的多少来评估程序员的业务能力是否达标,是不客观的。衡量程序员的工作量是一件有趣的事情,不清楚做的事情以及程序的现状,是没有办法评估衡量的。

以上就是关于C程序生成的代码量太大全部的内容,包括:C程序生成的代码量太大、减少代码量的 7~8 种方式、代码量最大的软件项目有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9310101.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存