阅读烂代码的能力也应该经常练习和提高,因为不是所有人都热爱手里的这份工作。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
darasion
V2EX    程序员

阅读烂代码的能力也应该经常练习和提高,因为不是所有人都热爱手里的这份工作。

  •  
  •   darasion 2013-03-23 00:01:33 +08:00 5772 次点击
    这是一个创建于 4591 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,
    大家的看法呢?
    第 1 条附言    2013-03-23 22:28:51 +08:00
    现实很不完美.

    就像 @JesseZ 回复中提到,每次看到烂代码的时候,总想重写。可自己最后总是扮演擦屁股角色,吃力不讨好。

    也像 @mengzhuo 说的,确切的说这些人就是不敬业,其实他们常常以为自己很喜欢这样工作,觉得自己做的事情很有价值。他们觉得代码写的工整是傻逼。觉得表面上实现了就是牛逼。

    不管你怎么重构,不管你怎么骂娘。
    习惯写烂代码的永远不会通过别人的提醒认识到自己的问题。

    不管写的怎么烂,永远会有人替他们改好。这才是问题所在。

    所以我想是不是应该故意写的比他们更烂更好一些?
    28 条回复    1970-01-01 08:00:00 +08:00
    qiukun
        1
    qiukun  
       2013-03-23 12:26:30 +08:00
    刚帮妹子改了一上午代码
    yuelang85
        2
    yuelang85  
       2013-03-23 12:41:35 +08:00
    我真的没法理解。不热爱,为什么还要做。。。。
    alexrezit
        3
    alexrezit  
       2013-03-23 12:50:07 +08:00
    @qiukun
    真可怜.
    JesseZ
        4
    JesseZ  
       2013-03-23 13:24:46 +08:00
    阅读烂代码的时候,常常忍不住冲动,把它给重写了……
    shiweifu
        5
    shiweifu  
       2013-03-23 13:31:05 +08:00
    @yuelang85
    「就业」
    yuelang85
        6
    yuelang85  
       2013-03-23 15:09:36 +08:00
    @shiweifu 这俩字我也明白。但是我不明白的是:
    yuelang85
        7
    yuelang85  
       2013-03-23 15:13:01 +08:00
    @shiweifu

    这个快捷键怎么关掉啊。。。。

    一个工作,一天最低也要8小时,如果是程序员,10小时以上都是很正常的。一天才24小时,把一天中最黄金的时间(占了一天的一半),贡献给一个自己不热爱的事情,这不就是浪费生命吗?不管挣多少钱,给家里带来多大财富,这都是补偿补回来的啊。。。。
    alexrezit
        8
    alexrezit  
       2013-03-23 15:58:34 +08:00 via iPad
    @yuelang85
    真相是: 因为他们别的专业考不上被调剂了, 自己又不好好学习.
    yuelang85
        9
    yuelang85  
       2013-03-23 17:58:31 +08:00
    @alexrezit 计算机不好考吧。。。。

    学业!=就业,不喜欢,找工作的时候应该转行啊。如果不喜欢自己做的事情,应该去寻找真正自己想要的。
    mengzhuo
        10
    mengzhuo  
       2013-03-23 21:28:51 +08:00   1
    纯粹是借口!!
    不是热爱程序员这工作,而是根本就不敬业!!

    代码命名用form1,huopin,lianjie,aa也就算了,他喵的错误日志里竟然写着“zhe li chu cuo le”!!!什么玩意啊!!!

    只顾着复制粘贴!!
    Python模块变量和局部变量不清也就算了!!每个函数里粘帖那些常量!!看得眼都花了有没有!!!
    好吧,没能力自己写,复制粘贴那也就算了!!!
    他喵的上班有闲时间不看看优秀的怎么写,上网看搞笑视频,稍微说下他代码不太好,就跳起来骂人!!说你怎么自大,blabla。我表示自己代码也烂,但至少我肯承认,肯改一改好不好!!!

    出了问题就跑来问,我都晕了,日志里明明白白写的错误信息,竟然跟我说看不懂!!!
    更不用说看一手文档了……这个年代的程序员英语少说要6级吧,竟然跟我说4级至今没过!!4级是高中水平啊亲!!个大学生连高中生都不如,真是无言以对了!!

    真心搞不懂这种人是怎么混进我们这个行列的。
    comcuter
        11
    comcuter  
       2013-03-23 23:31:31 +08:00
    因为一个项目大了后,各种人掺合进来,各种代码风格进来,各种奇怪的Bug也就进来了,所以必须时刻提高警惕,一边给别人擦屁股,一边提防着被fu*k.
    ufo22940268
        12
    ufo22940268  
       2013-03-23 23:54:29 +08:00 via iPhone
    不认可,所有烂代码都应该被纠正,只是时间问题。我是一个努力写出好代码的程序员,写出来的客观上好不好就是另一回事了
    wzxjohn
        13
    wzxjohn  
       2013-03-23 23:56:28 +08:00
    @qiukun =。=||||||同道中人啊。。。
    c742435
        14
    c742435  
       2013-03-24 08:23:41 +08:00
    @mengzhuo 表示自己也没过四级不过还是比公司里的大部分程序员水平好些。
    现在转设计方面的工作了……有的时候也指导那些coder如何写程序,这时候会觉得很有面子,又觉得挺神兽的。
    所以是我们公司程序员水平太烂么。
    alexrezit
        15
    alexrezit  
       2013-03-24 08:28:42 +08:00 via iPhone
    @mengzhuo
    哈哈哈以前还以为只有 iOS 开发才有那么多不靠谱程序员.
    mengzhuo
        16
    mengzhuo  
       2013-03-24 13:17:59 +08:00
    @alexrezit
    现实也是,
    我司确实有个连字符串拼接构成SQL IN语句都不会的iOS程序员。
    招他进来的人不知道脑子是什么做的。

    我能管的,我都要求改了,不符合规范的、逻辑混乱的、没有UT的一概重写,虽然进度慢,但总比事后擦屁股强。

    不过,比起不靠谱的队友,我觉得不靠谱的客户和老板才是最可怕的……因为队友,你可以让他成长,而老板和客户……好吧,偏题了
    pepsin
        17
    pepsin  
       2013-03-24 15:59:47 +08:00
    有些人本身思维就不清楚,写出来逻辑就乱七八糟的。

    一般这种人英文水平还不行,就更别指望他们变量名方法名起好起准了。

    入职考算法考偏门语法点不如直接考怎么起方法名,代码怎么写美观这类。
    alexrezit
        18
    alexrezit  
       2013-03-24 18:36:42 +08:00
    @mengzhuo
    那个... SQLite 执行内容直接拼接字符串会被注入的吧?
    darasion
        19
    darasion  
    OP
       2013-03-24 23:32:23 +08:00
    @pepsin 的思路不错哦。。貌似可以在招人的时候实际用一下。
    mengzhuo
        20
    mengzhuo  
       2013-03-25 09:37:17 +08:00
    @alexrezit escape不就好了吗,其实那些高级库还不是各种拼起SQL语句,不要被吓到了
    alexrezit
        21
    alexrezit  
       2013-03-25 09:42:53 +08:00
    @mengzhuo
    iOS 上的 SQLite 是基于 C 的, 应该用 bind 的, 只有 table name 这样不能 bind 的才要自己过滤字符串:

    NSString *update = [NSString stringWithFormat:@"INSERT OR REPLACE INTO %@ (HASH, URL) VALUES (?, ?);", kRWebImageDatabaseTableName.SQLSafeString];
    sqlite3_stmt *stmt;
    if (sqlite3_prepare_v2(database, update.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
    sqlite3_bind_text(stmt, 1, hash.UTF8String, -1, NULL);
    sqlite3_bind_text(stmt, 2, url.absoluteString.UTF8String, -1, NULL);
    }
    if (sqlite3_step(stmt) != SQLITE_DONE) {
    NSAssert(0, @"Error updating image.");
    }
    sqlite3_finalize(stmt);
    ljbha007
        22
    ljbha007  
       2013-03-25 09:56:24 +08:00
    写烂代码除了不敬业以外
    还有一种可能就是 热爱并敬业 但是就是还在学习或者学习能力较弱
    kneep
        23
    kneep  
       2013-03-26 08:37:16 +08:00
    这个问题我很有感触,原因有很多:
    1. 确实不够敬业,但我认为这类人比较少。
    2. 很多程序员都是笨蛋,又懒又爱问,不是编程的料。
    3. 没有强烈的,以正确的方法做事的欲望,审美能力差,分不清啥是elegant啥是ugly,一件事情完成就算数了,从来不想如何以最正确的方法完成。其实这也说明了他不是编程的料。

    更糟糕的是,这些人通常很勤奋,勤奋而平庸,所以你指出他们错误的时候,你通常站在舆论的对立面,孤立无援,别人觉得你是个偏执狂,强迫症患者。其实你只是想以正确的方法做事而已。
    kneep
        24
    kneep  
       2013-03-26 08:40:23 +08:00
    @pepsin 没错。这类人一般英语也很差,取的变量名根本看不懂。
    weiqiyiji
        25
    weiqiyiji  
       2013-03-26 19:59:20 +08:00
    关键不是你的同事,而是上面的人怎么看这个问题,如果他们一边要求说代码质量要高,但是同时又像催命一样的要需求。你对代码质量的改进,会先问你有什么好处,如果以前可以work,就不给你时间修改了,这还肿么破!
    wy315700
        26
    wy315700  
       2013-03-26 21:04:33 +08:00   1
    @weiqiyiji 这个在大部分公司都是很现实的场景 只要代码能跑 就不去管
    alexrezit
        27
    alexrezit  
       2013-03-27 08:59:46 +08:00
    @weiqiyiji
    有什么好处? 降低 margin cost. "上面的人" 这都不懂?
    wy315700
        28
    wy315700  
       2013-03-27 09:13:13 +08:00
    其实看到LZ的话题 我想的是
    阅读错题的能力也应该提高 ,因为并不是所有老师都会出题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2661 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 12:19 PVG 20:19 LAX 05:19 JFK 08:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86