如何通过多种方式提高代码复用性,以减少重复工作和开发效率?

关于如何通过多种方式提高代码复用性,以减少重复工作和开发效率?在主流搜索中给您找到以下答案:

程序代码开发中怎样才能提高我们的开发效率呢?论整持 -- 360

如何减少代码的量 -- sougou

软件复用的几种方式 -- baidu

程序代码开发中怎样才能提高我们的开发效率呢?论整持

提高开发效率可以从以下几个方面进行学习。首先多多学习开源来自项目,分析别人的代码架构,吸取对方优秀的编程思想,理解后下次开发用上第二:记住系统提供给我们的快速开发的方法,常用的方法都有日期函数,字符串函数,文件函数等,比如下面的函数:一个不透明的结构, 它指向一条线程并间接(通过该线程)引用了整个 Lu a 解释器的状态。 L ua 库是完全可重入的: 它没有任何全局变量。 状态机所有的信息都可以通过这个结构访问到360问答。这个结构的指针必须临减相年罪术开缩处赵作为第一个参数传递给每一个库函数。 l ua_newstate 是一个例外, 这个函磁数会从头创建一个 L ua 状态机。l。a_status返回线程 L 的状态。正常的线程状态是 0 (LUA_OK)。 当线程用 lua_resume 执行完毕并抛出了一个错误时, 状态值是错误码。 如果叶减短线程被挂起,状态为 LUA_YIELD 。你只能在状态为 LUA_OK 的线程中调用函数。 你可以延续一个状态为 L否因坚阻织都互功湖斗UA_OK 的线程 (用于开始新协程)或是状态为 LUA_YIELD 的线程 (用于延续协程)。lu a_stringtonumbersize_t lu a_stringtonumber (l ua_State *L, const char *s);将一个零结尾的字符串 s 转换为一个数字, 将这个数字压栈,并返回字符串的总长度(即长度加一)。 转换的结果可能是整数也可能是浮点数, 这取决于 L强争龙座华调油短方吃ua 的转换语法(。 这个字符串可以有前置和后置的空格以及符号。 如果字符串并非一个有效的数字,返回 0 并不把任何东西压栈。 (注意,这个结果可以当成一个布尔量使用,为真即转换成功。)lu a_tobooleanint l斗丝调u a_toboolean (到德谁倍旧lu a_State 山化放犯怕苗初序福制降*L, int index);把给定索引处的 Lu a 值转换为一个 C 中的布尔量( 0 或是 1 )。 和 L ua 中做的所有测试一样, lua_toboolean 会把任何不同于 fa矿受践案将法田肥湖lse 和 nil 的值当作真返回; 否则就返回假。 (如果你想只接收真正的 boolean 值, 就需要使用 lua_isb刘富输经今oolean 来测试值的类型。)lu a_tocfunctionlu a_CFuncti精on lua_tocfunction (lu a研液美县耐远又_State *L, int index);把给定索引处的 L ua 值转换为一个 C 函数。 这个值必须是一个 C 函数; 如果不是就返回 NULL 。lu a_tointegerlua_Integer l ua_tointeger (lu a_State *L, int index);等价于调用 l ua_tointegerx, 其参数 isnum 为 NULL。lu a_tointegerxl ua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);将给定索引处的 L。a 值转换为带符号的整数类型 l所投u a_Integer。 这个 Lu a 值必须是一个整数,或是一个可以被转换为整数 (3)的数字或字符串; 否则,lua_tointegerx 返祖与饭复回 0 。如果 isnum 不是 NULL, *isnum 会被设为操作是否成功。lu a_tolstringconst char *lu a_tolstrin的友按意光物甲画车伯罪g (lu a_State *L, int index, 端频剧完个肥领size_t *len);把给定索引处的 Lua 值转换为一个 C 字符串。 如果 len 不为 NULL , 它还把字符串长度设到 *len 中。 这个 L ua 值必须是湖脱挥系一个字符串或是一个数字; 否则返回返回 NULL 。 如果值是一个数字, lua_tolstring 还会 把堆栈中的那个值的实际类型转换为一个字符串。 (当遍历一张表的时候, 若把 lua_tolstring 作用在键上, 这个转换有可能导致 lua_next 弄错。)lua_tolstring 返回一个已对齐指针 指向 Lua 状态机中的字符串。 这个字符串总能保证 ( C 要求的)最后一个字符为零 ('{文章内容}') , 而且它允许在字符串内包含多个这样的零。因为 Lua 中可能发生垃圾收集, 所以不保证 lua_tolstring 返回的指针, 在对应的值从堆栈中移除后依然有效。

如何减少代码的量

我始终认为,代码应作为架构的一部分,不如此,不足以表达代码质量的重要性。我知道,这与传统学院派对架构的定义是相悖的。一般认为,架构是描述设计蓝图的宏观过程,然而,敏捷方法的逐步普遍,却慢慢开始颠覆这种事前设计的论调,代码不仅要体现架构的原则与思想,还要通过代码对架构施加影响,甚至利用代码来补充与完善架构。Yourdon与Constantine认为软件系统的整体成本等于开发成本加维护成本,而后者成本远远大于开发成本。维护成本包括理解、变更、测试与部署的成本。其中,所谓“理解”主要还在于维护人员如何理解代码,尤其是当变更发生时。只有清晰的代码结构,才有助于我们理解系统;也只有清晰的代码结构,才能提高代码质量。所以,我认为代码是纳米架构(Nano Architecture)的一部分。代码是债务,越少越好》,根据精益方法中的库存得到减少代码数量的结论。《修改代码的艺术》(英文书名Working Effectively with Legacy Code)的作者Michael Feathers最善于处理遗留代码,他认为“代码也是我们持有的库存,并且需要最小化。”这篇新闻中摘录的观点都是警示之语,唤起了我们对代码数量的关注。就本人而言,我认为减少代码量的最佳做法莫过于提高代码的重用性。《程序员修炼之道》中认为,重复的类型包括:1、强加的重复2、无意的重复3、无耐性的重复4、开发者之间的重复综合而论,我认为导致代码重复的原因有三个:1、懒惰,所以能够容忍不好的代码;2、技能不足,常常会出现不必要的重复代码;3、缺乏沟通,团队之间协作不够,因而重复制造轮子。重用的关键是保持合适的粒度,以及对关系的解耦。粒度表现在方法级,就是需要编写许多小的方法,找到类中可以重复调用的职责,抽取为单独的方法。类级的粒度可以采用辅助类,也可以通过寻找共性,以泛化的方式提取共性特征。对于模块级,则主要需考虑模块的复用原则,合理解除模块之间的依赖关系。之所以出现很多糟糕混乱的遗留代码,主要原因还是在于职责的分配与分离做得不够好。职责的分配不准确,就可能导致代码结构不清晰,而职责的分离做得不好,就可能导致代码的重复。在经历了太多维护遗留代码的工作后,我往往发现这些遗留代码都没有做好模块的划分,而是率意为之,有时候甚至会出现一个庞大的项目,包含了数据访问、业务逻辑与界面表现等所有对象,这意味着它没有合理的分层架构。我现在在设计和开发时,非常注意对模块的划分,尽量避免模块之间的双向依赖与循环依赖。同时,还要站着发布的角度来思考模块的划分与定义。在编码时,我会思考类的归属,要让其放到合适的位置,既表达出它的职责,又不会产生纠缠不清的依赖。我们还可以通过用例识别重用。在用例图中,存在包含、扩展与泛化关系的用例,都可能是潜在的重用点。

软件复用的几种方式

软件复用的好处有很多 一、提高工作效率 这条自不必说,比如在项目A中你写一个Ajax模块 ,A完工后启动了项目B,在B中就可以直接复用项目A的模块了。一个可复用的软件可以为将来节省费用,被服用的频率越高,组件的初始开发成本就越低。 二、提高软件质量 可复用的软件总比不能复用的有更多的质量保障。因为可复用的软件在不断的复用过程中把一些bug,缺陷都很快的排除了。因此可复用的软件一定是利于系统的可维护性的。 按抽象程度的高低,可以划分为如下的复用级别: 代码的剪贴复制 利用编辑器(IDE)可以很方便的做到减少抄写代码的人力成本。这可能是入门级程序员习惯的,自发的复用软件的形式。把一个写好的工具函数自发的拷贝到另一个功能或项目中。这种方式有着明显的缺点就是他造成很多重复冗余的代码。尤其在Web前端开发中,JavaScript资源的量大小影响着客户端下载速度。好一点的复用方式可以采用继承。算法的复用各种算法比如排序都已经得到了大量的研究。几乎不需要你重新去写自己的算法,各种语言通常也实现了这些常用算法。因此你只需要直接复用。 数据结构的复用 与算法一样,类似数组、队列、栈、列表等得到了透彻的研究,只需要直接复用。 以上是传统的复用种类,下面是更高级的复用方式设计的复用设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。 这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。分析的复用这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。复用的途径也有三种,即从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。

评论