V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changwei
V2EX  ›  程序员

外包项目里面十分普遍的一些特征

  •  
  •   changwei ·
    cw1997 · 2016-10-30 00:00:30 +08:00 · 11230 次点击
    这是一个创建于 2945 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的帮人改代码经历中 ,发现外包项目大概有如下一些典型特征:没有设计模式,不用框架, web 目录下和配置文件下永远有无数的复件,代码永远有不明不白的注释或者干脆毫无注释,缩进没有任何规范,变量名几乎都是拼音和英文混合,或者 m123 , a789 , aa , bb , test1 这样的标识名,或者因为代码改了很多次,很多类文件的命名已经和类实际的功能不相符了,比如说本来最开始就一个 mysql.class.php ,结果因为功能一改再改,这个类文件名不仅仅是 sql 操作了,还多了好多其他的操作,但是因为没有用框架,最开始已经有很多地方 include 了这个 mysql.class.php ,因此只好直接在这个类文件里面加其他功能了。 综上所述:外包公司大部分都是生产垃圾代码的地方,也是一个培养只追求功能凑合能用,不追求代码质量,不理会代码安全(我看的这个项目,居然是直接拼接 sql 字符串,不过还好他集成的环境是 php5.2 , GPC 魔术引号是默认开启状态所以很多注入方法用不了,而且网上流传的 ['or 1=1 #] 这个万能密码我用不了不知道是怎么回事,不过据说在字符串为 GBK 宽字节编码的情况下仍然有绕过方案),也不会考虑以后要怎么改,功能要怎么加的程序员出来的地方。 解决方案: IT 培训机构和高等教育学府中的相关专业注重代码质量,关注代码规范性,教科书以身作则不要图省事用 abc 这种变量名(没错我说的就是谭浩强老爷子系列的书),加强设计模式的教育,给从事相关行业的产品经理和项目经理科普一下设计模式的必要性(对客户来说,重构或者规范化编码不会给他们带来好处,但是会增加程序员的人力成本,所以客户不愿意为重构买单,但是相反对程序员就不一样了,因此加强科普不是我在开玩笑,这是真的需要)

    77 条回复    2016-11-01 21:07:31 +08:00
    Borden
        1
    Borden  
       2016-10-30 00:04:49 +08:00   ❤️ 129
    就楼主你这个排版,你好意思谈缩进规范代码质量?
    waruqi
        2
    waruqi  
       2016-10-30 00:09:41 +08:00 via iPhone   ❤️ 1
    @Borden 哈哈
    Lonely
        3
    Lonely  
       2016-10-30 00:11:12 +08:00
    一楼打脸啪啪啪😂
    wtbhk
        4
    wtbhk  
       2016-10-30 00:16:15 +08:00
    @Borden 没用过 Markdown 的人还真不知道换行要两次回车
    jydeng
        5
    jydeng  
       2016-10-30 00:17:00 +08:00
    哈哈哈,一楼不要这么直接。
    murmur
        6
    murmur  
       2016-10-30 00:20:01 +08:00
    @Borden 真的 别笑 是个人都知道可视化编辑器多好用 也就 V2EX 这种 geek 论坛笑得出来
    或者像其他的网站 怕你搞点什么 直接把\n 全去掉 也省着转了 毕竟\n 和 br 互转也挺蛋疼是吧
    orvice
        7
    orvice  
       2016-10-30 00:20:09 +08:00   ❤️ 2
    外包代码质量好了跟咸鱼有什么区别。
    goodryb
        8
    goodryb  
       2016-10-30 00:20:30 +08:00
    都外包了,你还要怎样
    fuxkcsdn
        9
    fuxkcsdn  
       2016-10-30 00:22:39 +08:00
    @Borden 已结贴 😂
    JoeyChan
        10
    JoeyChan  
       2016-10-30 00:25:51 +08:00
    我们公司一个几十万的 php 项目外包,拿到源码开始部署直接傻眼,整个网站一共有十几二十个 mysql 配置文件,分别放置在各个目录,有时候甚至一个目录下有多个 mysql 配置文件。
    Kilerd
        11
    Kilerd  
       2016-10-30 00:26:55 +08:00   ❤️ 1
    @wtbhk 事实上,翻看了一下楼主之前的帖子,部分是有换行的,大部分是没有的。 那说明了楼主是会用的。

    那么说,楼主写完帖子发布后,看到了这个排版并没有重新编辑。(个人推测)
    tracyone
        12
    tracyone  
       2016-10-30 00:29:21 +08:00
    一楼打脸太快了, 23333...
    wun
        13
    wun  
       2016-10-30 00:29:39 +08:00
    楼主在嘲讽啊,你们啊
    xiaoshengyige
        14
    xiaoshengyige  
       2016-10-30 00:44:02 +08:00
    一楼。。
    isCyan
        15
    isCyan  
       2016-10-30 00:51:25 +08:00 via Android
    @wtbhk 这是英文格式,中文本来就不需要,应该搞一套中文 Markdown
    HuangLibo
        16
    HuangLibo  
       2016-10-30 01:25:53 +08:00
    @wtbhk 标准的换行是在行尾加两个空格。
    HuangLibo
        17
    HuangLibo  
       2016-10-30 01:26:28 +08:00
    @Borden 我就喜欢你这样的实在人
    skyeycirno
        18
    skyeycirno  
       2016-10-30 02:44:01 +08:00 via iPhone
    一楼就说大实话,太实在了
    guodont
        19
    guodont  
       2016-10-30 08:13:02 +08:00 via Android
    就是表达观点描述事情而已,又不是写教程,换行反而读不完整。 支持一下楼主的呼吁。
    laoyur
        20
    laoyur  
       2016-10-30 10:13:11 +08:00   ❤️ 1
    一楼的回复加上楼主头像的表情,简直绝配
    wizardforcel
        21
    wizardforcel  
       2016-10-30 10:26:50 +08:00 via Android
    @HuangLibo markdown 没有统一的标准。
    kslr
        22
    kslr  
       2016-10-30 11:12:22 +08:00
    你说的确实是问题,但我认为这是市场导致的必然,价格压得那么低,也不看看请的什么人?
    yumijie
        23
    yumijie  
       2016-10-30 11:23:40 +08:00
    哈哈
    ,竞争压力.时间压力.还有价格压力
    aristotll
        24
    aristotll  
       2016-10-30 11:27:44 +08:00
    php 更容易写坏代码(不是黑 ...

    Java 系至少不可能出现这么蛋疼的事情 include
    zpf124
        25
    zpf124  
       2016-10-30 11:28:13 +08:00
    还是一楼屌 233333
    yangff
        26
    yangff  
       2016-10-30 11:28:28 +08:00 via Android
    有规范要求一开始就写好不就行了。。
    maddot
        27
    maddot  
       2016-10-30 11:33:28 +08:00
    代码写得越烂越能绑住客户啊
    代码写得好,好读,随时找便宜的人代替了你,那感觉真是五味杂陈....
    tairan2006
        28
    tairan2006  
       2016-10-30 11:33:49 +08:00
    一楼说得好
    honam
        29
    honam  
       2016-10-30 11:46:25 +08:00   ❤️ 1
    所以在外包的项目上做二次开发我是非常反感的,特么炒鸡耗人力
    BURNER
        30
    BURNER  
       2016-10-30 11:47:32 +08:00
    or 1=1 早就不能用了
    Chaos11
        31
    Chaos11  
       2016-10-30 11:48:52 +08:00 via Android
    一楼输出好高 233
    SourceMan
        32
    SourceMan  
       2016-10-30 11:55:18 +08:00 via iPhone
    一楼 27 个感谢,结帖
    awthink
        33
    awthink  
       2016-10-30 12:07:41 +08:00
    @laoyur 还要加上一楼的头像
    radiolover
        34
    radiolover  
       2016-10-30 12:08:44 +08:00
    抵制楼主,人肉楼主。
    看到楼主这里唾沫横飞就 TMD 不爽,说的没一句是对的,估计也是现实中的屌丝
    loy6491
        35
    loy6491  
       2016-10-30 12:31:39 +08:00
    楼主的内心几乎是崩溃的
    invalidtoken
        36
    invalidtoken  
       2016-10-30 12:36:46 +08:00 via iPhone
    这个也要看人的吧...虽然也在外包公司工作过,但是该有的注释和文档我都是会写的,版本控制也是 Git 而不是 复件-复件(2) 这样...

    于是...自己的代码上线之后被别人改过根本不敢拿出来放到工作经历里面,因为不少直接把 script 加到 DOCTYPE 前面去了
    KangolHsu
        37
    KangolHsu  
       2016-10-30 12:55:58 +08:00 via Android
    @Borden 666666
    jaycee110905
        38
    jaycee110905  
       2016-10-30 13:07:09 +08:00
    @Borden 哈哈,说的有道理
    mazyi
        39
    mazyi  
       2016-10-30 13:22:34 +08:00
    一楼最赞!
    shiweifu
        40
    shiweifu  
       2016-10-30 13:29:20 +08:00
    得考虑时间和成本。

    你把代码想象成商品更好理解, 2000 块钱和 1w 块钱买到的东西有可能「看起来差不多」其实真不一样
    aias
        41
    aias  
       2016-10-30 13:30:36 +08:00
    1 楼太坏了。话说国内外包的确容易产出垃圾,那种所谓“对企业提供的 IT 技术支持”的公司程序员职业素养普遍不高。
    InfinitySam
        42
    InfinitySam  
       2016-10-30 13:43:55 +08:00
    一楼输出突破天际,我感觉是为了绑定客户吧,毕竟都搞这么清楚了,客户自己请个人继续开发成本低吧,写得只有自己看得懂,客户就得找你了
    wizardforcel
        43
    wizardforcel  
       2016-10-30 13:51:20 +08:00 via Android
    php 的设计中,默认不安全的地方简直太多了。

    原生支持 web 开发的语言多得是,但是没有一个是把模板代码和路由掺和到一起还自我感觉良好的。
    wizardforcel
        44
    wizardforcel  
       2016-10-30 13:53:40 +08:00 via Android
    另外 or 的那个绕过只能在 sql 中同时查询 un 和 pw 的情况下使用。一部分代码是先拿 un 获得用户,在代码中比较 pw ,这个就得用 union 来绕。
    ivvei
        45
    ivvei  
       2016-10-30 14:06:28 +08:00
    你都注入不了,那你还管什么 SQL 是不是拼接。
    realpg
        46
    realpg  
       2016-10-30 14:07:21 +08:00
    表示不服
    你找垃圾外包团队,不能说外包行业就是这样
    pathbox
        47
    pathbox  
       2016-10-30 14:20:07 +08:00
    楼主说的是 PHP 外包项目吧?(我没有黑 PHP )
    xcc7624
        48
    xcc7624  
       2016-10-30 14:33:08 +08:00 via Android
    外包项目的合同款收入有限
    AltairT
        49
    AltairT  
       2016-10-30 14:36:47 +08:00
    喜欢随便写,然后自动格式化。。。
    chilaoqi
        50
    chilaoqi  
       2016-10-30 14:55:00 +08:00
    为一楼点赞。。。。
    Zzzzzzzzz
        51
    Zzzzzzzzz  
       2016-10-30 14:55:24 +08:00   ❤️ 1
    价格决定服务质量, 中低价位的外包团队你代码习惯再好去干两星期也会这样的。

    一方面是时间紧, 基本五六千的单子一两天就要出来了, 不然工资都不够, 所以基本都是基于原先整理好的一堆模块二次开发.

    另一方面是选择中低价位外包的公司或者工厂在业务上很难清晰的表达,甚至有些为了压价还会特意隐瞒一部分需求在交项目前再提, 所以很多东西基本就是越改乱改.

    至于 PHP 版本那是没办法了, 上次帮个朋友改点东西, 发现他们一年四五千用的几百兆的 35 的虚拟主机还是 PHP5.2 的.
    mauve
        52
    mauve  
       2016-10-30 15:09:25 +08:00
    对不起,要加钱
    polun
        53
    polun  
       2016-10-30 17:08:01 +08:00
    @Borden 哈哈
    TaMud
        54
    TaMud  
       2016-10-30 17:15:27 +08:00   ❤️ 1
    一份价钱一份货
    你花半毛钱,还想买一块钱的货??
    lichy
        55
    lichy  
       2016-10-30 17:24:32 +08:00
    别的大学不清楚,反正我们学校根本没提过代码规范
    同学的代码根本不忍直视
    ChopMoun
        56
    ChopMoun  
       2016-10-30 17:37:22 +08:00
    看到一楼我笑了 哈哈。。。
    onlyhot
        57
    onlyhot  
       2016-10-30 17:54:52 +08:00 via iPhone
    一分钱一分货
    onlyhot
        58
    onlyhot  
       2016-10-30 17:55:43 +08:00 via iPhone
    绝大部分客户根本不在乎代码 只要功能和外观
    wxhwdmxl
        59
    wxhwdmxl  
       2016-10-30 19:57:52 +08:00
    @Borden 说的太直接了。。。
    hasbug
        60
    hasbug  
       2016-10-30 20:04:40 +08:00
    最近做单被自己人坑了,一点钱一堆东西,最后各种说不对,才发设计稿给我。问为何之前不发,说,很多页面 如果发了我看后就不做了。
    妈了个蛋,我看了就不是这个价了,坑人。
    twoyuan
        61
    twoyuan  
       2016-10-30 20:43:13 +08:00
    接手到这种项目,首先做好心理准备做几天无脑的整理代码工作,就是删除无用的代码,消除 Warning ,然后稍微用一些脑子改改变量名,正好熟悉项目,还能顺便刷刷 KPI (手动滑稽)
    nozama
        62
    nozama  
       2016-10-30 21:11:53 +08:00   ❤️ 1
    一同事,估计入门教程看多了,类名变量名都喜欢叫 MyXXX , myYYY
    sammo
        63
    sammo  
       2016-10-30 21:14:26 +08:00
    V2EX, Never Change.
    billwang
        64
    billwang  
       2016-10-30 23:18:22 +08:00
    一楼向来都是最直接的,顶一个。
    楼主估计是码完字没有回顾一下,不然自己都会觉得眼花。
    edsgerlin
        65
    edsgerlin  
       2016-10-31 01:49:04 +08:00 via Android   ❤️ 1
    要知道微软, IBM 这个级别的公司也是做外包的。一分钱一分货,请不起好公司好团队就不要地图炮整个行业。
    mathgl
        66
    mathgl  
       2016-10-31 02:18:39 +08:00
    @JoeyChan 能用就行。有些还不能用。
    yoke123
        67
    yoke123  
       2016-10-31 09:11:43 +08:00
    大哥 还是学习下 markdown 吧 跟上大家的步伐 至于外包让人诟病 毕竟写的再烂 也有人买单 原因大家都懂
    891599396
        68
    891599396  
       2016-10-31 09:30:22 +08:00
    我觉得我们公司做得就挺好的啊。什么东西都有规范。
    itqls
        69
    itqls  
       2016-10-31 09:58:04 +08:00
    改一个外包项目的半成品已经改了十多天了.
    manihome
        70
    manihome  
       2016-10-31 10:05:24 +08:00
    换 python 试试 不缩进等死
    murmur
        71
    murmur  
       2016-10-31 11:35:23 +08:00


    我来终结这个贴好了
    估计很多外包项目都比这个好
    domty
        72
    domty  
       2016-10-31 11:53:38 +08:00
    @Borden
    头像和回复杀伤力 MAX
    fortunezhang
        73
    fortunezhang  
       2016-11-01 08:40:57 +08:00
    我也做外包,但是不会有楼主那样的问题。虽然以前是做敏捷开发,但是木有测试, 23333.。。

    有一个问题就是:造成这样情况的可能性我觉得有这么几种:

    1.客户总是在改变需求

    2.产品经理没有理解好客户的需求

    3.编码着的代码洁癖不高。

    4.公司人员更换频繁。

    总的来说:这个锅,不单单是程序员背,客户和公司都存在一定的问题。

    我想知道我的排版有木有问题。
    junzibuqi124
        74
    junzibuqi124  
       2016-11-01 10:35:34 +08:00
    @Borden 哈哈哈
    Borden
        75
    Borden  
       2016-11-01 10:44:45 +08:00
    @fortunezhang 你的排版挺好哒 XD
    alexnone
        76
    alexnone  
       2016-11-01 13:03:01 +08:00
    从来没换过行
    来试试看
    ...
    mingyun
        77
    mingyun  
       2016-11-01 21:07:31 +08:00
    一楼这样真的好吗,哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3816 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:13 · PVG 13:13 · LAX 21:13 · JFK 00:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.