2007-10-07

所谓的重新发明轮子

Views: 17946 | 1 Comment

"不要重新发明轮子"是从国外IT界流传进来的一句话, 目的是告诫开发者尽量使用现有的技术和组件, 不要随意重新发明这些技术和组件. 但是, 国内的IT论坛上似乎过度使用了这种思想. 常常在论坛上看到一些人在别人通过重新发明轮子来研究某项技术时, 叫嚷着"不要发明轮子", 弄得仿佛他自己就是国外的专家的闭门弟子一样. 所以我从来没有使用过"不要重新发明轮子"这句话.

最近, 我在看国内使用者较多的某个PHP程序时, 发现作者似乎在故意卖弄地"重新发明轮子", 所以我不得不使用"不要重新发明轮子"来指责他们.

问题出现了某个函数的参数传递上面. 因为该函数接受近10个参数, 所以作者把只接受一个字符串作为参数, 然后自己在函数中解析这些字符串. 正如注释中写的, "本方法对传递进来的参数进行解析".

这太愚蠢了! 无论你使用PHP解析字符串的功夫再怎么高明, 难道你比语言的编译器解析得更高效吗? 而且, 那个作者的解析明显就很拙劣. 他的解析是这样的: 输入形式为类似"a:1;b:1,2;c:1-2"之类的, 大概表示a=1, b=[1,2], c='1-2'. 很明显的一个缺点就是不支持空白字符. 事实上, 如果作者确实需要参数解析, 完全可以使用URL编码, 然后使用PHP内置的URL解码功能. 或者最合适的方法是将关联数组作为参数, 这样调用:

f(array('a'=>1, 'b'=>array(1,2), 'c'=>'1-2'));

不管怎么说, 该作者"重新发明轮子"发明得太笨拙了! 可能"不要重新发明轮子"的本意是, 如果你无法发明功能和原有的一样, 但是实现简单或者产品的性质更好, 那么就不要这么做. 并不是说不要重新发明功能一样的东西.

Related posts:

  1. 如何让 PHP json_encode 函数不转义中文?
  2. 史上最强大的PHP Web面试题(会做就能进百度)
  3. 用PHP去除重复图片文件
  4. PHP中使用foreach和引用导致程序BUG
  5. 开发搜索引擎 – PHP中文分词
Posted by ideawu at 2007-10-07 09:36:02

One Response to "所谓的重新发明轮子"

Leave a Comment