V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a1oyss
V2EX  ›  问与答

请教一个后端开发的规范问题

  •  
  •   a1oyss · 2023-05-07 17:52:06 +08:00 · 1212 次点击
    这是一个创建于 558 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚毕业工作不到一年,日常开发中遇到一些小问题,希望大家给小白解个惑

    场景:给学校用的门户网站,有一些应用、资讯之类的,大致功能类似: 门户


    问题 1:以上场景,service 层、controller 层在进行编写的时候,一般是以表模型进行粒度划分还是业务逻辑进行划分。 1.表模型:app 表->AppService->AppController ,app_category 表->AppCategoryService->AppCategoryController 。 2.业务功能:AppService->AppController ,里面包含所有应用相关的接口。 3.根据页面进行划分,HomeService->HomeController ,里面有一整个页面的所有接口。 第 1 种的话,遇到两个表关联的业务,该放在哪个 class 中,另外两种方案感觉对代码复用不是很友好。


    问题 2:问题 1 的后续,如果选择第 1 种,有一个 app_config 表,app_id 外键关联 app 表,用来控制应用是否显示和应用的类型,前台需要根据 app 表和 app_config 表来获取不同类型的应用,这种情况该放在 AppController 更合适还是 AppConfigController 更合适


    问题 3:在有前后台的情况下,后台和前台有些功能基本一致,这种情况前后台要写不同的接口吗。

    7 条回复    2023-05-08 11:17:26 +08:00
    StoneHuLu
        1
    StoneHuLu  
       2023-05-07 18:21:37 +08:00   ❤️ 3
    新程序员容易犯的毛病就是代码洁癖,工作量大 or 代码量积累上去就懂得偷懒了,顶多按功能模块划分,多多少少跟领域驱动沾点边就得了,代码规范层次划分为的是代码的可读性可维护性,如果是很小的项目体量,赶紧实现功能是最重要的,如果团队规模大,那实际上每个公司的代码风格都不一样,建议融入集体,如果是为了开源另说
    非要分的话我只能说,3202 年了,写代码没有说是数据驱动开发了,先划分业务领域,按业务领域业务模块划分是最实际的,别整的满哪都是 controller 和 service ,看着头大,回头自己来回切窗口都累得要命。
    neptuno
        2
    neptuno  
       2023-05-07 18:57:01 +08:00 via iPhone
    先按规范来,越复杂约好。等到自己技能熟悉了,再大道至简。
    a1oyss
        3
    a1oyss  
    OP
       2023-05-07 19:07:47 +08:00
    @StoneHuLu 懂了,感谢指点
    jameszhangqk1
        4
    jameszhangqk1  
       2023-05-07 19:07:58 +08:00
    无论怎样,写的每个 java 文件都要全选,然后格式化代码。 ---来自一位代码强迫症患者。
    ps:现在看到同事写的代码没有格式化就很难受,我要在那个文件里新加代码就只会格式化我加的那部分,格式化他们的代码他们也会很难受🤣🤣
    amwyyyy
        5
    amwyyyy  
       2023-05-08 10:15:46 +08:00
    没有规范能适应所有情况,通常边做边重构调整。像你这种功能少的,不用分得太细。比如遇到两个表关联的业务,就选其中一个 service(A)写主要逻辑调用其它 service ,其它 service 写基本的 crud 。后续需要重构分层的时候,只用改 A 了。
    Sum0l
        6
    Sum0l  
       2023-05-08 10:24:54 +08:00
    问题 2: 如果非要遵循所谓的规范,可以再加一个 DAO 层(狗头
    问题 3: 小项目无所吊谓,中大型项目(考虑流量负载、权限等)可能需要分开
    CocoCoding
        7
    CocoCoding  
       2023-05-08 11:17:26 +08:00
    想这么多,我写代码直接梭哈,全部写在 controller 中,有一些多个 controller 要使用的方法就写 service 中,差不多能用就行哈哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:39 · PVG 14:39 · LAX 22:39 · JFK 01:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.