普通人写代码,就是需要满满的细节。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 A 生成的内容
tool2d
V2EX    程序员

普通人写代码,就是需要满满的细节。

  •  
  •   tool2d 2023-11-20 09:29:17 +08:00 7695 次点击
    这是一个创建于 694 天前的主题,其中的信息可能已经有所发展或是发生改变。
    然而,大师写软件就不需要,随手写一下,就感觉无法超越。他们对于算法的深度领悟能力远超普通人。

    以前我一直不太愿意加太多细节,写一段新代码容易,维护一段老代码可就难多了。

    但是嘛,不加细节,程序就会显得粗燥,缺乏必要的打磨精炼,也很难得到用户的赏识。

    问题又来了,没有一个好的框架前提下,使劲的堆代码量,一不小心又容易写成屎山,真难。
    27 条回复    2023-11-21 17:06:28 +08:00
    SomeBodsy
        1
    SomeBodsy  
       2023-11-20 09:33:21 +08:00
    能跑就行了
    zhazi
        2
    zhazi  
       2023-11-20 09:35:57 +08:00   2
    你说的细节是什么?
    HojiOShi
        3
    HojiOShi  
       2023-11-20 09:43:29 +08:00
    你说的细节是注释的话,那当然得写。写成屎山是水平问题和加不加注释没关系,当然加了注释的写成屎山以后拆起来更方便点。
    cz5424
        4
    cz5424  
       2023-11-20 09:44:56 +08:00 via iPhone
    我和代码,一个能跑就行
    300
        5
    300  
       2023-11-20 09:48:17 +08:00   1
    @HojiOShi 遇到屎山挪走了一块,注释没删,落在了下面的山上,百思不得其解,翻 commit 才明白一开始是两个方法长得像,但是内容不同
    tool2d
        6
    tool2d  
    OP
       2023-11-20 09:49:06 +08:00
    @HojiOShi 有些框架定位就是小而美,加了一大堆代码细节后,代码量上去后,总觉得有点格格不入。

    一是后期没人愿意接手维护,二是和框架本身定位背道而驰。

    当然我是愿意用工匠精神慢慢打磨,但是不是每一个项目都可以这样处理。
    hamkido2000
        7
    hamkido2000  
       2023-11-20 09:51:41 +08:00
    真正的高手可以在屎山里畅游(
    eWS2mq278TTzoj0O
        8
    eWS2mq278TTzoj0O  
       2023-11-20 09:52:08 +08:00   3
    工作写屎山是没问题的, 代码并不是写的越优雅越好(除个人项目和外国公司),在国内你不写屎山,每天优化代码,老板看你工作不饱和,分分钟把你开了,为了生活必须写的乱七八糟才能维持自己的工作岗位
    rb6221
        9
    rb6221  
       2023-11-20 10:13:40 +08:00
    我遇到的三种级别
    最低级是因为技术不行,没有能力长久的独立维护一个项目(比如三五年甚至更长),所以他们的代码都是多人合作写出来的,这就不可避免的导致理念不合、设计考虑不周全、各自理解对不上,出来的代码就没那么漂亮
    中级的人可以长久的独立维护项目,但是他们的代码往往只有自己看得懂,每次有一些改动的话都是大段大段的删掉重写,外面的人看起来不知这里为何删掉,那里为何加了一点,因为这些改动是整体的,思路只有作者本人看的懂,但是厉害的是偏偏就能跑起来,感觉不可思议,不过普通人是达不到的
    最厉害的人,不仅可以长久独立维护,而且架构也足够好,改动的时候只需要改很少的地方,而且外人看起来也能看的懂、能试着改。
    iSNN
        10
    iSNN  
       2023-11-20 10:24:21 +08:00
    @HongXinss 而且写的屎山别人无法维护或者维护成本高,改的慢。你来改的快,增加了自己的不可替代性,老板求着你来改
    dif
        11
    dif  
       2023-11-20 10:30:11 +08:00
    罗永浩举图片:又不是不能用。
    jokechen
        12
    jokechen  
       2023-11-20 10:35:58 +08:00 via iPhone
    @HojiOShi 所谓注释,也是一把双刃剑。改了代码不改注释的大有人在。
    blankqwq
        13
    blankqwq  
       2023-11-20 10:36:25 +08:00
    很大取决于团队内的整体水平,如果个人写的太好其他的人又差不多,实际上反而可能增加代码维护的成本。
    如果写的太差那么也是显而易见,需要学习其他人的代码。

    多人维护感觉是无法很好体现个人水平的,相反个人维护也不知道什么是好代码,从其他项目中学习,感觉思想上的提升才能提升整体的代码架构水平
    MRG0
        14
    MRG0  
       2023-11-20 11:04:09 +08:00
    你怎么知道我正在经历相同的事
    eWS2mq278TTzoj0O
        15
    eWS2mq278TTzoj0O  
       2023-11-20 11:41:40 +08:00
    @iSNN 是的,一定要展示自己的不可替代性
    roundgis
        16
    roundgis  
       2023-11-20 11:49:15 +08:00 via Android
    只要系有一定年 屎山都是不可避免的
    kingterrors
        17
    kingterrors  
       2023-11-20 14:43:26 +08:00   1
    @janus77
    话说看完有突然冒出两个想法,
    最厉害的人,写的非常不错,大部分程序员都能或者愿意仔细阅读每处的设计,并遵循规范进行扩展,达到可持续维护的项目。
    但是
    场景 1. 部分人不知道之前的人是大佬,一看这个 sum 函数,这人搞啥,不就是个加法,传两个参数相加不就完了,怎么下面还有这么多 typeof 检查,各种异常提示,删了,这明显计算总和的表格都是数字(殊不知,后端的屎山可能有时候返回空字符串,有时候返回 null ),结果起初有值的时候,删除后的精简代码,运行正常,若干日后,坏了,删减代码的人早就跑路了,与此同时许多这样的人参与了,于是厉害的人变成屎山,后面又来了个厉害的人,说,这个之前的厉害的人真垃圾,写的什么狗屎代码(虽然可以追溯 git ,但是有时候,一套长期维护的代码,比如管理系统,可能被另一个人复制开一个新项目,这样 git 记录就无法追溯了。)
    场景 2. 本来就是一坨屎,很厉害的人,废了九牛二虎之力,经过了忙里抽闲的自我牺牲精神,将部分代码优化,整理。但是领导看到,这个非常厉害的人也不行嘛,整天不知道搞啥,跟他一块写屎山的人,效率比他高多了,大概评估起来一样工作量的任务,另一个人,3 填写完了,这个厉害的大佬工资比他高,咋还写了一周,看来不行啊。久而久之,厉害的人发现,自己写的再好,可维护性再强,结果只要他写的功能,其他人(参考场景 1 )继续开发一段时间,还是成了屎山。既然都是屎山,那就秉持又不是不能用好了。
    结果,非常厉害的人写的东西最后还是变成屎山,其次,非常厉害的人也变成屎山创造者了。
    除非团队有非常好的管理 leader ,每个成员觉悟都能相对一致的高度。但是在我看来,后者是非常难得的,大部分成了前者的结局。。。
    rb6221
        18
    rb6221  
       2023-11-20 15:41:17 +08:00
    @kingterrors #17 是这样的,所以后面两种人,一般是项目的主力开发,某些地方有不可替代的作用,也可以参考开源项目的缔造者等,总之不会是商业项目的基层螺丝钉
    duck2u
        19
    duck2u  
       2023-11-20 15:53:29 +08:00
    用户的赏识?
    Acoolda
        20
    Acoolda  
       2023-11-21 10:03:34 +08:00
    只需要团队,坚守一个明确的公共编码规则+测试代码,就不会有很多屎山的问题。现实情况是很多人偷懒,临时方案,催命上线以及不屑测试。需求多变其实也不是屎山的主要因素。
    vileer
        21
    vileer  
       2023-11-21 13:29:11 +08:00 via iPhone
    @SomeBodsy 代码和人有一个能跑就行
    R4rvZ6agNVWr56V0
        22
    R4rvZ6agNVWr56V0  
       2023-11-21 13:50:11 +08:00
    每写下一行代码都是在熵增。所以,代码多代码必然结果就是屎山
    tool2d
        23
    tool2d  
    OP
       2023-11-21 14:21:24 +08:00
    @GeekGao 这倒也不是绝对的,屎山主要是乱,如果从头认真仔细设计,软件还是能弄的比较健壮便于维护的。

    怕就怕中途接手本来地基就打歪的软件项目,楼造的越高,越容易翻车。
    R4rvZ6agNVWr56V0
        24
    R4rvZ6agNVWr56V0  
       2023-11-21 15:29:57 +08:00
    @tool2d 尝试接触一下大型团队的大型项目,你就能理解我在讲什么
    tool2d
        25
    tool2d  
    OP
       2023-11-21 15:49:17 +08:00
    @GeekGao github 上面超大型项目也很多,并没觉得代码很糟糕。

    只要需求多,代码量就不可能少的。我认为的屎山,是那些架构设计出问题,而导致不好维护的代码。
    R4rvZ6agNVWr56V0
        26
    R4rvZ6agNVWr56V0  
       2023-11-21 16:54:26 +08:00
    @tool2d github 上开源项目 与公司内部的代码没可比性的。一些北欧和北美的码农比较闲,经常重构。
    而国内的企业则不然。要考虑到群体与群体的差异。 而且,如果你认为还是说服不了你,那你可以去看看现在的 Linux 的内核代码,也有很多地方很晦涩难以解读。
    tool2d
        27
    tool2d  
    OP
       2023-11-21 17:06:28 +08:00
    @GeekGao 代码是人写的,质量有高有低很正常。

    我说的区别,是好的框架可以把那些糟糕难懂的代码隔离出去,而坏的框架会让你在面条一样的代码迷宫里找不到方向。

    复杂项目,代码复杂化是必然的结果,就看设计者怎么去抽象和分层了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3080 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:28 PVG 08:28 LAX 17:28 JFK 20:28
    Do have faith in what you're doing.
    ubao 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