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

2023-05-07 17:52:06 +08:00
 a1oyss

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

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


问题 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:在有前后台的情况下,后台和前台有些功能基本一致,这种情况前后台要写不同的接口吗。

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938064

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX