由于之前在外企的工作关系,接触过老美、印度和俄罗斯的三国软件工程师以及他们写的代码。
说下他们的区别。
老美的代码看起来是一件艺术品,他们会在代码文件头、函数头里写上很漂亮工整的注释,然后项目有一个庞大复杂的架构,各种设计模式、框架结合使用,好像这些东西用得越多越流逼一样。喜欢将简单问题复杂化,一个能用全局变量实现,且没多线程不用上锁的东西却偏偏要用一个singleton模式来做。能用简单的callback函数实现的活但偏要弄一套Observer模式。把代码写得异常深奥。什么模板的偏特化、虚继承那边边角疙瘩的技术都搬弄出来,怕你一下看懂代码让他感到很没面子似的。
解一个bug需要7个工作日,君若问为什么要7天?
待我细细道来:问题重现要1天,debug要1天,workout solution要1天,测试1天,review 1天,review后再submit要1天,submit后经理approve又要1天...感觉那边的时间不是钱啊,不带这么玩的啊。
印度人写的代码就像一条工业流水线出来的产品一样,每个都很规矩,但也很死板。一个环形消息缓存的东西用竟然数组来实现,然后在下标计算时倒来倒去。尼玛用个链表来实现会死是不。
俄毛子的代码那简直就是天书,一股浓烈的geek气味伴随着灌满伏特加后眩晕的混沌感扑面而来。变量名写长一点清晰一点会死吗?plmm不是漂亮美眉,看了半天代码连猜带懵才知道是Platform Link Maintainess Manager。然后里面各种各样tricky的代码与潜规则,get_user_policy(UserId)函数跟根据用户id获取他的安全策略是吧,慢着,如果你传入的id是0,我返回的是系统所有用户的策略;你传入的是-1的话就是重新加载策略文件...别问为什么,我是故意这样做的。我勒个去...
中国人写的代码还是比较实用的,但如果不加控制就会犯低级错误。你见过为了查找一个用户id,先用select *从数据库把所有内容都捞出来,然后用个大大的for循环来查找的代码吗?我看了当时就泪奔无语了。
还有一次一幅图片控件在多次操作后就死活显示不出来,郁闷地查了一天一夜看到某处代码pic.alpha=0.我问为什么,他说因为我想隐藏图片啊。我当时立马有一脚踹死他的心都有,是不是大学图像处理学傻了,不知道有visible=true/false这个方法啊,要给我搞什么alpha通道,这东西真是谁用谁才知道啊。