重复造轮子 or not

现在网络资源这么多,在做一个东西之前,不免会遇到这样的选择:

  • 完全原创----从原理到实现
  • 学习原理,自己实现
  • copy一些开源的代码

思考下决定原则,其中的依据,从原创到copy,他们的意义是:

  • 解决问题,尤其是用很棒的方法和优雅高效编程解决问题是最让人兴奋的事情,这是程序员的原动力,没有这些,一切都是索然无味的。
  • 在独立思考和实现过程中,技能知识和理解都在以“学习”所不能代替的方式增长(实际是要比学习好的多的方式增长)。
  • 不管原创还是直接copy,都是解决了问题,让项目变得更强大。

而各自的特点:

  • 原创原理,大多数是researcher的事情,这个过程过于缓慢,个人觉得在有限budget下是不应该做的
  • 完善原理,即便gdc这样非常实战性的会议的paper仍旧很难完全符合项目需求,这就需要深度理解paper要表达的东西,然后根据实际情况去延伸,裁减。这个是较为senior的programmer应该做的事情,这个过程具体情况具体分析,一般也是比较时间长。
  • 直接copy代码,很快,但是代码常常是质量不够高,方式和项目不统一,增加项目的复杂度。
  • 完善代码,和完善原理比较像,最棒的方式还是把代码的道理抽象出来,把代码重新消化成最符合项目的东西。

ps:关于代码copy的情况,经常会遇到疑问:直接拿来用不就行了么,为何要去重复值造轮子?

game engine的质量要求需要高于普通工业标准,直接拿来的东西如果不符合质量要求(质量不够,不够轻量级,不够效率,契合的不够好。。。)都要进行改造。轮子不需要重新发明,但是需要的话,应该毫不犹豫的重新制造。

所以可以copy来的东西,常常是和其他部分契合的不够好。

实际中的例子就是哪来的库和源代码,有时候是多了太多的保护,考虑了太多的多线程情况,考虑多平台,多操作系统,而我们的情况更加简单,不需要把很多资源和内存花在上面,需要精简代码来达到更好的效率和内存占用。

 

 

那么最后是依据这些基本定理得出在各自空间下做各自的事情:能做多少是多少了

  • 解决问题
  • 保持质量
  • 完美解决----原理的思考和创造,高质量的实现,文档还有和社区的分享交流

纯粹程序员的价值观应该都是在完美解决这一级,自己做个人项目的话都应该这样,做项目的话,作为team的一员,会为了team利益不得已要作各种妥协。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值