V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hambman
V2EX  ›  程序员

业务代码和非业务代码的区别?

  •  1
     
  •   hambman · 2020-10-16 08:40:22 +08:00 · 4656 次点击
    这是一个创建于 1533 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大部分代码应该都是业务代码,只有少数基础设施才是非业务代码,比如数据库啊之类的 ?

    大家的经验,写这两类代码的区别是什么, 需要怎样不同的风格?
    19 条回复    2020-10-17 05:43:22 +08:00
    p1094358629
        1
    p1094358629  
       2020-10-16 08:46:58 +08:00   ❤️ 5
    业务代码只能自己写,非业务代码 cv 大法
    eric1202
        2
    eric1202  
       2020-10-16 08:59:41 +08:00
    @p1094358629 言简意赅
    crclz
        3
    crclz  
       2020-10-16 09:07:13 +08:00   ❤️ 2
    非业务代码 = xx 环境的安装与搭建
    skrskrskrskr
        4
    skrskrskrskr  
       2020-10-16 09:11:20 +08:00
    一个赚钱,一个不赚钱
    zunceng
        5
    zunceng  
       2020-10-16 09:38:38 +08:00   ❤️ 1
    正好相反

    业务代码初写很多 随着迭代 会被浓缩成一个配置或者一种语言 精简扼要的描述业务

    剩下的都是非业务代码
    vindurriel
        6
    vindurriel  
       2020-10-16 09:59:00 +08:00 via iPhone
    我的经验是 code repo 不一样 测试 评审标准不一样 团队甚至都不一样
    coderxy
        7
    coderxy  
       2020-10-16 10:16:08 +08:00
    非业务代码一般质量会好一点,没那么严格的工期逼着你。
    hitmanx
        8
    hitmanx  
       2020-10-16 10:51:12 +08:00
    以前听 George Hotz 的说法是,看这个事情距离 computer science 那些核心知识点的远近,核心知识点就是 cs 那些经典的专业课咯,比如操作系统、编译原理、数据结构与算法、计算机网络等等。
    iyangyuan
        9
    iyangyuan  
       2020-10-16 10:59:11 +08:00
    业务代码随着需求的不断变化,再加上业务的复杂性(比如大的表单验证、数据导入),可能会比较冗余(不重构的前提下)。
    而非业务代码,架构设计完成之后,很容易写出漂亮的代码。
    securityCoding
        10
    securityCoding  
       2020-10-16 11:21:43 +08:00
    好不好看
    CODEWEA
        11
    CODEWEA  
       2020-10-16 11:37:17 +08:00   ❤️ 1
    其实没有太大的区别,只是需求不一样

    业务代码服务的是可能不断变化的需求,是阶段性的
    非业务代码服务的是技术架构,需要考虑长远

    业务代码讲究务实,千万不要花里胡哨,遵循最小资源实现即可 ,太多的设计反而维护成本太高,导致产出比失衡
    非业务代码讲究整体性,要考虑以及未来技术架构的发展,代码结构是需要设计的。
    imn1
        12
    imn1  
       2020-10-16 13:06:26 +08:00
    很久很久以前,我就是专写非业务代码的,写了很多字符串相关的函数
    例如编码转换、拼音排序、日语汉字与汉语汉字转换……等等
    给别人用时,他们就不需要相关知识(现在不少人还搞不定正则和 Unicode ),也不用考虑相关逻辑,一进一出就是了

    以前一个同事也是专门写非业务代码,他熟习的是文件处理
    别人用就"write(文件, 内容)"就够了,连内容的类型(str, number, bytes...)都能在函数内部识别并处理,使用的人完全不用考虑逻辑,以及异常处理
    ericgui
        13
    ericgui  
       2020-10-16 13:12:12 +08:00
    @coderxy 毕竟非业务代码也不会经历大量的变动,不会今天加个需求,明天改个需求,后天删个需求
    所以可以慢慢重构,讲求质量
    zzzzzzggggggg
        14
    zzzzzzggggggg  
       2020-10-16 13:39:30 +08:00
    并没有严格的区分,业务代码写多了,提炼出公共的、可复用的专门维护,就成为了非业务代码。
    如果实在要区分,非业务代码可以在多处使用,业务代码只使用一次;非业务代码服务于业务代码
    CoderGeek
        15
    CoderGeek  
       2020-10-16 15:53:22 +08:00
    业务代码是业务逻辑, 框架, 组件扩展 比如 DB 同步一些通用组件 都可以不叫业务 可以复用
    CoderGeek
        16
    CoderGeek  
       2020-10-16 15:54:05 +08:00
    非业务代码需要沉淀 大部分业务代码用完就废弃了
    DoctorCat
        17
    DoctorCat  
       2020-10-16 16:01:31 +08:00
    同意 1 楼的说法。

    补充个场景,新接手 repo 看到的情景,Service 、DAO 代码:这特么写得啥玩意,我还得贴需求上去贴哪里好呢?
    非业务代码:白嫖这 helper 、utils 真香
    YYYeung
        18
    YYYeung  
       2020-10-16 23:11:50 +08:00
    业务代码:业务面向客户
    非业务代码:业务面向同行
    hambman
        19
    hambman  
    OP
       2020-10-17 05:43:22 +08:00
    谢谢大家讨论 @CODEWEA 的理解很我最接近。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3405 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.