我的帮人改代码经历中 ,发现外包项目大概有如下一些典型特征:没有设计模式,不用框架, web 目录下和配置文件下永远有无数的复件,代码永远有不明不白的注释或者干脆毫无注释,缩进没有任何规范,变量名几乎都是拼音和英文混合,或者 m123 , a789 , aa , bb , test1 这样的标识名,或者因为代码改了很多次,很多类文件的命名已经和类实际的功能不相符了,比如说本来最开始就一个 mysql.class.php ,结果因为功能一改再改,这个类文件名不仅仅是 sql 操作了,还多了好多其他的操作,但是因为没有用框架,最开始已经有很多地方 include 了这个 mysql.class.php ,因此只好直接在这个类文件里面加其他功能了。 综上所述:外包公司大部分都是生产垃圾代码的地方,也是一个培养只追求功能凑合能用,不追求代码质量,不理会代码安全(我看的这个项目,居然是直接拼接 sql 字符串,不过还好他集成的环境是 php5.2 , GPC 魔术引号是默认开启状态所以很多注入方法用不了,而且网上流传的 ['or 1=1 #] 这个万能密码我用不了不知道是怎么回事,不过据说在字符串为 GBK 宽字节编码的情况下仍然有绕过方案),也不会考虑以后要怎么改,功能要怎么加的程序员出来的地方。 解决方案: IT 培训机构和高等教育学府中的相关专业注重代码质量,关注代码规范性,教科书以身作则不要图省事用 abc 这种变量名(没错我说的就是谭浩强老爷子系列的书),加强设计模式的教育,给从事相关行业的产品经理和项目经理科普一下设计模式的必要性(对客户来说,重构或者规范化编码不会给他们带来好处,但是会增加程序员的人力成本,所以客户不愿意为重构买单,但是相反对程序员就不一样了,因此加强科普不是我在开玩笑,这是真的需要)
|  |      1Borden      2016-10-30 00:04:49 +08:00  129 就楼主你这个排版,你好意思谈缩进规范代码质量? | 
|  |      3Lonely      2016-10-30 00:11:12 +08:00 一楼打脸啪啪啪😂 | 
|  |      5jydeng      2016-10-30 00:17:00 +08:00 哈哈哈,一楼不要这么直接。 | 
|  |      6murmur      2016-10-30 00:20:01 +08:00 @Borden 真的 别笑 是个人都知道可视化编辑器多好用 也就 V2EX 这种 geek 论坛笑得出来 或者像其他的网站 怕你搞点什么 直接把\n 全去掉 也省着转了 毕竟\n 和 br 互转也挺蛋疼是吧 | 
|  |      7orvice      2016-10-30 00:20:09 +08:00  2 外包代码质量好了跟咸鱼有什么区别。 | 
|  |      8goodryb      2016-10-30 00:20:30 +08:00 都外包了,你还要怎样 | 
|      10JoeyChan      2016-10-30 00:25:51 +08:00 我们公司一个几十万的 php 项目外包,拿到源码开始部署直接傻眼,整个网站一共有十几二十个 mysql 配置文件,分别放置在各个目录,有时候甚至一个目录下有多个 mysql 配置文件。 | 
|  |      11Kilerd      2016-10-30 00:26:55 +08:00  1 | 
|  |      12tracyone      2016-10-30 00:29:21 +08:00 一楼打脸太快了, 23333... | 
|      13wun      2016-10-30 00:29:39 +08:00 楼主在嘲讽啊,你们啊    | 
|      14xiaoshengyige      2016-10-30 00:44:02 +08:00 一楼。。 | 
|      18skyeycirno      2016-10-30 02:44:01 +08:00 via iPhone 一楼就说大实话,太实在了 | 
|  |      19guodont      2016-10-30 08:13:02 +08:00 via Android 就是表达观点描述事情而已,又不是写教程,换行反而读不完整。 支持一下楼主的呼吁。 | 
|      20laoyur      2016-10-30 10:13:11 +08:00  1 一楼的回复加上楼主头像的表情,简直绝配 | 
|  |      21wizardforcel      2016-10-30 10:26:50 +08:00 via Android @HuangLibo markdown 没有统一的标准。 | 
|      22kslr      2016-10-30 11:12:22 +08:00 你说的确实是问题,但我认为这是市场导致的必然,价格压得那么低,也不看看请的什么人? | 
|  |      23yumijie      2016-10-30 11:23:40 +08:00 哈哈 ,竞争压力.时间压力.还有价格压力 | 
|  |      24aristotll      2016-10-30 11:27:44 +08:00 php 更容易写坏代码(不是黑 ... Java 系至少不可能出现这么蛋疼的事情 include | 
|  |      25zpf124      2016-10-30 11:28:13 +08:00 还是一楼屌 233333 | 
|      26yangff      2016-10-30 11:28:28 +08:00 via Android 有规范要求一开始就写好不就行了。。 | 
|  |      27maddot      2016-10-30 11:33:28 +08:00 代码写得越烂越能绑住客户啊 代码写得好,好读,随时找便宜的人代替了你,那感觉真是五味杂陈.... | 
|      28tairan2006      2016-10-30 11:33:49 +08:00 一楼说得好 | 
|      29honam      2016-10-30 11:46:25 +08:00  1 所以在外包的项目上做二次开发我是非常反感的,特么炒鸡耗人力 | 
|  |      30BURNER      2016-10-30 11:47:32 +08:00 or 1=1 早就不能用了 | 
|  |      31Chaos11      2016-10-30 11:48:52 +08:00 via Android 一楼输出好高 233 | 
|  |      32SourceMan      2016-10-30 11:55:18 +08:00 via iPhone 一楼 27 个感谢,结帖 | 
|      34radiolover      2016-10-30 12:08:44 +08:00 抵制楼主,人肉楼主。 看到楼主这里唾沫横飞就 TMD 不爽,说的没一句是对的,估计也是现实中的屌丝 | 
|  |      35loy6491      2016-10-30 12:31:39 +08:00 楼主的内心几乎是崩溃的 | 
|  |      36invalidtoken      2016-10-30 12:36:46 +08:00 via iPhone 这个也要看人的吧...虽然也在外包公司工作过,但是该有的注释和文档我都是会写的,版本控制也是 Git 而不是 复件-复件(2) 这样... 于是...自己的代码上线之后被别人改过根本不敢拿出来放到工作经历里面,因为不少直接把 script 加到 DOCTYPE 前面去了 | 
|  |      38jaycee110905      2016-10-30 13:07:09 +08:00 @Borden 哈哈,说的有道理 | 
|  |      39mazyi PRO 一楼最赞! | 
|  |      40shiweifu      2016-10-30 13:29:20 +08:00 得考虑时间和成本。 你把代码想象成商品更好理解, 2000 块钱和 1w 块钱买到的东西有可能「看起来差不多」其实真不一样 | 
|  |      41aias      2016-10-30 13:30:36 +08:00 1 楼太坏了。话说国内外包的确容易产出垃圾,那种所谓“对企业提供的 IT 技术支持”的公司程序员职业素养普遍不高。 | 
|      42InfinitySam      2016-10-30 13:43:55 +08:00 一楼输出突破天际,我感觉是为了绑定客户吧,毕竟都搞这么清楚了,客户自己请个人继续开发成本低吧,写得只有自己看得懂,客户就得找你了 | 
|  |      43wizardforcel      2016-10-30 13:51:20 +08:00 via Android php 的设计中,默认不安全的地方简直太多了。 原生支持 web 开发的语言多得是,但是没有一个是把模板代码和路由掺和到一起还自我感觉良好的。 | 
|  |      44wizardforcel      2016-10-30 13:53:40 +08:00 via Android 另外 or 的那个绕过只能在 sql 中同时查询 un 和 pw 的情况下使用。一部分代码是先拿 un 获得用户,在代码中比较 pw ,这个就得用 union 来绕。 | 
|  |      45ivvei      2016-10-30 14:06:28 +08:00 你都注入不了,那你还管什么 SQL 是不是拼接。 | 
|  |      46realpg PRO 表示不服 你找垃圾外包团队,不能说外包行业就是这样 | 
|  |      47pathbox      2016-10-30 14:20:07 +08:00 楼主说的是 PHP 外包项目吧?(我没有黑 PHP ) | 
|      48xcc7624      2016-10-30 14:33:08 +08:00 via Android 外包项目的合同款收入有限 | 
|  |      49AltairT      2016-10-30 14:36:47 +08:00 喜欢随便写,然后自动格式化。。。 | 
|  |      50chilaoqi      2016-10-30 14:55:00 +08:00 为一楼点赞。。。。 | 
|  |      51Zzzzzzzzz      2016-10-30 14:55:24 +08:00  1 价格决定服务质量, 中低价位的外包团队你代码习惯再好去干两星期也会这样的。 一方面是时间紧, 基本五六千的单子一两天就要出来了, 不然工资都不够, 所以基本都是基于原先整理好的一堆模块二次开发. 另一方面是选择中低价位外包的公司或者工厂在业务上很难清晰的表达,甚至有些为了压价还会特意隐瞒一部分需求在交项目前再提, 所以很多东西基本就是越改乱改. 至于 PHP 版本那是没办法了, 上次帮个朋友改点东西, 发现他们一年四五千用的几百兆的 35 的虚拟主机还是 PHP5.2 的. | 
|  |      52mauve PRO 对不起,要加钱 | 
|      54TaMud      2016-10-30 17:15:27 +08:00  1 一份价钱一份货 你花半毛钱,还想买一块钱的货?? | 
|      55lichy      2016-10-30 17:24:32 +08:00 别的大学不清楚,反正我们学校根本没提过代码规范 同学的代码根本不忍直视 | 
|  |      56ChopMoun      2016-10-30 17:37:22 +08:00 看到一楼我笑了 哈哈。。。 | 
|      57onlyhot      2016-10-30 17:54:52 +08:00 via iPhone 一分钱一分货 | 
|      58onlyhot      2016-10-30 17:55:43 +08:00 via iPhone 绝大部分客户根本不在乎代码 只要功能和外观 | 
|  |      60hasbug      2016-10-30 20:04:40 +08:00 最近做单被自己人坑了,一点钱一堆东西,最后各种说不对,才发设计稿给我。问为何之前不发,说,很多页面 如果发了我看后就不做了。 妈了个蛋,我看了就不是这个价了,坑人。 | 
|  |      61twoyuan      2016-10-30 20:43:13 +08:00 接手到这种项目,首先做好心理准备做几天无脑的整理代码工作,就是删除无用的代码,消除 Warning ,然后稍微用一些脑子改改变量名,正好熟悉项目,还能顺便刷刷 KPI (手动滑稽) | 
|  |      62nozama      2016-10-30 21:11:53 +08:00  1 一同事,估计入门教程看多了,类名变量名都喜欢叫 MyXXX , myYYY | 
|  |      63sammo      2016-10-30 21:14:26 +08:00 V2EX, Never Change. | 
|  |      64billwang      2016-10-30 23:18:22 +08:00 一楼向来都是最直接的,顶一个。 楼主估计是码完字没有回顾一下,不然自己都会觉得眼花。 | 
|  |      65edsgerlin      2016-10-31 01:49:04 +08:00 via Android  1 要知道微软, IBM 这个级别的公司也是做外包的。一分钱一分货,请不起好公司好团队就不要地图炮整个行业。 | 
|      67yoke123      2016-10-31 09:11:43 +08:00 大哥 还是学习下 markdown 吧 跟上大家的步伐  至于外包让人诟病 毕竟写的再烂 也有人买单 原因大家都懂 | 
|      68891599396      2016-10-31 09:30:22 +08:00 我觉得我们公司做得就挺好的啊。什么东西都有规范。 | 
|      69itqls      2016-10-31 09:58:04 +08:00 改一个外包项目的半成品已经改了十多天了. | 
|      70manihome      2016-10-31 10:05:24 +08:00 换 python 试试 不缩进等死 | 
|  |      71murmur      2016-10-31 11:35:23 +08:00   我来终结这个贴好了 估计很多外包项目都比这个好 | 
|  |      73fortunezhang      2016-11-01 08:40:57 +08:00 我也做外包,但是不会有楼主那样的问题。虽然以前是做敏捷开发,但是木有测试, 23333.。。 有一个问题就是:造成这样情况的可能性我觉得有这么几种: 1.客户总是在改变需求 2.产品经理没有理解好客户的需求 3.编码着的代码洁癖不高。 4.公司人员更换频繁。 总的来说:这个锅,不单单是程序员背,客户和公司都存在一定的问题。 我想知道我的排版有木有问题。 | 
|      74junzibuqi124      2016-11-01 10:35:34 +08:00 @Borden 哈哈哈 | 
|  |      75Borden      2016-11-01 10:44:45 +08:00 @fortunezhang 你的排版挺好哒 XD | 
|  |      76alexnone      2016-11-01 13:03:01 +08:00 从来没换过行 来试试看 ... | 
|      77mingyun      2016-11-01 21:07:31 +08:00 一楼这样真的好吗,哈哈 |