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

结合自己写代码的一些经验,提炼几点思考。

  •  
  •   Amose2024 · 8 天前 · 2591 次点击
    1. 有些时候并不需要追求高可复用,特别是有很多自定义行为的时候,需要传入多个参数来到自定义目的。这个时候,追求复用容易造成后续维护不便。

    2. 避免追求“一步到位”。当自己的项目很可能没有多少用户的时候,切忌上来就搞分布式高并发集群部署。多数项目生命可能也就几个月,没必要一开始就推高成本。在使用框架的时候,也要考虑用户基数,并不是队列就一定要用百万吞吐的 Kafka 。

    3. 避免盲目追求项目性能。C++比 Java 快,Java 比 Python 快,这没有问题,但并不是因为要追求快,项目就必须用 C++。绝大多数情况下,项目的访问速度到不了要拼语言速度的程度,其它的诸如硬件配置,网络带宽才是影响性能的大头。

    4. Web 开发并不只有 Java Spring 一家。项目快速出原型并推向市场试错,如果心里只有 Java 就太重太慢了。不妨考虑一下 Ruby on Rails, NextJs 等能够快速出产品的方案。某种程度上 PHP 就是最好的语言,Wordpress 就是能更快建站。能快速满足需求,比耗时长久的大而全要好得多。

    5. 避免追求广度,缺乏深度。并不需要了解大多数的语言和大多数的框架,很多东西其实是相通的,能够深度掌握某一个的意义更大。

    6. 项目部署能用云服务商的方案就用它的方案,不要自己折腾,犯不着一到部署就要自己买个云服务器,整个 EC2 ,然后发现性能监控,日志服务,安全策略等都要自己搞,费时费力还做不好。

    7. 理解需求后再动手写代码,可以显著提升后续维护的舒适度。

    8. 保持乐观开放的心态,学会合作很重要。一个人造不出 Google ,团队有时虽然沟通成本高,但也确实有集体智慧。

    9. 是否会看文档是判别程序员水平的最重要依据之一,但不是接手一个新东西就要花费 10 天半个月去看完它所有文档,考虑一下网上 30 分钟入门视频先上手又何妨。

    10.碎片时间很重要。现在已经很难有大块的时间让你去研究某个技术了,利用好碎片时间,专注某一个题目,日积月累效果惊人。相反,东一下西一下,最后什么也捞不到。

    11. 很多时候开发机不需要那么强的性能。一个长续航的轻薄本解决问题的时候,不需要花冤枉钱追求 128G 内存,4090 显卡。

    声明:个人原创,转载请注明出处。
    23 条回复    2024-11-27 20:41:53 +08:00
    speedmancs
        1
    speedmancs  
       8 天前
    - 过早优化是罪恶之源

    - 单元测试很重要,还有 code review
    wmui
        2
    wmui  
       8 天前 via iPhone   ❤️ 1
    我以前特别喜欢优化代码,看到乱的就想改,后来我这毛病改了,因为导致代码乱的是变态的需求
    murmur
        3
    murmur  
       8 天前
    现在除非是我一眼就能看到复用的代码我才会抽出来,AI 加持下还是复制粘贴爽
    murmur
        4
    murmur  
       8 天前
    Spring 这个是因为国内大量 to b to g 的项目需要用,不是 java = web ,是因为没有企业开发,互联网那点市场早萎缩了,根本不需要什么 web 程序员,都去做小程序 app 了,以前是 h5 pc 几套页面,现在给你个下载页面都是抬举你
    guanhui07
        5
    guanhui07  
       8 天前 via iPhone
    @wmui 写完面条代码的当事人不优化重构 可读性才是原罪,比如 if 嵌套,方法提炼,用卫语句,变量名提炼都写代码的基础操作 很多人
    harryWebb
        6
    harryWebb  
       8 天前
    现在是能简化需求尽量把需求简化掉

    需求结构越简单,代码越不容易出错,后续修复起来也容易
    GradyJ
        7
    GradyJ  
       8 天前
    学习了
    AlexHsu
        8
    AlexHsu  
       8 天前   ❤️ 2
    现在这个年头一定要分清自己项目和公司项目的区别 不要过分去重构和封装公司项目 公司项目文档这个东西也是得过且过就行 不管是什么级别的程序员一定不要从公司的角度去考虑技术 一定要从个人角度考虑 听懂掌声
    反倒是自己的开源项目要下点功夫 那毕竟是体现个人能力的最直接体现方式 面试这个东西已经苍白无力了
    systemGuest
        9
    systemGuest  
       8 天前
    “上来就搞分布式高并发集群部署” 这是很多小公司的通病,他们一般是招了大厂背景的人,或者听了“大厂”的朋友话,不结合实际情况,用户量都没有就一股脑去模仿架构,如果他们是这种情况你可千万别去讲道理,他们会认为你不专业,人家大厂就是这么干的你还 BBB ,会更加坚信这是对的。
    linxl
        10
    linxl  
       8 天前
    单测+一个函数就干一件事。curd boy 表示能碰到这样的就很满意了。
    supermama
        11
    supermama  
       8 天前
    不要过早优化!当然可以比你现在业务需要的基础上领先个 30%,也已经足够了。
    tool2dx
        12
    tool2dx  
       8 天前
    现在偷懒取巧欠下的技术债,在未来的某一天,早晚要让你还出来的。
    hellojukay
        13
    hellojukay  
       8 天前
    说的很好
    horizon
        14
    horizon  
       8 天前
    第一点很重要,多少人写的垃圾代码都是因为追求复用
    其实毛用没有
    flmn
        15
    flmn  
       8 天前
    变态的需求是避免不了的,所以我们在设计代码架构的时候,要把干净东西和脏东西分开存放,不要混在一起,你中有我,我中有你。

    那块是个屎堆,对,我知道,但是我把屎都堆在一起了……
    fov6363
        16
    fov6363  
       8 天前
    过早优化、过度设计是万恶之源。

    忘了从哪本书看到的三枪理论,先简单粗暴实现,如果有问题就改,如果同一个地方有问题超过 3 次,就可以考虑重构了,否则怎么快怎么来
    ixx
        17
    ixx  
       8 天前
    第 4 点 应该说要结合个人/团队整体看,找到自己最熟悉的技术栈,如果对 java 最熟悉,重一点也比学习一门新技术靠谱。
    第 7 点 其实就是根据需求写技术设计文档,然后再开发,文档写完需求基本就透了。
    darkengine
        18
    darkengine  
       8 天前
    @tool2dx “取舍”是个很艺术的东西,舍多了后期还债还得要哭,取多了项目周期受影响。
    vfs
        19
    vfs  
       8 天前
    尽可能用你能想到的最最最简单的技术解决方案
    xuxian4321
        20
    xuxian4321  
       8 天前
    基本没错
    aleimu
        21
    aleimu  
       8 天前
    你少提了一点: AI 是个好东西,只要你把握得住
    justdoit123
        22
    justdoit123  
       7 天前
    先前跟同事写一个要营销页面。我跟他说,你就 v1 、v2 、v3 这样一直命名下去就好,前后端代码都这样命名。不要想着复用。

    这种营销页面,果然写了整整 5 个版本,到了 v5 。每个版本的逻辑、UI 结构都出入较大,难以复用。

    这要是一开始就在那边思考怎么通用、怎么易扩展,可想而知会有多痛苦。

    工作中的一些需求,一看就能知道是实验性的、试探性的,这种东西别想着去抽象复用。

    另一个例子,是我们的 UI 团队。一个人一个风格,上来一个 UI leader 就要订一套 UI 规范。我以前还乖乖听,写过两个版本的 UI 组件。后来就不鸟了。当然,我不是说 UI 组件不用抽离,规范稳定的 UI 设计语言,很值得沉淀组件。我们这种信誓旦旦的说 “以后都这样”,但是实际活不过一周的 “UI 规范” 当屁话听就行。
    Amose2024
        23
    Amose2024  
    OP
       7 天前
    谢谢大家回复,从回复中也学到了很多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3584 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.